Çikolata Barı Yiyin


11

Bir çikolata barım var ve yemek için yardıma ihtiyacım var, bu yüzden sadece bunu yapmak için bir program yazacaksınız.

açıklama

İlk satır giriştir. Örnekler boş bir çizgi ile ayrılır.

7
   ____
 __|__|
|__|__|
|__|__|
|__|__|

6
_______
|__|__|
|__|__|
|__|__|

5
   ____
 __|__|
|__|__|
|__|__|

0


1
   ____
   |__|

spec

Umarım örnekler açıkça bu zorluğu belirtir, ancak olası karışıklıkları önlemek için bir özellik:

Tek bir isteğe bağlı sondaki / önde gelen boşluk alanınız olabilir

Girişi 0boş bir çıktıdır.

Giriş eşitse, üst sıralar aşağıdaki gibi görünür:

_______
|__|__|

Tuhafsa, üst sıra:

   ____
   |__|

Tek ve 1'den büyükse, üst satırlar:

  ____
__|__|

Aşağıdaki satırlar:

|__|__|

örnek sayısı |__|girişle aynı olana kadar


Girdi için çıktı nedir 1? Girdi 0desteğinin desteklenmesi gerekiyor mu?
Kapı Tokmağı

@Doorknob evet, mücadeleyi güncelledim
Downgoat

1. Bir işlev gönderebilir miyiz? 2. STDIN / fonksiyon argümanlarından girdi alabilir miyiz? 3. BİR veya TÜM yineleme çıktısı almamız gerekiyor mu?
yyny

@YoYoYonnY evet, varsayılan olarak şunları yapabilirsiniz (bu bağlantı ikinci sorunuza da cevap verir) . Yinelemelerle ne demek istediğinizden emin değilim. Örneklere bir göz atın, tek yapmanız gereken çıktı
Downgoat

Önde gelen boş satırlara izin veriliyor mu?
Neil

Yanıtlar:



4

Haskell, 101 bayt

Haskell hiç kod golf için harika olmamıştı ...

b="\n|__|__|"
h="   ____\n "
f 1=h++"  |__|"
f 2="_______"++b
f 3=h++"__|__|"++b
f n=f(n-2)++b
f _=""

Bu ona nasıl baktığınıza bağlıdır. Java> Python> Haskell> GolfLang. Ben python kullanıyorum;)
J Atkin

@JAtkin PHP cevabıma bak , o zaman en kötü
timmyRS

3

JavaScript ES6, 80 bayt

x=>(x%2?`   ____
 ${x<2?"  ":"__"}|__|`:x?"_______":"")+`
|__|__|`.repeat(x/2)

Japt cevabımla aynı tekniği kullanıyor ve şaşırtıcı bir şekilde daha uzun değil ...


1

C, 104102 bayt

f(x){x?x%2?printf("   ____\n%3s|__|\n",x<2?"":"__"):puts("_______"):0;for(x/=2;x>0;x--)puts("|__|__|");}

Belki ... Bu geliştirmek için bazı printf hile kullanabilirsiniz
Görünen o ki, can


1

𝔼𝕊𝕄𝕚𝕟, 53 karakter / 67 bayt

ï%2?`   ⟮__⟯Ⅰ
 ⦃ï<2?⍞  :⍞Ⅰ⦄|Ⅰ|`:ï?⍘_ď7:⬯⦄
|Ⅰ|Ⅰ|`ď ï/2

Try it here (Firefox only).

Bağımsız bulduğum halde bu Javascript ES6 cevabına oldukça benziyor. Golfü bitirince geleceğim açıklama.


1

PHP, 134 karakter

<?$i=$argv[1];if($i>0){echo($i%2===0?"_______\n|__":"   ____\n".($i>1?"___":"   "))."|__|\n";echo str_repeat("|__|__|\n",($i-1)/2);}?>

Notlar:

  • PHP kod golfü için üretilmedi
  • Ben kesinlikle bu pasajı FUN yaptı
  • Argv tanımsızsa bir hata atar
  • Kısaltmak için herhangi bir yardım takdir edilmektedir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.