Definition
- a (1) = 1
- a (2) = 1
- a (n) = a (na (n-1)) + a (na (n-2)) für n> 2 wobei n eine ganze Zahl ist
Aufgabe
Bei positiver Ganzzahl n
generieren a(n)
.
Testfälle
n a(n)
1 1
2 1
3 2
4 3
5 3
6 4
7 5
8 5
9 6
10 6
11 6
12 8
13 8
14 8
15 10
16 9
17 10
18 11
19 11
20 12
Referenz
- Obligatorisch OEIS A005185
code-golf
sequence
arithmetic
Undichte Nonne
quelle
quelle
Antworten:
Retina ,
84837974 BytesDie Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Probieren Sie es online! (Die erste Zeile aktiviert eine durch Zeilenvorschub getrennte Testsuite.)
Ich muss später noch mehr Golf spielen.
quelle
Haskell,
3533 BytesDefiniert eine Funktion
a
.quelle
(b.b)1+(b.b)2
nicht kürzer als die Summe?Julia, 29 Bytes
Probieren Sie es online!
Wie es funktioniert
Wir definieren den unären Operator neu
!
für unsere Zwecke neu.Wenn n ist 1 oder 2 ,
n<3
kehrt wahr und das ist unser Rückgabewert.Wenn n größer als 2 ,
n<3
kehrt falsch und die || Zweig wird ausgeführt. Dies ist eine einfache Implementierung der Definition, wobei~-n
Ausbeuten n - 1 und~-~-n
Ausbeuten n - 2 .quelle
Sesos, 54 Bytes
Probieren Sie es online aus
Zerlegt
Oder in Brainfuck-Notation:
quelle
C
4342 Bytes1 Byte dank @Dennis gespeichert
Jede Antwort ist die gleiche, ich muss etwas anderes machen!
Probieren Sie es online!
Erklärung: es ist im Grunde
a(n-a(n-2))+a(n-a(n-1))
aber mit undefiniertem Verhalten swaggy (funktioniert auf meinem Telefon (gcc) und ideone).quelle
1
zwischen?
und nicht:
.$b+=$b[$_-$b[$_-2]]+$b[$_---$b[$_]]
Mathematica, 36 Bytes
Byteanzahl nimmt an ISO 8859-1 - Codierung und Mathematicas
$CharacterEncoding
SatzWindowsANSI
(den Standard auf Windows, andere Einstellungen könnten genauso gut funktionieren, aber einige , wieUTF-8
definitiv nicht).Definiert
±
als unärer Operator.Ich habe versucht, die Duplizierung zu beseitigen, habe aber die gleiche Anzahl von Bytes erhalten:
quelle
Jelly ,
15 bis14 BytesProbieren Sie es online! oder überprüfen Sie alle Testfälle (dauert einige Sekunden).
Wie es funktioniert
quelle
Jelly ,
141211 BytesDies ist ein iterativer Ansatz.
Probieren Sie es online! oder überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
Python,
45 bis40 BytesEinfache naive Interpretation der Herausforderung.
5 Bytes gespart dank @LeakyNun!
quelle
Haskell,
3937 Bytesgenau wie in der Herausforderung beschrieben, mit Wachen
quelle
n<3
umh 2
zu sein1
.R, 50 Bytes
Verwendung:
quelle
CJam,
1918 BytesProbieren Sie es online!
Verwendet den iterativen Ansatz.
quelle
C #,
5144 BytesIch frage mich, ob dies verkürzt werden kann, indem man es anonym macht,danke pinkfloydx33!quelle
int a(int n)=>n<3?1:a(n-a(n-a))+a(n-a(n-2));
-a
im ersten Satz von Parens sollte sein-1
JavaScript (ES6),
45 Bytes34 BytesEine rekursive Lösung in ES6. Alle Golftipps sehr geschätzt.
Vielen Dank an / u / ismillo für die weitere Verkürzung.
quelle
Golfscript, 29 Bytes
Probieren Sie es online!
quelle
05AB1E, 29 Bytes
Eine iterative Lösung.
Probieren Sie es online aus
quelle
APL, 20 Bytes
Erläuterung:
quelle
VBA Excel 87 Bytes
Nicht rekursiv, da ich möchte, dass dies für n = 100000 funktioniert, sagen Sie:
... und drücken Sie
return
(Byte # 87) am Ende der Zeile, um dieEnd Function
Anweisung für "frei" zu erhalten. Beachten Sie, dass B-Werte um -1 versetzt sind, um eine Initialisierung für n = 1 und 2 zu vermeiden.Rufen Sie die Tabelle wie gewohnt auf, um z. B.
=A(100000)
zu erhalten48157
Die rekursive Version, 61 Bytes ,
fängt an, für n> 30 unangemessen langsam zu werden, und man kann nicht sagen, dass es für n> 40 überhaupt funktioniert.
quelle
Ruby, 36 Bytes
Eine direkte Umsetzung. Anregungen zum Golfen sind willkommen.
quelle
a[n-1]
und so aufruft .Java 7,
686151 Bytes17 dank Leaky Nun gerettet.
quelle
int a(int n){return n<3?1:a(n-a(n-2))+a(n---a(n));}
aber leider verwendet es die gleiche Anzahl von Bytes wie die Antwort, die Sie bereits haben. Außerdem würde ich angeben, dass Ihre Antwort in Java 7 ist, da die Java 8-Antwort kürzer wäre:n->return n<3?1:a(n-a(n-1))+a(n-a(n-2))
( 39 Bytes ) .Oasis ,
975 Bytes (nicht konkurrierend)Nicht konkurrierend , da die Sprache die Herausforderung datiert. Vielen Dank an Kenny Lau für das Speichern von 4 Bytes. Code:
Erweiterte Form (
V
Kurzform11
):Code:
Probieren Sie es online! . Berechnet n = 1000 in 0,1 Sekunden.
quelle
PowerShell v2 +,
857969 ByteÜbernimmt die Eingabe
$n
, setzt$b
sie als Array von@(1, 1)
und tritt dann in eine Schleife von ein2 .. $n
. Bei jeder Iteration wird$b
die letzte Berechnung in der Sequenz mit einer einfachen+=
und der Definition der Sequenz angeheftet. Wir geben dann die entsprechende Nummer aus$b
(mit einem,-1
weil Arrays in PowerShell mit Nullen indiziert sind). Dies funktioniert , wenn$n
sich1
oder2
weil diese beiden Werte in die unteren Indizes der vorausgefüllt$b
von Anfang an , so dass selbst wenn die Schleife Angriffe auf Junk, ist es sowieso ignoriert.Rekursive Lösung
7876 BytesZum ersten Mal habe ich das Äquivalent eines Lambda als Antwort verwendet, da normalerweise eine iterative Lösung kürzer ist (wie Sie aus allen verschachtelten Parens ersehen können).
In diesem Fall werden die verschachtelten Parens jedoch in der iterativen Lösung mit den verschachtelten Arrayaufrufen fast dupliziert, sodass die rekursive Lösung kürzer ist.Nein, die iterative Lösung ist in der Tat kürzer (siehe oben).Rufen Sie es über den Execution-Operator auf, wie
&$a 20
. Nur ein rekursiver Direktaufruf.quelle
JavaScript (ES6), 66 Byte
Nicht rekursive Version für Geschwindigkeit; Die rekursive Version ist wahrscheinlich kürzer, aber ich überlasse es jemand anderem, sie zu schreiben. Ich mag es immer, wenn ich es benutze
reduce
. Anmerkung: 1 Byte gespeichert durch Rücksendungtrue
(die wirft ,1
wenn sie in einem ganzzahligen Zusammenhang verwendet) für vona(1)
unda(2)
.quelle
Pyth, 16 Bytes
Definiert eine Funktion
y
.Probieren Sie es online aus (hinzugefügt
yMS20
, um die ersten 20 Werte zu drucken)quelle
Viertens 76 Bytes
Ich habe es endlich geschafft!
Probieren Sie es online aus
Erläuterung:
Probieren Sie es online aus (von oben etwas ungegolft)
Leider ist die gegenseitige Rekursion etwas zu wortreich , um sie zum Golfen zu verwenden.
quelle
Ahorn,
4341 BytesVerwendung:
Dieses Problem ist sicherlich ein guter Kandidat für das Auswendiglernen. Durch die Verwendung des Optionscaches werden die Laufzeiten erheblich verkürzt:
Dies ist zu sehen mit:
quelle
J
2928 BytesVerwendet die rekursive Definition.
Verwendung
Zusätzliche Befehle werden zum Formatieren mehrerer Ein- / Ausgaben verwendet.
Erläuterung
quelle
Gleichstrom, 62 Bytes
Diese Lösung nutzt Arrays und Rekursion.
quelle
dc
Lassen Sie es mich abschließend wissen , wenn jemand eine IDE für erstellt !Erlang, 46 Bytes
quelle
Lua, 59 Bytes
quelle