Für diejenigen, die nicht mit dem Erbsenmuster vertraut sind , ist es ein einfaches mathematisches Muster.
Es gibt mehrere Variationen dieses Musters, aber wir werden uns auf eine konzentrieren:
Aufsteigendes Erbsenmuster
Es sieht aus wie das:
1
11
21
1112
3112
211213
...
Es scheint wirklich schwer zu sein, die folgende Zeile zu bekommen, aber es ist wirklich einfach. Um zur nächsten Zeile zu gelangen, müssen Sie zählen, wie oft sich eine Ziffer in der vorherigen Zeile wiederholt hat (beginnen Sie mit der Zählung mit der niedrigsten bis zur größten):
one
one one
two ones
one one, one two
three ones, one two
two ones, one two, one three
...
Anforderungen / Regeln:
- Wir werden um beginnen
1
- Es wird ein Ausschnitt sein
- Es muss eine Möglichkeit geben, die Anzahl der generierten Zeilen anzugeben (z. B.
5
werden die ersten 5 Zeilen angegeben). - Der Code sollte so kurz wie möglich sein
- Es muss vom niedrigsten zum größten zählen (die aufsteigende Variante)
21322314
. Ist das richtig?Antworten:
APL, 32 Zeichen
Dies erzeugt Zeilen ab 0 (dh
0
erzeugt1
,1
erzeugt1
gefolgt von1 1
usw.), wie durch Benutzereingaben angegeben. Ich habe dafür Dyalog APL verwendet und⎕IO
sollte auf den Standardwert 1 gesetzt werden.Beispiel:
Sobald ich mehr Zeit habe, schreibe ich eine Erklärung auf. ⍨
quelle
Python (2.x),
8180 ZeichenAlle Tipps oder Kommentare sind willkommen!
quelle
Perl, 83
Ich bin mir ziemlich sicher, dass ein Perl-Guru dies übertreffen könnte, aber hier ist:
Erweitert:
Die Anzahl der Zeilen wird über STDIN übergeben.
quelle
J,
60463926 ZeichenEdit 3 : Hat eine viel schönere Art gefunden, dies auszudrücken.
Bearbeiten 2 : Endlich einen Weg gefunden, das Argument an das Ende der Sequenz zu verschieben und das unnötige Zuweisungsmaterial loszuwerden.
Vorher:
Bearbeiten 1 : Korrigiert die Ausgabe, die
y
Zeilen statt dery
dritten Zeile sein sollte. Verkürzt auch die Dinge ein bisschen. Schade um die0
s, kann die verdammten Sachen nicht loswerden.Verwendungszweck:
Zugegeben, die Verwendung ist jetzt hässlicher, aber Hübschheit ist hier nicht der Name des Spiels ...
quelle
Haskell, 116
Verwendungszweck:
quelle
Common Lisp, 140 Zeichen
Dies ist Lisp, daher gibt die Funktion eine Liste von Listen zurück. (mx) generiert X Unterlisten.
quelle
Mathematica, 70
quelle
Jelly ,
1311 Bytes (Feedback erwünscht)Probieren Sie es online aus!
quelle
U€
kann einfach seinU
, es vektorisiert bis auf die Zeilenebene. Dann können Sie ein weiteres Byte-Inlining speichernṢŒrUF
, indem SieƲ
(letzte 4 Links als Monade) verwenden:1ṢŒrUFƲСṖY
ṢŒrU€FƲ
hat ganz gut gearbeitet würde - es rollt [Ṣ
,Œr
,U€
,F
.] In eine Monade Vielleicht ist meine Verwendung „ dann“ war ein wenig irreführend ^^; Und in so etwas wieabc$de$fƲ
auf den 4 Links betrieben werden [a
,bc$
,de$
,f
] und rollen Sie sie zu einer Monade. In diesem Sinne können Sie sich Quicks als "Parse-Time-Stack-Operatoren" vorstellen: Ihr Ergebnis wird auf einen Stack zurückgeschoben und verhält sich so, als wäre es eine Verbindung für zukünftige Quicks. )