Последовательность N-Боначи, изначально изобретенная @DJMcMayhem в этом вопросе , представляет собой последовательность, генерируемую, начиная с целых чисел 0 и 1, а затем добавляя предыдущие N чисел, чтобы сгенерировать следующее число. Специальная последовательность N-Боначи - это последовательность N-Боначи, начинающаяся с пары чисел, отличных от 0 и 1, которые будут называться X и Y. Если N больше, чем число членов в последовательности, просто добавьте все доступные сроки.
Так, например, нормальная последовательность Фибоначчи имеет N, равное 2 (принимает два предыдущих элемента), и X и Y, равные 0 и 1, или 1 и 1, в зависимости от того, кого вы спрашиваете.
Твое задание:
Вы должны написать программу или функцию, которая проверяет, является ли введенное целое число (A) частью специальной последовательности N-bonacci, сгенерированной следующими тремя целыми числами (используя второй вход как N, а третий и четвертый как X и Y) , Убедитесь, что вы обрабатываете особый случай N = 1.
Входные данные:
Четыре неотрицательных целых числа, A, N, X и Y.
Выход:
Значение истинности / ложности, которое указывает, является ли A частью последовательности N-bonacci, генерируемой входами N, X и Y.
Тестовые случаи:
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.
Подсчет очков:
Это код-гольф , поэтому выигрывает самая низкая оценка в байтах.
N==1
это такой странный случай.N=1
, вы можете указать его в вопросе, поскольку многие ответы (включая все текущие ответы, я думаю) будут иметь состояние отказа, которое предполагает строго возрастающую последовательность. Кроме того, можетX
иY
быть отрицательным? Это, вероятно, также сделает недействительными все существующие ответы.8,1,8,9
и9,1,8,9
убедиться, чтоN=1
обработка случаев обнаруживает неповторяющеесяX
значение, а такжеY
значение. (Если вы хотите разобраться со0,0
случаями, вы должны добавить это также.)Ответы:
Желе , 12 байт
Полная программа взятия
[X,Y]
,N
,A
.Попробуйте онлайн!
Как?
источник
⁵e
с конца; тогда гораздо проще сказать, что это сработает (учитывая, что порядок первых двух слагаемых не имеет значения).05AB1E , 18 байт
Попробуйте онлайн!
Область применения:
[X,Y], N, A
Я чувствую, что некоторые непреднамеренные функции сделали это сложнее, чем нужно.
Там нет больше, чем или равно, никогда не замечал этого раньше.
И
#³
не работал, и потребовал]
, для +1 байт#]³
.источник
Python 2 ,
5956 байтПопробуйте онлайн!
Принимает вход как
A,N,[X,Y]
источник
Perl 6 , 47 байт
Попробуй это
Expanded:
источник
Python 2, 50 байт
Принимает вход как
A,N,[Y,X]
. Выходы через код выхода.Попробуйте онлайн!
источник
R ,
6960 байтПопробуйте онлайн!
Возвращает анонимную функцию, взяв
a,n
и векторl=c(y,x)
. Создает последовательность N-Боначи в обратном направлении (т. Е. Меньший индекс далее в последовательности), посколькуwhile(l<a)
проверяется только первый элементl
.источник
Common Lisp, 164 байта
Эта функция возвращает
NIL
false, не-NIL для true (согласно определению обобщенного логического значения Common Lisp).источник
N=1
обнаруженияA
, например, обоих1
и / или2
когдаX=1 Y=2
? Мои навыки чтения лисписа невелики, но, похоже, вы можете сравнить толькоA
одно из двух начальных значений.к, 29 байт
Попробуйте онлайн!
1
это правда,0
это ложь. Вход есть[A;N;X,Y]
.источник
PHP> = 7.1, 103 байта
Testcases
источник
Mathematica, 94 байта
формат ввода
источник