Die N-Bonacci-Sequenz, die ursprünglich von @DJMcMayhem in dieser Frage erfunden wurde , ist eine Sequenz, die erzeugt wird, indem mit den ganzen Zahlen 0 und 1 begonnen und dann die vorherigen N-Zahlen addiert werden, um die nächste Zahl zu erzeugen. Die spezielle N-Bonacci-Sequenz ist eine N-Bonacci-Sequenz, die mit einem anderen Zahlenpaar als 0 und 1 beginnt und als X und Y bezeichnet wird. Wenn N größer als die Anzahl der bereits in der Sequenz enthaltenen Terme ist, fügen Sie einfach alle verfügbaren hinzu Begriffe.
So hat beispielsweise die normale Fibonacci-Sequenz ein N von 2 (nimmt die beiden vorherigen Elemente) und ein X und Y von 0 und 1 oder 1 und 1, je nachdem, wen Sie fragen.
Deine Aufgabe:
Sie müssen ein Programm oder eine Funktion schreiben, die prüft, ob eine eingegebene Ganzzahl (A) Teil der speziellen N-Bonacci-Sequenz ist, die von den nächsten drei Ganzzahlen erzeugt wird (wobei die zweite Eingabe als N und die dritte und vierte als X und Y verwendet wird). . Stellen Sie sicher, dass Sie den Sonderfall N = 1 behandeln.
Eingang:
Vier nicht negative ganze Zahlen, A, N, X und Y.
Ausgabe:
Ein Wahrheits- / Falschwert, der angibt, ob A Teil der N-Bonacci-Sequenz ist, die durch die Eingänge N, X und Y erzeugt wird.
Testfälle:
Input: Output:
13,2,0,1->truthy
12,3,1,4->falsy
4,5,0,1-->truthy
8,1,8,9-->truthy
9,1,8,9-->truthy
12,5,0,1->falsy [0,1]>[0,1,1]>[0,1,1,2]>[0,1,1,2,4]>[0,1,1,2,4,8]>[0,1,1,2,4,8,16]>etc.
Wertung:
Dies ist Code-Golf , also gewinnt die niedrigste Punktzahl in Bytes.
N==1
ist so ein komischer Fall.N=1
, möchten Sie dies möglicherweise in der Frage angeben, da viele Antworten (einschließlich aller aktuellen Antworten, glaube ich) eine Fehlerbedingung aufweisen, die eine streng zunehmende Reihe voraussetzt. KannX
undY
kann auch negativ sein? Das wird wahrscheinlich auch alle vorhandenen Antworten ungültig machen.8,1,8,9
und9,1,8,9
sicherstellen, dass die Fallbehandlung sowohlN=1
den nicht wiederholtenX
Wert als auch denY
Wert erkennt . (Wenn Sie0,0
Fälle behandeln möchten, sollten Sie das auch hinzufügen.)Antworten:
Gelee , 12 Bytes
Ein volles Programm Mitnahmen
[X,Y]
,N
,A
.Probieren Sie es online aus!
Wie?
quelle
⁵e
vom Ende; viel einfacher zu sagen, dass es dann funktionieren wird (unter Hinweis darauf, dass die Reihenfolge der ersten beiden Begriffe keine Konsequenz hat).05AB1E , 18 Bytes
Probieren Sie es online aus!
Verwendet:
[X,Y], N, A
Ich habe das Gefühl, dass eine unbeabsichtigte Funktionalität das schwieriger gemacht hat, als es sein musste.
Es gibt kein Größeres als oder Gleiches, das habe ich noch nie bemerkt.
Und
#³
hat nicht funktioniert und benötigt a]
für +1 Bytes#]³
.quelle
Python 2 ,
5956 BytesProbieren Sie es online aus!
Nimmt Eingabe als
A,N,[X,Y]
quelle
Perl 6 , 47 Bytes
Probier es aus
Erweitert:
quelle
Python 2, 50 Bytes
Nimmt Eingabe als
A,N,[Y,X]
. Ausgaben über Exit-Code.Probieren Sie es online aus!
quelle
R ,
6960 BytesProbieren Sie es online aus!
Gibt eine anonyme Funktion, eine Aufnahme
a,n
und einen Vektor zurückl=c(y,x)
. Konstruiert die N-Bonacci-Sequenz rückwärts (dh ein kleinerer Index befindet sich weiter in der Sequenz), dawhile(l<a)
nur das erste Element von überprüft wirdl
.quelle
Common Lisp, 164 Bytes
Diese Funktion gibt
NIL
für false, nicht NIL für true zurück (gemäß der Definition des generalisierten Booleschen Werts von Common Lisp).quelle
N=1
detektieren eineA
von beispielsweise beide1
und / oder2
wennX=1 Y=2
? Meine Lisp-Lesefähigkeiten sind nicht besonders gut, aber es sieht so aus, als würden Sie nurA
einen der beiden Anfangswerte vergleichen .k, 29 Bytes
Probieren Sie es online aus!
1
ist wahr,0
ist falsch. Eingabe ist[A;N;X,Y]
.quelle
PHP> = 7,1, 103 Bytes
Testfälle
quelle
Mathematica, 94 Bytes
Eingabeformat
quelle