Einführung
Das Kindheitslied Eeny, meeny, miny, moe wurde oft verwendet, um auszuwählen, wer "es" war, wenn man Tag spielte. Jeder würde in einem Kreis stehen und auf eine zufällig ausgewählte Person zeigen. Sie würden singen:
Eeny, meeny, miny, moe,
fang einen Tiger am Zeh.
Wenn er brüllt, lass ihn gehen,
Eeny, meeny, miny, moe.
Während sie jedes Wort sangen, zeigten sie auf die nächste Person im Kreis. Die Person, auf die hingewiesen wird, wenn das letzte "moe" gesungen wird, wäre "es". Die Kinder würden sofort aufstehen und sich zerstreuen.
Tor
Implementieren Sie das kürzeste Programm in Bytes, das eine Eingabe enthält, die Anzahl der untergeordneten Elemente und listet die Wörter auf, die beim Zeigen gesungen wurden.
Der Gewinner wird in einer Woche ausgewählt.
Eingang
Aus STDIN eine einzelne, positive ganze Zahl, die Anzahl der Kinder. Dies kann mehr als die Anzahl der Wörter im Lied sein.
Ausgabe
Schreibt an STDOUT eine Liste, in der jede Zeile ein Kind darstellt und das Wort enthält, auf das gesungen wurde, während auf das gezeigt wurde. Wenn zu viele Kinder vorhanden sind, können leere Zeilen weggelassen werden.
Bedarf
- Beginnen Sie immer mit dem ersten Kind.
- Zeigen Sie die Wörter ohne Interpunktion an.
- Das letzte "moe" sollte als "MOE!" einschließlich Interpunktion.
Beispiel
Eingang
3
Ausgabe
Eeny moe tiger toe hollers go miny
meeny Catch by If let Eeny MOE!
miny a the he him meeny
Eingang
7
Ausgabe
Eeny by him
meeny the go
miny toe Eeny
moe If meeny
Catch he miny
a hollers MOE!
tiger let
Eingang
1
Ausgabe
Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!
Eingang
21
Ausgabe
Eeny
meeny
miny
moe
Catch
a
tiger
by
the
toe
If
he
hollers
let
him
go
Eeny
meeny
miny
MOE!
quelle
Antworten:
TeaScript , 82 Bytes
Dekomprimieren, Chunk, Transponieren, Verbinden, Ausgeben.
Erläuterung
Probieren Sie es online aus
Nicht konkurrierende 81 Byte
Das
α
wurde nicht angekettet,.
also musste ich das behebenquelle
Pyth,
1038984 ZeichenDank @Dennis und @FryAmTheEggman wurden 18 Bytes mit String-Komprimierung gespeichert. Dank @isaacg wurde ein
weiteres Byte gespeichert
Warnung: Der Code enthält viele nicht druckbare Elemente. Verwenden Sie die folgenden Links, um es zu versuchen.
Probieren Sie es online aus | Testsuite
Könnte wahrscheinlich Golf gespielt werden. Vorschläge willkommen!
Wie es funktioniert
quelle
Eeny meeny miny
sollte ein paar Bytes sparen. Außerdem verfügt Pyth über zwei integrierte Funktionen für die (De-) Komprimierung (.Z
und."
).."
spart 14 Bytes!FNQ
==VQ
übrigens.Gelee, 84 Bytes
Probieren Sie es online aus!
quelle
JavaScript (ES6), 167 Byte
Erläuterung
quelle
l=Array(n).fill``
aus irgendeinem Grund nicht?Haskell,
160157 BytesStellen Sie
"Eeny meeny miny "
die anderen Teile ("moe Catch ..."
und"MOE!"
) voran , verketten Sie beide Zeichenfolgen, teilen Sie sie in Wörter auf, nehmen Sie Teile der erforderlichen Größe, transponieren Sie und verketten Sie sie erneut in eine einzelne Zeichenfolge.@Mauris hat 3 Bytes gefunden, indem er den gemeinsamen Teilstring "Eeny meeny miny" herausgerechnet und
f
punktfrei gemacht hat.quelle
s="Eeny meeny miny "
paar Bytes.f=unlines.map unwords.transpose.(`chunksOf`(["moe Catch a tiger by the toe If he hollers let him go","MOE!"]>>=words.("Eeny meeny miny "++)))
f
es völlig sinnlos ist, können wir sogar den Namen weglassen.Python 2,
154147 BytesEDIT: Danke Joe Willis!
Dies verwendet den Trick, dass [0 :: n] das n-te Element der Liste druckt.
Probieren Sie es hier aus
quelle
::
Bediener? Ist das wie in In-Loop?Ruby, 160 Bytes
Alle meine Versuche, den String zu "komprimieren", haben ihn nur länger gemacht.
Versuche immer noch...quelle
JavaScript (ES6), 189 Byte:
Erläuterung:
quelle
I=>(b=Array(I--).fill``,c=0,"Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!".split` `.forEach(v=>(b[c]+=v+' ',c+=c>I-1?-c:1)),b)
, Das ist 172 Byte lang. Es gibt jede Zeile als Element im Array zurück. Ich denke das ist akzeptabel..map()
anstelle von verwenden.forEach()
, können Sie 3 Bytes sparen und auf 169 Bytes reduzieren. Mit ein bisschen mehr Fummelei könnte dies tatsächlich tweetbar sein!STDIN
undSTDOUT
daher denke ich, dass sie die JavaScript-Antworten aufprompt
undalert
leider einschränkt .alert(b.join`<newline>`)
am Ende eine haben. Aber der Schaden kann trotzdem mit reduziert werden.map()
, anstatt.forEach()
.Python 3,
279278272173 Bytes(Danke an Mathias Ettinger, der mir buchstäblich 100+ BYTES gerettet hat ! )
Wenn jemand Tipps oder Vorschläge hat, würde ich sie wirklich schätzen. Vielen Dank!
quelle
int(i)
sollte an die Stelle von3
treten, aber es gibt andere Fehler, die danach behoben werden müssen.%
. Es ist ideal für zyklische Zähler..split()
werden in Leerzeichen (Leerzeichen, Zeilenumbrüche, Tabulatoren) aufgeteilt. 2) werdenrange(0, x)
am besten alsrange(x)
3) geschrieben. Sehen Sie sich die Slice-Notation an: Gibtw[0::3]
eine Liste von jeweils drei zurück Wörter inw
.Mathematica, 154 Bytes
Verwendet die Split-Chunk-Transponierungs-Join-Ausgabemethode der meisten anderen Antworten.
quelle
MATLAB, 167 Bytes / Zeichen:
Erläuterung:
Ich werde keine Preise für die Länge dieses Stücks gewinnen, aber es hat Spaß gemacht. :-)
quelle
Japt,
908786 BytesViele nicht druckbare Dateien. Probieren Sie es online aus!
Wie es funktioniert
Ich habe versucht, die Zeichenfolge mit verschiedenen Trennzeichen zu komprimieren. Das einzige, was effizienter als Leerzeichen ist, ist ein Kleinbuchstabe, aber die meisten davon werden bereits verwendet und können daher nicht zum Teilen der Zeichenfolge verwendet werden. So viel Komprimierung wird mit den verbleibenden erreicht:
Zur Zeit benutze ich
d
. Es kann möglich sein, ein Byte mit zus
ersetzen und einen anderen Buchstaben in zu ersetzenhollers
.quelle