Всем известна последовательность Фибоначчи:
вы берете квадрат, присоединяете к нему равный квадрат, а затем повторно прикрепляете квадрат, длина стороны которого равна наибольшей длине стороны полученного прямоугольника.
В результате получается красивая спираль квадратов, чья последовательность чисел - это последовательность Фибоначчи :
Но что, если мы не хотим использовать квадраты?
Если мы будем использовать равносторонние треугольники - вместо квадратов - аналогичным образом, мы получим одинаково красивую спираль из треугольников и новую последовательность: последовательность Падована , она же A000931 :
Задача:
Учитывая положительное целое число , выведите , й член в падованской последовательности ИЛИ первые членов.
Предположим, что первые три члена последовательности равны . Таким образом, последовательность начнется следующим образом:
Входные данные:
Любое положительное целое число
Неверный ввод не должен приниматься во внимание
Выход:
- й член в Padovan последовательности ИЛИ первых терминах Padovan последовательности.N
Если распечатаны первые терминов, вывод может быть любым удобным (список / массив, многострочная строка и т. Д.)
Может быть индексированным или индексированным
Тестовые случаи:
(0-индексированный, й термин)
Input | Output
--------------
0 | 1
1 | 1
2 | 1
4 | 2
6 | 4
14 | 37
20 | 200
33 | 7739
(1-индексированный, первые членов)
Input | Output
--------------
1 | 1
3 | 1,1,1
4 | 1,1,1,2
7 | 1,1,1,2,2,3,4
10 | 1,1,1,2,2,3,4,5,7,9
12 | 1,1,1,2,2,3,4,5,7,9,12,16
Правила:
Это код-гольф : чем меньше байтов, тем лучше!
Стандартные лазейки запрещены.
14
(0-indexed) отображается как вывод, в28
то время как я считаю, что это должно дать37
a_0=1, a_1=0, a_2=0
. Это в конечном итоге сдвигается немного, потому что тогдаa_5=a_6=a_7=1
Ответы:
Желе , 10 байт
Попробуйте онлайн!
1-индексироваться. Вычисляет самый большой элемент из: где двоичная матрица удобно вычисляется как:⎡⎣⎢010001110⎤⎦⎥n ⎡⎣⎢isprime(0)isprime(3)isprime(6)isprime(1)isprime(4)isprime(7)isprime(2)isprime(5)isprime(8)⎤⎦⎥
(это полное совпадение.)
источник
Оазис , 5 байт
n-й член 0-индексированный
Попробуйте онлайн!
объяснение
источник
Желе ,
10 98 байтМонадическая ссылка, принимающая
n
(0-indexed), которая даетP(n)
.Попробуйте онлайн!
Как?
РеализуетP(n)=∑⌊n2⌋i=0(i+1n−2i)
А вот "twofer"
... совершенно другой метод также для 8 байтов (этот 1-индексированный, но гораздо медленнее):
источник
Haskell , 26 байтов
Попробуйте онлайн! Выводит n-й член с нулевым индексом.
Я думал, что «очевидное» рекурсивное решение ниже будет непобедимым, но потом я нашел это. Это похоже на классическое выражение в гольфе
l=1:scanl(+)1l
для бесконечного списка Фибоначчи, но здесь разница между соседними элементами заключается в термине 4 позиции назад. Мы можем более прямо писатьl=1:1:zipWith(+)l(0:l)
, но это дольше.Если бы этот вызов позволял выводить бесконечный список, мы могли бы сократить первую строку и получить 20 байтов.
27 байт
Попробуйте онлайн!
источник
Python 2 , 30 байт
Попробуйте онлайн!
Возвращает n-й член с нулевым индексом. Выходы
True
за 1.источник
Wolfram Language (Mathematica) , 33 байта
1-индексированный, возвращает n-й член
Попробуйте онлайн!
источник
Октава / MATLAB,
3533 байтаВыводит первые n членов.
Попробуйте онлайн!
Как это работает
Анонимная функция, которая реализует рекурсивный фильтр .
'cbaa'-98
это более короткая форма для производства[1 0 -1 -1]
.2:n<5
является более короткой формой[1 1 1 0 0 ··· 0]
( n − 1 слагаемых).filter(1,[1 0 -1 -1],[1 1 1 0 0 ··· 0])
пропускает вход[1 1 1 0 0 ··· 0]
через фильтр дискретного времени, определенный передаточной функцией с коэффициентами числителя1
и знаменателя[1 0 -1 -1]
.источник
J , 22 байта
-2 байта благодаря ngn и Galen
закрытая форма, 26 байт
Попробуйте онлайн!
итеративный, 22 байта
Попробуйте онлайн!
источник
1:
->#
: попробуйте онлайн!1:
->1
. «неблагоприятный» работает с существительным справа, по-видимомуСетчатка ,
4742 байтаПопробуйте онлайн! Выводит первые
n
слагаемые на отдельных строках. Объяснение:Заменить вход с условиями для
-2
,-1
и0
.Создайте следующие
n
члены, используя отношение повторения.*_
здесь сокращение,$&*_
которое преобразует (первое) число в совпадении в одинарное, а$1*
сокращение, в$1*_
котором среднее число преобразуется в одинарное. В$.(
возвращает десятичную сумму его одинарных аргументов, т.е. суммы первого и среднего числа.Откажитесь от первых шести символов, то есть первых трех строк.
источник
Cubix , 20 байтов
Это 0 индексируется и выводит N- й член
Попробуйте онлайн!
Заворачивает в куб с длиной стороны 2
Смотреть это беги
I010
- инициирует стек+p?
- Добавляет вершину стека, вытягивает счетчик из нижней части стека и тестирует/;UO@
- Если счетчик равен 0, отразить на верхней грани, удалить TOS, разворот, выход и остановить\(sqq;W
- Если счетчик положительный, отразите, уменьшите счетчик, поменяйте местами TOS, дважды нажмите сверху вниз, удалите TOS и переместите полосу назад в основной цикл.источник
Python 2 ,
5648 байтовПопробуйте онлайн!
Возвращает n-ное значение с 0 индексами.
источник
Perl 6 , 24 байта
Попробуйте онлайн!
Довольно стандартная сгенерированная последовательность с каждым новым элементом, сгенерированным выражением
* + * + !*
. Это добавляет третий предыдущий элемент, второй предыдущий элемент и логическое отрицание предыдущего элемента, который всегдаFalse
равен нулю.источник
05AB1E , 8 байтов
Попробуйте онлайн!
Терпите меня, я давно не играл в гольф. Интересно, есть ли более короткий заменитель,n
1Ð)
который работает в этом случае (я пробовал1D)
и3Å1
т. Д., Но ни один из них не сохраняет байтов). Выводит первые членов последовательности. Или без него он вывел бы бесконечный поток членов последовательности.£
Как?
источник
1Ð)
может быть 2 байта ТБХ. Я могу думать о шести различных 3 -байтовых альтернативах , но не о 2-байтовых.APL (Dyalog Unicode) ,
201817 байтов SBCSЭтот код 1 проиндексирован. Это то же количество байтов, чтобы получить
n
элементы последовательности Падована, так как вам нужно отбросить последние несколько дополнительных членов. Это также то же количество байтов, чтобы получить 0-индексацию.Редактировать: -2 байта благодаря ngn. -1 байт благодаря ngn
Попробуйте онлайн!
объяснение
источник
K (нгн / к) ,
2420 байт-4 байта благодаря ngn!
Попробуйте онлайн!
0 индексируется, первые N членов
источник
f[x-2]+f[x-3]
->+/o'x-2 3
(o
is "1:
->#
в решении j32-битный машинный код x86, 17 байт
Разборка:
Это 0-проиндексировано. Инициализация обычно достигается путем вычисления eax * 0. 128-битный результат равен 0, и он идет в edx: eax.
В начале каждой итерации порядок регистров следующий: ebx, eax, edx. Мне пришлось выбрать правильный порядок, чтобы воспользоваться кодировкой для
xchg eax
инструкции - 1 байт.Мне пришлось добавить 4 к счетчику циклов, чтобы позволить выходу достичь
eax
, который содержит возвращаемое значение функции вfastcall
соглашении.Я мог бы использовать другое соглашение о вызовах, которое не требует сохранения и восстановления
ebx
, ноfastcall
в любом случае это весело :)источник
Желе , 11 байт
Попробуйте онлайн!
0 индексированные.
источник
Луа 5.3,
4948 байтовПопробуйте онлайн!
Vanilla Lua не имеет приведения булевых значений к строкам (даже
tonumber(true)
возвращаетnil
), поэтому вы должны использовать псевдо-троичный оператор. Эта версия 1-проиндексирована, как и все Lua. Эта1or
часть должна быть изменена на1 or
Lua 5.1, в которой по-разному используются лексические числа.источник
Рубин , 26 байт
Попробуйте онлайн!
источник
JavaScript (ES6), 23 байта
Реализует рекурсивное определение A000931 , но с , как указано в задании.a(0)=a(1)=a(2)=1
Возвращает й член, 0-проиндексированный.N
Попробуйте онлайн!
источник
true
- это то же самое, что возвращение,1
если остальная часть результата - числа.Japt
-N
, 12 байтПопытайся
источник
TI-BASIC (TI-84), 34 байта
0-индексированный й член последовательности.N
Вход находится в
Ans
.Выход находится
Ans
и автоматически распечатывается.Я подумал, что прошло достаточно времени, плюс было опубликовано несколько ответов, из которых многие опередили этот ответ.Пример:
Объяснение:
источник
Pyth, 16 байт
Это определяет функцию
y
. Попробуй это здесь!Вот более забавное решение, хотя оно на 9 байт длиннее; байты могут быть побриты все же.
При этом используется определение, данное Дэвидом Калланом на странице OEIS: «a (n) = количество композиций из n в нечетные части и> = 3». Попробуй это здесь! Он принимает входные данные вместо определения функции.
источник
y-b2y-b3
может быть рефакторинг с бифуркацией илиL
? Хотя объявление массива из 2 элементов является дорогостоящим.yL-Lb2,3
длиннее :(+y-b2y-b3
сsmy-bdhB2
которой одно и то же количество байтов;hB2
результаты в массиве[2, 3]
hB2
. Жаль, что это тот же счетчик байтов.d
карты.Java, 41 байт
Не могу использовать лямбду (ошибка времени выполнения). Порт этого Javascript ответа
TIO
источник
R + pryr ,
3836 байтНулевая индексированная рекурсивная функция.
Попробуйте онлайн!
Спасибо @Giuseppe за указание на два явно ненужных байта.
источник
pryr
, язык должен быть,R + pryr
и это может быть 36 байтовС (лязг) ,
4133 байтПопробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) , 34 байта
Попробуйте онлайн!
источник
Perl 5 , 34 байта
Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , 26 байтов
Попробуйте онлайн!
источник
Пари / ГП , 28 байт
0 индексированные.
Попробуйте онлайн!
Пари / ГП , 35 байт
1-индексироваться.
Попробуйте онлайн!
Производящая функция последовательности: .1+x1−x2−x3
источник