Бинарная рекуррентная последовательность является рекурсивно определенной последовательностью следующего вида:
Это обобщение последовательности Фибоначчи ( x = 1, y = 2, a = [1, 1], alpha = 1, beta = 1
) и последовательности Лукаса ( x = 1, y = 2, a = [2, 1], alpha = 1, beta = 1
).
Соревнование
Принимая во внимание n
, x
, y
, a
, alpha
, и beta
, в любом подходящем формате, выводить n
й член соответствующей двоичной последовательности повторения.
правила
- Вы можете выбрать последовательность с 1 или 0 индексами, но ваш выбор должен быть одинаковым для всех входных данных, и вы должны отметить свой выбор в своем ответе.
- Вы можете предположить, что недопустимые входные данные не будут предоставлены (например, последовательность, которая заканчивается до
n
или последовательность, которая ссылается на неопределенные термины, напримерF(-1)
илиF(k)
гдеk > n
). В результате этогоx
иy
всегда будет позитив. - Входные и выходные данные всегда будут целыми числами, в границах естественного целочисленного типа вашего языка. Если ваш язык имеет неограниченные целые числа, входы и выходы будут в пределах диапазона
[2**31, 2**31-1]
(т. Е. Диапазона для 32-разрядного целого числа с двоичным знаком со знаком). a
всегда будет содержать точноy
значения (согласно определению).
Тестовые случаи
Примечание. Все тестовые примеры имеют индекс 0.
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
разумным принятие в обратном порядке?Ответы:
Желе , 11 байт
Попробуйте онлайн! 1 | 2 | 3 | 4 | 5
Как это работает
источник
Python 2, 62 байта
Прямое рекурсивное решение. Все входные данные взяты из STDIN, кроме
n
как в качестве аргумента функции, разделение, которое разрешено по умолчанию (хотя и постоянно).Кажется, нет способа сохранить байты с помощью
and/or
вместо,if/else
потому чтоl[n]
может быть ложным, как 0.источник
Python 2, 59 байт
Проверьте это на Ideone .
источник
JavaScript (ES6),
5144 байтаОбратите внимание, что функция частично каррирована, например
f(1,2,[1,1],1,1)(8)
возвращает 34. Было бы стоить 2 байта, чтобы сделать промежуточные функции независимыми друг от друга (в настоящее время корректно работает только последняя сгенерированная функция).Изменить: Сохранено 7 байт благодаря @Mego, указав, что я упустил из виду, что переданный массив всегда содержит первые
y
элементы результата.источник
Haskell,
5448 байтовисточник
J, 43 байта
Учитывая начальную последовательность слагаемых A , вычисляет следующий слагаемый n раз, используя параметры x , y , α и β . После этого он выбирает n- й член в расширенной последовательности и выводит его в качестве результата.
Применение
Поскольку J поддерживает только 1 или 2 аргумента, я группирую все параметры в виде списка в штучной упаковке. Начальные начальные значения A являются первыми, за которыми следуют параметры x и y в виде списка, за которыми следуют параметры α и β в виде списка, и заканчивающиеся значением n .
источник