Sie müssen auch ein Programm erstellen, das eine Ganzzahl als Eingabe verwendet und die erste ausgibt, unabhängig davon, welche Zahl in der Look & Say-Sequenz enthalten war .
Beispielsweise:
$ ./LAS
8
[1,11,21,1211,111221,312211,13112221,1113213211]
Die genaue Art und Weise, wie Sie die Liste ausgeben, ist unwichtig, solange Benutzer die verschiedenen Nummern der Sequenz deutlich sehen können. Hier ist der Haken. Sie können keine benutzerdefinierten Variablen verwenden.
Beispielsweise:
- Keine Variablen, einschließlich Gültigkeitsbereichsvariablen.
- Wenn Sie Funktionen haben, können diese keinen Namen haben. (Ausnahme: Wenn Ihre Sprache eine Hauptfunktion oder eine ähnliche Funktion benötigt, haben Sie möglicherweise diese Funktion.)
- Wenn Sie Funktionen haben, können diese keine benannten Argumente haben.
Außerdem dürfen Sie keine Bibliothek mit bestimmten Funktionen in Bezug auf die Look & Say-Sequenz verwenden, und Sie können nicht auf das Netzwerk zugreifen oder Ihrem Programm Dateien zur Verfügung stellen (obwohl es eigene generieren und verwenden kann). Dies ist Code Golf, so gewinnt der kürzeste Code in Zeichen!
code-golf
restricted-source
PyRulez
quelle
quelle
When you have functions, they can not have named arguments.
?Antworten:
GolfScript (31 Zeichen)
Angepasst von meiner Antwort auf eine frühere Look-and-Say-Frage . Diese hat eine weniger belastende Einschränkung für funktionale Sprachen, die das Speichern von 5 Zeichen ermöglicht, aber da die meisten Antworten auf die vorherige Frage nicht angepasst werden können (es ist eine verrückte belastende Einschränkung für nicht funktionale Sprachen), halte ich es nicht für sinnvoll als Betrüger zu schließen.
quelle
Haskell 206 Chars
Es funktioniert, indem die Gruppenfunktion verwendet wird, um sie in Gruppen gleicher Dinge zu gruppieren. Anschließend werden Applikative mit Funktionen verwendet, um eine Funktion zu erstellen, die gleichzeitig die Länge liest und an eines der Elemente anfügt. Es verwendet einen Fix und eine Map, um eine rekursive Definition zu erstellen (punktfrei). Und los geht's.
quelle
J (42 Zeichen)
Punktfreie (auch stillschweigende) Programmierung ist in J. natürlich.
Das ist eine Funktion, um sie zu verwenden, schreiben Sie den Code, ein Leerzeichen und die Eingabenummer. Beispielsweise,
Beachten Sie die hübschen Kästchen in der Ausgabe.
Nachtrag : Hier sind ein paar "Cheats", für die ich zuerst zu schüchtern war, aber jetzt, wo ich gesehen habe, dass andere sie zuerst benutzen ...
Hier ist eine 36-Zeichen-Version mit einer anderen "Aufrufkonvention": Ersetzen Sie 8 durch die Anzahl der gewünschten Begriffe.
Und wenn es in Ordnung ist, zusätzliche Nullen in der Ausgabe zu haben, ist hier eine 32-Zeichen-Version:
quelle
GolfScript, 36 Zeichen
Variablen werden in GolfScript ziemlich selten verwendet, und diese Aufgabe benötigt sie sicherlich nicht. Die Eingabe erfolgt auf stdin, die Ausgabe auf stdout. Zum Beispiel gibt die Eingabe
8
die Ausgabe:Ich kann später eine detaillierte Erklärung dieses Codes schreiben, aber zumindest können Sie leicht erkennen, dass er keine Variablen verwendet, da er den Variablenzuweisungsoperator
:
nirgendwo enthält.quelle
Haskell, 118 Zeichen (80 ohne Importe)
quelle
Bash und Coreutils,
11173 Zeichenuniq -c
macht das schwere Heben, um die nächste Nummer in der Sequenz zu produzieren.yes
,sed
Undeval
die erforderliche Anzahl von Wiederholungen der Verarbeitungspipeline erstellen. Der Rest ist nur Formatierung.Die Ausgabe erfolgt in einer Datei mit dem Namen
o
.:quelle
Mathematica, 65 Zeichen
Beispiel:
quelle
J, 37 Zeichen
Basierend auf meiner Antwort auf die Frage nach dem Erbsenmuster . Hier besteht möglicherweise ein gewisses Maß an Verkürzung. Die Verwendung ist wie bei der anderen J-Antwort:
Es hat auch das Problem der zusätzlichen Nullen, das meine Erbsenmusterantwort hatte.
quelle
Perl 6:
6353 ZeichenErstellen Sie eine verzögerte Liste der Look and Say-Sequenz (
1,*.subst(/(\d)$0*/,{.chars~.[0]},:g)...*
) und rufen Sie dann so viele Elemente ab, wie vom Benutzer angegeben wurden ([^get]
dies ist ein Array-Index und bedeutet[0..(get-1)]
), undsay
alle.Die Lazy-Liste verwendet zuerst 1, um dann jede aufeinanderfolgende Zahl zu generieren, nimmt sie die zuletzt gefundene und ersetzt alle Sequenzen derselben Ziffer, die mit übereinstimmen
/(\d)$0*/
, und ersetzt sie durch {wie viele} + {welche Ziffer} oder.chars~.[0]
.Die einzigen Variablen in diesem Code sind
$0
die erste Erfassung der Übereinstimmung und die implizite, aktuelle$_
Variable, die nackt.method
aufgerufen wird, und keine dieser Variablen ist benutzerdefiniert.quelle
GolfScript,
5743 ZeichenMein eigener Ansatz. Endete länger als die bestehende leider = (.
Beispielausgabe für stdin von
8
:Alternative Version ohne
9
Sentinel, jedoch mit 47 Zeichen länger. Ich vermute, es hat mehr Potenzial:quelle
Scala 178
quelle
i
ini=>
eine Variable ist.Dyalog APL, 35 Zeichen
(⊢,⊂∘∊∘((≢,⊃)¨⊃⊂⍨2≢/0,⊃)∘⌽)⍣(⎕-1)⊢1
⎕
wird Eingabe ausgewertet. In dem Link habe ich es durch 8 ersetzt, da tryapl.org keine Benutzereingaben zulässt.Keine benannten Variablen (
a←1
), keine benannten Funktionen (f←{}
), keine Argumente (⍺
,⍵
).Nur Zusammensetzung der Funktionen:
f¨
, reduzieren :f/
, pendeln:f⍨
f⍣n
, komponieren:f∘g
(f g h)B ←→ (f B)g(h B)
;A(f g h)B ←→ (A f B)g(A h B)
(f g)B ←→ f(g B)
;A(f g)B ←→ f(A g B)
(f g h k) ←→ (f (g h k))
Verwendete primitive Funktionen:
A⊢B ←→ B
⌽B
⊃B
A,B
A≢B
, zählen:≢B
⊂B
, Partition:A⊂B
∊B
Wenn Sie in tryapl.org das Trailing entfernen
⊢1
, das das Argument für dieses massiv komponierte Ding ist, können Sie ein Diagramm sehen, wie es analysiert wird:quelle
J 66 (mit E / A)
ohne IO, Punktzahl 43:
Lustige Frage, um sich zu stellen, wann die ersten 9 auftauchen?
quelle