Zjedz tabliczkę czekolady

11

Mam tabliczkę czekolady i potrzebuję pomocy w jedzeniu, więc napiszesz program, aby to zrobić.

Wyjaśnienie

Pierwszy wiersz to wejście. Przykłady są oddzielone pustą linią.

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

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

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

0


1
   ____
   |__|

Spec

Mamy nadzieję, że przykłady jasno określają to wyzwanie, ale aby uniknąć ewentualnych nieporozumień, oto specyfikacja:

Możesz mieć jeden opcjonalny biały / wiodący biały znak

Dane wejściowe 0to puste dane wyjściowe.

Jeśli dane wejściowe są parzyste, górne rzędy wyglądają następująco:

_______
|__|__|

Jeśli jest nieparzysty, górny wiersz to:

   ____
   |__|

Jeśli jest nieparzysty i większy niż 1, górne rzędy to:

  ____
__|__|

Następujące rzędy to:

|__|__|

dopóki liczba wystąpień nie |__|będzie taka sama jak na wejściu

Downgoat
źródło
Jaka jest wydajność dla danych wejściowych 1? Czy wejście 0musi być obsługiwane?
Klamka
@ Doorknob tak, zaktualizowałem wyzwanie
Downgoat
1. Czy możemy przesłać funkcję? 2. Czy możemy pobierać dane wejściowe z argumentów STDIN / function? 3. Czy musimy wyprowadzać JEDEN lub WSZYSTKIE iteracje?
yyny
@YoYoYonnY tak, domyślnie możesz (ten link odpowiada również na twoje drugie pytanie) . Nie jestem pewien, co masz na myśli przez iteracje. Spójrz na przykłady, to wszystko, co musisz
wydać
Czy dozwolone są wiodące puste linie?
Neil

Odpowiedzi:

1

Pyth, 55 bajtów

K"|__|"IQ>7<*3%Q2r"3 7_"9?tQjb+XW%Q2J+KtKZd*/tQ2]J+*3dK

Wypróbuj online. Zestaw testowy.

To jest naprawdę szybkie i brudne, napisane na moim telefonie. Później dostaniesz więcej golfa.

PurkkaKoodari
źródło
4

Haskell, 101 bajtów

Haskell nigdy nie był świetny do gry w golfa ...

b="\n|__|__|"
h="   ____\n "
f 1=h++"  |__|"
f 2="_______"++b
f 3=h++"__|__|"++b
f n=f(n-2)++b
f _=""
rrr
źródło
To zależy od tego, jak na to spojrzysz. Java> Python> Haskell> GolfLang. Używam python;)
J Atkin
@JAtkin Cóż, spójrz na moją odpowiedź PHP , a potem zobaczysz, co jest najgorsze
timmyRS
3

JavaScript ES6, 80 bajtów

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

Używa tej samej techniki co moja odpowiedź Japt i zaskakująco niewiele dłużej ...

ETHprodukcje
źródło
1

C, 104 102 bajtów

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

Może mogę użyć sztuczek printf, aby to poprawić ...
Najwyraźniej mogę

rrr
źródło
1

𝔼𝕊𝕄𝕚𝕟, 53 znaki / 67 bajtów

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

Try it here (Firefox only).

Jest to dość podobne do odpowiedzi Javascript ES6, mimo że znalazłem ją niezależnie. Wyjaśnienie, które nastąpi, kiedy skończę grać w golfa.

Mama Fun Roll
źródło
1

PHP, 134 znaki

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

Uwagi:

  • PHP nie zostało stworzone do gry w golfa
  • Na pewno ZABAWA zrobiłem ten fragment
  • Zgłasza błąd, jeśli argv jest niezdefiniowany
  • Każda pomoc w skrócie jest doceniana.
timmyRS
źródło
1

Siatkówka, 69 bajtów

r`(1?)1
$1__|__|¶
^__(?=\D{5}$)

^.
$0____¶ $0
^\D

^1
___
 ?1
|

Pobiera dane wejściowe unarne.

Wypróbuj online tutaj.

randomra
źródło
1

Japt, 60 57 bajtów

U%2?[S³'_²²RSU¥1?S²:'_²"|__|"]¬:U?'_p7 :P +"
|__|__|"pU/2

Po prostu podstawowa odpowiedź. Prawdopodobnie można to poprawić. Przetestuj online!

ETHprodukcje
źródło