Herausforderung
Schreiben Sie eine Funktion / ein Programm, das entweder das n
'te Element oder die ersten n
Elemente in der bekannten Zahlenfolge ausgibt :
1, 2, 4, 8, 16 ...
Oh, warte ... Ich habe die ersten Zahlen vergessen:
1, 1, 1, 1, 2, 4, 8, 16 ...
Heck, ich werde ein paar mehr für gutes Maß hinzufügen:
1, 1, 1, 1, 2, 4, 8, 16, 33, 69, 146, 312, 673, 1463, 3202, 7050, 15605, 34705 ...
Die Zahlen sind verallgemeinerte katalanische Zahlen, die durch die (mit Nullen versehene) Formel angegeben werden:
woher
Dies ist OEIS A004149 .
Sie können wählen, ob die Sequenz null- oder einsindiziert werden soll. Die Reihenfolge muss natürlich identisch sein, daher müssen Sie die Formel neu schreiben, wenn Sie sie einmal indiziert haben.
a(n-1-k)
zua(n-k)
korrigieren?Antworten:
Python , 51 Bytes
Probieren Sie es online!
Vereinfacht die Formel etwas:
quelle
Perl 6 , 44 Bytes
Probieren Sie es online!
Anonymer Codeblock, der eine langsame unendliche Folge von Werten zurückgibt. Dies implementiert die beschriebene Sequenz so ziemlich, mit der Abkürzung, dass alle Elemente nach dem zweiten Element mit der Umkehrung der Liste multipliziert werden, beginnend mit dem vierten Element und dem Hinzufügen eines Extra
1
am Ende.Erläuterung:
quelle
05AB1E ,
141311 BytesProbieren Sie es online!
Gibt das n-te Element mit dem Index 0 aus.
quelle
JavaScript (ES6), 42 Byte
Eine Portierung von xnors Lösung .
0-indiziert.
Probieren Sie es online!
JavaScript (ES6),
83 bis75 ByteEine schnellere, weniger rekursive, aber deutlich längere Lösung.
0-indiziert.
Probieren Sie es online!
quelle
Haskell,
494339 BytesProbieren Sie es online!
Für
n<3
dassum
ist 0, alsomax ... 1
wirft es auf1
.Edit: -6 Bytes dank @Jo King.
quelle
Wolfram Language (Mathematica) , 36 Byte
Probieren Sie es online!
1-indiziert.
Die 2-indizierte Sequenz ist 4 Byte kürzer:
Sum[#0@i#0[#-i],{i,#-4}]/. 0->1&
. Probieren Sie es online!quelle
CatalanNumber
!05AB1E ,
1713 BytesNicht kürzer als die bisherige 05AB1E-Antwort , aber ich wollte die rekursive Funktionalität der neuen 05AB1E-Version als Übung für mich ausprobieren.
Könnte vielleicht von ein paar Bytes golfen werden.EDIT: Und es kann in der Tat die rekursive Version von @Grimys 05AB1E Antwort sehen, die 13 Bytes ist .£
è
£
Erläuterung:
13- Byte- Version von @Grimy (stellen Sie sicher, dass Sie seine Antwort positiv bewerten , falls Sie dies noch nicht getan haben!):
1λèλ1šÂ¨¨¨øPO
λλ1šÂ¨¨¨øPO
Erläuterung:
quelle
n=100
in 0,65 Sekunden berechnet , aber wenn ich Lazy-Loading deaktiviere, läuft es stattdessen nach 60 Sekunden ab, auch fürn=25
.Python 3 , 59 Bytes
Wirklich ineffizient,
a(13)
endet nicht bei TIO.Probieren Sie es online!
quelle
Gelee , 17 Bytes
Probieren Sie es online!
quelle
Haskell , 76 Bytes
Probieren Sie es online!
quelle
APL (Dyalog Extended) , 34 Byte SBCS
-2 danke an dzaima.
Anonymes Präfix Lambda.
Probieren Sie es online!
quelle
Japt ,
191716 BytesGibt den ersten
n
Term mit einem Index aus.Versuch es
quelle
Haskell , 65 Bytes
Probieren Sie es online!
Sie können entweder
f
ein einzelnes Element einer Sequenz abrufen oder eine Werteliste an übergebeng
und alle Indizes für diese Liste abrufen.quelle
Forth (gforth) ,
9981 BytesProbieren Sie es online!
Die Ausgabe ist das n-te Glied und die Eingabe ist 1-indiziert
Bearbeiten: 17 Bytes durch Umschalten auf die Formel von xnor gespeichert. Weitere 1 Byte mit 1-Index gespeichert
Code-Erklärung
quelle
Holzkohle , 26 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Gibt die 0-indizierte n-te Zahl aus, obwohl sie intern mit 1-Indizierung berechnet wird. Erläuterung:
Beginnen Sie mit
a[0] = a[1] = a[2] = a[3] = a[4] = 1
. Ja, dies ist 1-indiziert, jedoch mit einem zusätzlichen nullten Wert. Das ist Codegolf für Sie.Berechnen Sie zusätzliche
n
Begriffe. Dies ist übertrieben, erleichtert aber das Auffinden des gewünschten Begriffs, wennn<5
.Berechnen Sie für jeden Term den nächsten Term als die Summe der bisherigen Terms, multipliziert mit der Umkehrung der bisherigen Terms, mit Ausnahme von drei Terms.
Dies ist ein No-Op, der verwendet wird, um Charcoal zum Parsen der 2-Argument-Form von
Slice
zu verleiten, da ich ansonsten weniger Golf spielen müsste, um drei Begriffe zu entfernen.Geben Sie das 4. letzte Semester aus.
quelle
Pyth , 30 Bytes
Probieren Sie es online!
<
@
quelle
Ruby ,
4241 BytesProbieren Sie es online!
1-indiziert (um 1 Byte zu sparen)
quelle
Oktave , 73 Bytes
Probieren Sie es online!
-2 Bytes dank Stewie Griffin. Der imperative Ansatz setzt sich erneut gegen den funktionalen rekursiven Ansatz durch. Das ist unten gezeigt.
Oktave , 75 Bytes
Probieren Sie es online!
Captcha wollte überprüfen, ob ich ein Mensch bin, als ich das gepostet habe. Um ehrlich zu sein, bin ich mir nicht so sicher .
quelle
n<4
.Perl 5
-MList::Util=sum
, 61 BytesProbieren Sie es online!
quelle
C / C ++ ,
706967 Bytes-1 Bytes dank Jonathan.
Probieren Sie es online!
quelle
a(n-1-k)
seina(n+~k)
?a(++k)*a(n-k)
wahrscheinlich zu arbeiten, und es fällt weitere 2 Bytes abfor
. Aber ich rieche undefiniertes Verhalten.