Eine binäre Wiederholungssequenz ist eine rekursiv definierte Sequenz der folgenden Form:
Dies ist eine Verallgemeinerung der Fibonacci ( x = 1, y = 2, a = [1, 1], alpha = 1, beta = 1
) - Sequenz und der Lucas ( x = 1, y = 2, a = [2, 1], alpha = 1, beta = 1
) -Sequenz.
Die Herausforderung
In Anbetracht n
, x
, y
, a
, alpha
, und beta
in jedem vernünftigen Format, Ausgabe der n
th Laufzeit der entsprechenden binären Rezidiv - Sequenz.
Regeln
- Sie können wählen, ob die Sequenz entweder 1-indiziert oder 0-indiziert sein soll, aber Ihre Auswahl muss über alle Eingaben hinweg konsistent sein, und Sie müssen Ihre Auswahl in Ihrer Antwort notieren.
- Sie können davon ausgehen, dass keine ungültigen Eingaben angegeben werden (z. B. eine Sequenz, die vor endet
n
, oder eine Sequenz, die auf undefinierte Begriffe verweist, wieF(-1)
oderF(k)
wok > n
). Infolgedessenx
undy
wird immer positiv sein. - Die Ein- und Ausgänge sind immer Ganzzahlen innerhalb der Grenzen des natürlichen Ganzzahltyps Ihrer Sprache. Wenn Ihre Sprache unbegrenzte Ganzzahlen hat, liegen die Ein- und Ausgänge innerhalb des Bereichs
[2**31, 2**31-1]
(dh des Bereichs für eine 32-Bit-Ganzzahl mit vorzeichenbehafteten Zweierkomplementen). a
enthält immer genauy
Werte (gemäß Definition).
Testfälle
Hinweis: Alle Testfälle sind 0-indiziert.
x = 1, y = 2, a = [1, 1], alpha = 1, beta = 1, n = 6 => 13
x = 1, y = 2, a = [2, 1], alpha = 1, beta = 1, n = 8 => 47
x = 3, y = 5, a = [2, 3, 5, 7, 11], alpha = 2, beta = 3, n = 8 => 53
x = 1, y = 3, a = [-5, 2, 3], alpha = 1, beta = 2, n = 10 => -67
x = 5, y = 7, a = [-5, 2, 3, -7, -8, 1, -9], alpha = -10, beta = -7, n = 10 => 39
a
umgekehrten Reihenfolge als angemessen?Antworten:
Gelee , 11 Bytes
Probieren Sie es online aus! 1 | 2 | 3 | 4 | 5
Wie es funktioniert
quelle
Python 2, 62 Bytes
Eine direkte rekursive Lösung. Alle Eingaben werden von STDIN übernommen, mit Ausnahme
n
eines Funktionsarguments, einer Aufteilung, die standardmäßig zulässig ist (wenn auch umstritten).Es scheint keine Möglichkeit zu geben, Bytes mit
and/or
anstelle vonif/else
weill[n]
Falsey als 0 gespeichert werden könnte.quelle
Python 2, 59 Bytes
Testen Sie es auf Ideone .
quelle
JavaScript (ES6),
5144 ByteBeachten Sie, dass die Funktion teilweise verwirrt ist, z. B.
f(1,2,[1,1],1,1)(8)
34 zurückgibt. Es würde 2 Byte kosten, um die Zwischenfunktionen unabhängig voneinander zu machen (derzeit funktioniert nur die zuletzt generierte Funktion korrekt).Bearbeiten: 7 Bytes gespeichert dank @Mego, der darauf hinwies, dass ich übersehen hatte, dass das übergebene Array immer die ersten
y
Elemente des Ergebnisses enthält.quelle
Haskell,
5448 Bytesquelle
J, 43 Bytes
Berechnet bei einer anfänglichen Folge von Termen A den nächsten Term n- mal unter Verwendung der Parameter x , y , α und β . Anschließend wählt es den n- ten Term in der erweiterten Sequenz aus und gibt ihn als Ergebnis aus.
Verwendungszweck
Da J nur 1 oder 2 Argumente unterstützt, gruppiere ich alle Parameter als Liste von Listen mit Boxen. Die anfänglichen Startwerte A sind zuerst, gefolgt von den Parametern von x und y als Liste, gefolgt von den Parametern von α und β als Liste und endend mit dem Wert n .
quelle