Schreiben Sie ein Programm oder eine benannte Funktion, die die Sequenz bis zur n
th Ganzzahl in der Iccanobif-Sequenz ausgibt oder zurückgibt, die in OEIS als A014258 dokumentiert ist . Beachten Sie, dass nur das nullte Element in der Sequenz ( 0
) gedruckt wird, wenn n
Null ist.
Die Sequenz wird wie die Standard-Fibonacci-Sequenz erzeugt, aber nachdem Sie die beiden vorherigen Zahlen addiert haben, kehren Sie das Ergebnis um und löschen alle führenden Nullen. Zumindest für mich ist es eine interessante Tatsache, dass diese Reihenfolge nicht unbedingt zunimmt (siehe Liste unten). Es scheint auch streng größer oder gleich der Fibonacci-Sequenz zu sein (und ist es wahrscheinlich auch).
Die Eingabe Ihres Programms muss eine Ganzzahl sein.
Die ersten 20 Nummern der Sequenz werden hier für Ihr Sehvergnügen bereitgestellt:
0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297, 8964541, 8389769
Standardlücken sind verboten.
Kürzeste Sendung gewinnt.
BEARBEITEN: Es wurde ein Hinweis hinzugefügt, um zu verdeutlichen, dass die Sequenz mit dem nullten Element beginnt und eingeschlossen werden sollte, wenn n
Null ist.
Beispiel IO Möglichkeiten:
0 -> 0
1 -> 0 1
6 -> 0 1 1 2 3 5 8
17 -> [0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297]
Nachstehend finden Sie einige Antworten auf meine Implementierungen in Python 2, die ich intensiv mit Markup ausgeblendet habe:
Iterativ:
#Nächste zu meinem ursprünglichen Programm. 73 Bytes. Es ist auch zu beachten, dass dieses Programm kann keinen Stapelüberlauf erreichen. Es läuft für n = 5000 in weniger als 10 Sekunden.i,a,b=input(),0,1 print a while i:print b;i,a,b=i-1,b,int(str(a+b)[::-1])
Rekursiv:
#Beachten Sie, dassn
hiermit nachgestellte Zeilenumbrüche gedruckt werden. 64 Bytes. Trifft einen Stapelüberlauffehler für große Werte von n.def f(n,i=0,j=1):print i,n and f(n-1,j,int(str(i+j)[::-1]))or'';
Antworten:
Pyth,
171514Probieren Sie es online aus
Sehr einfache Implementierung, beginnt mit
range(2)
und fügt eine Anzahl von Elementen hinzu, die der Eingabe entsprechen, undschneidet die Extrasvom letzten Element ab.Vielen Dank an @Jakube für den Hinweis auf das
>
Umkehr-Ding.Erläuterung
quelle
Python 2, 58 Bytes
Anwendungen
str
zu konvertieren , anstatt Backticks , weil groß genug Zahlen in Python 2 mit einem L am Ende geschrieben werden. Ich habe eine rekursive Funktion ausprobiert, aber es hat sich herausgestellt, dass sie länger dauert (61):quelle
Julia, 79 Bytes
Dadurch wird eine Funktion erstellt, die eine Ganzzahl als Eingabe akzeptiert und ein Ganzzahl-Array zurückgibt.
Ungolfed + Erklärung:
Beispiele:
quelle
T-SQL, 149
Sehr einfache Inline-Tabellenfunktion, die eine rekursive CTE-Abfrage verwendet. Da es INTs verwendet, wird dies bei 37 an erster Stelle stehen. Das Hinzufügen von CASTs für Bigints ermöglicht es, weiter auf 63 zu gehen
Es wird wie folgt verwendet
quelle
K,
2523 BytesEine einfache Modifikation eines der Beispiele bei No Stinking Loops .
Die Phrase
.|$
wandelt eine Zahl in eine Zeichenfolge um, kehrt sie um und wertet sie dann aus.Bearbeiten:
Schlampige Beachtung der Randbedingungen meinerseits. Richtiger jetzt:
Bearbeiten 2:
(x+1)#
kann durch ersetzt werden-1_
, wobei 2 Zeichen gespeichert werden. Das Leerzeichen ist notwendig, da sonst_x
ein Bezeichner wäre, wenn ich den "drop" -Operator auf eine aufgerufene Variable anwenden möchtex
.quelle
Haskell,
6449 BytesAnwendungsbeispiel:
q 15
->[0,1,1,2,3,5,8,31,93,421,415,638,3501,9314,51821,53116]
So funktioniert es:
!
Erstellt rekursiv eine unendliche Liste von iccanobif-Nummern, beginnend mit dem ersten Argument (das zweite Argument muss die nächste iccanobif-Nummer sein). Nimmtq
die erstenn
Zahlen aus der iccanobif-Liste1, 1
und stellt sie voran0
.quelle
CJam, 18 Bytes
Wie es funktioniert
Probieren Sie es hier online aus
quelle
Java -
126124Ich habe seit einiger Zeit kein Java mehr auf dieser Seite gesehen ...
f(5)
druckt0 1 1 2 3 5 8 31 93 421 415 638
quelle
...System.out.println(c);
Integer.valueOf(
mitnew Long(
(und die dann ändernint
in der for-Schleifelong
als auch). Wenn Sie lieber nur mit ganzen Zahlen arbeiten möchten,new Integer(
ist das immer noch kürzer alsInteger.valueOf(
.SWI-Prolog,
141131121 BytesLaufende
a(17,X).
Ausgaben:Die Ausgabe des Ergebnisses
a(10000,X).
auf meinem Computer dauert ungefähr 10 Sekunden .Bearbeiten: Die 121-Byte-Version oben ist eine Ein-Prädikat-Definition = ein Liner. Die alte 131-Byte-Version ist die folgende (muss als ausgeführt werden
p(17,X)
):quelle
> <> (Fisch)
592254 BytesNicht besonders gut gespielt (42/43 Leerzeichen, die nichts bewirken, und insgesamt 30 Umleitungs-Token), aber es war eine interessante Übung, um es überhaupt zum Laufen zu bringen.
Sie können es testen hier und die gewünschte Länge im Anfangsstapel angeben.
EDIT: Mehr als die Hälfte der Byteanzahl
quelle
PHP,
114, 109 BytesNichts Besonderes, nur ein durchschnittlicher Fibonacci-Algorithmus mit umgekehrter Magie.
Ungolfed:
quelle
Excel VBA, 279 Bytes
Das Ausführen des Makros fordert den Benutzer auf, einen Wert für n einzugeben.
Die Ergebnisse werden dann zeilenweise in Spalte A ausgedruckt:
quelle
JavaScript (ES2015),
8173 BytesAusführen dieser Funktion (benannt
f
) mit6
:quelle
Pip , 13 Bytes
Ich bin mir ziemlich sicher, dass alle in diesem Programm verwendeten Funktionen in Pip vorhanden waren, bevor diese Frage gestellt wurde.
Übernimmt die Eingabe als Befehlszeilenargument. Probieren Sie es online!
Erläuterung
Die Werte der beiden Variablen entwickeln sich folgendermaßen:
quelle
Pushy , 18 Bytes (nicht konkurrierend)
Probieren Sie es online!
Es ist nicht das eleganteste Programm, aber es funktioniert.
quelle
Gelee , 9 Bytes (nicht konkurrierend)
Probieren Sie es online!
quelle
R, 134 Bytes
Beispiel:
Würde gerne sehen, ob jemand eine bessere R-Alternative hat, als Ihre Nummer zu nehmen, eine Zeichenfolge daraus zu machen, sie umzukehren und sie wieder in eine Zahl umzuwandeln.
quelle
Groovy, 70 Bytes
quelle