Iss den Schokoriegel

11

Ich habe eine Tafel Schokolade und ich brauche Hilfe beim Essen, also schreibst du ein Programm, um das zu tun.

Erläuterung

Die erste Zeile ist die Eingabe. Beispiele sind durch eine Leerzeile getrennt.

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

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

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

0


1
   ____
   |__|

Spec

Hoffentlich spezifizieren die Beispiele diese Herausforderung klar, aber um mögliche Verwirrung zu vermeiden, hier eine Spezifikation:

Sie können ein einzelnes optionales nachfolgendes / führendes Leerzeichen verwenden

Eine Eingabe von 0ist eine leere Ausgabe.

Wenn die Eingabe gerade ist, sehen die oberen Zeilen folgendermaßen aus:

_______
|__|__|

Wenn es seltsam ist, ist die oberste Reihe:

   ____
   |__|

Wenn es ungerade und größer als 1 ist, sind die oberen Zeilen:

  ____
__|__|

Die folgenden Zeilen sind:

|__|__|

bis die Anzahl der Instanzen von |__|der Eingabe entspricht

Downgoat
quelle
Was ist die Ausgabe für die Eingabe 1? Muss die Eingabe von 0unterstützt werden?
Türknauf
@ Doorknob ja, ich habe die Herausforderung aktualisiert
Downgoat
1. Können wir eine Funktion einreichen? 2. Können wir Eingaben von STDIN / Funktionsargumenten nehmen? 3. Müssen wir EINE oder ALLE Iterationen ausgeben?
yyny
@YoYoYonnY ja, standardmäßig können Sie (dieser Link beantwortet auch Ihre zweite Frage) . Ich bin mir nicht sicher, was du mit Iterationen meinst. Schauen Sie sich die Beispiele an, das ist alles, was Sie ausgeben müssen
Downgoat
Sind führende Leerzeilen erlaubt?
Neil

Antworten:

1

Pyth, 55 Bytes

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

Probieren Sie es online aus. Testsuite.

Das ist wirklich schnell und schmutzig, geschrieben auf meinem Handy. Wird später mehr Golf spielen.

PurkkaKoodari
quelle
4

Haskell, 101 Bytes

Haskell war noch nie großartig für Code-Golf ...

b="\n|__|__|"
h="   ____\n "
f 1=h++"  |__|"
f 2="_______"++b
f 3=h++"__|__|"++b
f n=f(n-2)++b
f _=""
yyny
quelle
Es hängt davon ab, wie Sie es betrachten. Java> Python> Haskell> GolfLang. Ich benutze Python;)
J Atkin
@JAtkin Nun schau dir meine PHP-Antwort an , dann siehst du, was am schlimmsten ist
timmyRS
3

JavaScript ES6, 80 Bytes

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

Verwendet die gleiche Technik wie meine Japt-Antwort und ist überraschenderweise nicht mehr lange ...

ETH-Produktionen
quelle
1

C 104 102 Bytes

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

Vielleicht kann ich einige printf-Tricks verwenden, um dies zu verbessern ...
Anscheinend kann ich

yyny
quelle
1

𝔼𝕊𝕄𝕚𝕟 53 Zeichen / 67 Bytes

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

Try it here (Firefox only).

Dies ist der Antwort von Javascript ES6 ziemlich ähnlich, obwohl ich sie unabhängig gefunden habe. Erklärung, die kommen wird, wenn ich mit dem Golfen fertig bin.

Mama Fun Roll
quelle
1

PHP, 134 Zeichen

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

Anmerkungen:

  • PHP wurde nicht für Code-Golf entwickelt
  • Ich hatte wirklich Spaß daran, diesen Ausschnitt zu machen
  • Es wird ein Fehler ausgegeben, wenn argv undefiniert ist
  • Jede Hilfe zu kurz es wird geschätzt.
timmyRS
quelle
1

Japt, 60 57 Bytes

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

Nur eine grundlegende Antwort. Kann wahrscheinlich verbessert werden. Testen Sie es online!

ETH-Produktionen
quelle