Sekwencja N-bonacci, pierwotnie wymyślona przez @DJMcMayhem w tym pytaniu , jest sekwencją generowaną przez rozpoczęcie od liczb całkowitych 0 i 1, a następnie dodanie poprzednich N liczb w celu wygenerowania następnej liczby. Specjalna sekwencja N-bonacci jest sekwencją N-bonacci rozpoczynającą się od pary liczb innych niż 0 i 1, które zostaną nazwane X i Y. Jeśli N jest większe niż liczba terminów już w sekwencji, po prostu dodaj wszystkie dostępne warunki.
Na przykład normalna sekwencja Fibonacciego ma N równą 2 (bierze poprzednie dwa elementy) oraz X i Y równe 0 i 1 lub 1 i 1, w zależności od tego, kogo zapytasz.
Twoje zadanie:
Masz napisać program lub funkcję, która sprawdza, czy wprowadzona liczba całkowita (A) jest częścią specjalnej sekwencji N-bonacci generowanej przez kolejne trzy liczby całkowite (używając drugiego wejścia jako N, a trzeciego i czwartego jako X i Y) . Upewnij się, że zajmujesz się przypadkiem specjalnym N = 1.
Wejście:
Cztery nieujemne liczby całkowite, A, N, X i Y.
Wynik:
Wartość prawda / fałsz wskazująca, czy A jest częścią sekwencji N-bonacci generowanej przez dane wejściowe N, X i Y.
Przypadki testowe:
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.
Punktacja:
To jest golf golfowy , więc wygrywa najniższy wynik w bajtach.
N==1
to taki dziwny przypadek.N=1
, możesz przywołać je w pytaniu, ponieważ wiele odpowiedzi (w tym wszystkie aktualne odpowiedzi, jak sądzę) będzie miało warunek niepowodzenia, który zakłada ściśle rosnącą serię. Czy możeX
i możeY
być negatywne? Prawdopodobnie spowoduje to również unieważnienie wszystkich istniejących odpowiedzi.8,1,8,9
i9,1,8,9
upewnić się, żeN=1
obsługa spraw wykrywa nie powtarzającą sięX
wartość, jak równieżY
wartość. (Jeśli chcesz zająć się0,0
sprawami, powinieneś również to dodać.)Odpowiedzi:
Galaretka , 12 bajtów
Pełną podejmowanie programu
[X,Y]
,N
,A
.Wypróbuj online!
W jaki sposób?
źródło
⁵e
koniec; znacznie łatwiej powiedzieć, że wtedy zadziała (zauważając, że kolejność pierwszych dwóch terminów nie ma znaczenia).05AB1E , 18 bajtów
Wypróbuj online!
Wykorzystuje:
[X,Y], N, A
Wydaje mi się, że niektóre niezamierzone funkcje sprawiły, że było to trudniejsze niż trzeba.
Nie ma czegoś większego niż lub równego, nigdy wcześniej tego nie zauważyłem.
I
#³
nie działał i wymagał a]
dla +1 bajtów#]³
.źródło
Python 2 ,
5956 bajtówWypróbuj online!
Pobiera dane wejściowe jako
A,N,[X,Y]
źródło
Perl 6 , 47 bajtów
Sprawdź to
Rozszerzony:
źródło
Python 2, 50 bajtów
Pobiera dane wejściowe jako
A,N,[Y,X]
. Dane wyjściowe za pośrednictwem kodu wyjścia.Wypróbuj online!
źródło
R ,
6960 bajtówWypróbuj online!
Zwraca anonimową funkcję, przyjmowanie
a,n
i wektorl=c(y,x)
. Konstruuje sekwencję N-bonacci do tyłu (tj. Mniejszy indeks znajduje się dalej w sekwencji), ponieważwhile(l<a)
sprawdza tylko pierwszy elementl
.źródło
Common Lisp, 164 bajty
Ta funkcja zwraca wartość
NIL
false, a wartość inną niż NIL dla true (zgodnie z definicją uogólnionego logicznego parametru Common Lisp).źródło
N=1
wykryciaA
np. Obu1
i / lub2
kiedyX=1 Y=2
? Moje umiejętności czytania Lisp nie są świetne, ale wygląda na to, że możesz porównać tylkoA
z jedną z dwóch początkowych wartości.k, 29 bajtów
Wypróbuj online!
1
jest prawdą,0
jest falsey. Dane wejściowe to[A;N;X,Y]
.źródło
PHP> = 7,1, 103 bajtów
Przypadki testowe
źródło
Mathematica, 94 bajty
format wejściowy
źródło