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


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:



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 _=""

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 ...


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


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.


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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.