Введение
Подобно последовательности Фибоначчи, последовательность Падована ( OEIS A000931 ) представляет собой последовательность чисел, которая получается путем добавления предыдущих терминов в последовательность. Начальные значения определяются как:
P(0) = P(1) = P(2) = 1
Все 0-й, 1-й и 2-й члены равны 1. Отношение повторения указано ниже:
P(n) = P(n - 2) + P(n - 3)
Таким образом, он дает следующую последовательность:
1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37, 49, 65, 86, 114, 151, 200, 265, 351, ...
Использование этих чисел в качестве длины сторон равносторонних треугольников дает хорошую спираль, когда вы размещаете их все вместе, во многом как спираль Фибоначчи:
Изображение предоставлено Википедией
задача
Ваша задача - написать программу, воссоздающую эту спираль с помощью графического вывода, с вводом, соответствующим тому или иному термину.
правила
- Ваша заявка должна быть в состоянии обработать по крайней мере до 10-го семестра (9)
- Ваша заявка должна быть полной программой или функцией, которая принимает данные и отображает графический результат (выводит изображение или графики и т. Д.)
- Вы должны показать подтверждение вашего графического вывода в вашем представлении
- Вращения выходных данных допускаются в кратных 60 градусов с одинаковым представлением
- Также возможно движение против часовой стрелки
- Стандартные лазейки запрещены
Вы можете предположить, что ввод будет> 0, и будет указан правильный формат ввода.
счет
Это код-гольф , поэтому выигрывает самый короткий код в байтах. Всех с новым годом!
источник
Ответы:
Mathematica,
119108 байтСпасибо Мартину Эндеру за сохранение 11 байтов!
Безымянная функция принимает положительный целочисленный аргумент (1-indexed) и возвращает графический вывод. Пример вывода для ввода
16
:Разработан одновременно с ответом Flawr на Matlab, но со многими сходствами в дизайне - даже включая определение
I^(2/3)
шестого корня единства! Более легкая для чтения версия:Строка 1 определяет последовательность Падована
±n = P(n)
. Строка 4 создает вложенный массив комплексных чисел, определяющихz
по пути; последняя часть±# z^(#+{2,4,1})&~Array~#
генерирует множество троек, каждый из которых соответствует векторам, которые мы должны нарисовать, чтобы завершить соответствующий треугольник (±#
контролирует длину, аz^(#+{2,4,1})
контролирует направления). Строка 3 избавляет от вложенности списка, а затем вычисляет промежуточные суммы комплексных чисел для преобразования из векторов в чистые координаты; Затем строка 2 преобразует комплексные числа в упорядоченные пары действительных чисел и выводит соответствующую многоугольную линию.источник
Matlab,
202190 байтВыход для
N=19
(индексация на основе 1):объяснение
Грубая идея в основном работает с комплексными числами. Тогда края треугольников всегда указывают в направлении шестого корня из единства.
источник
PHP + SVG, 738 байт
Выход за 16
источник
$k%6==0
может быть$k%6<1
и$k%6==5
может быть$k%6>4
.Python 3,
280, 262 байта18 байтов сохранено благодаря ovs
Golfed:
То же самое с некоторыми комментариями:
Скриншот для
N=9
:источник
Двиттер 151
можно проверить на http://dwitter.net (используйте полноэкранный режим)
Основная идея - логотип черепаха, игра в гольф. украл функцию P () сверху!
Я полагаю, что больше может быть в гольф рекурсией, но это не плохо.
источник
LOGO, 119 байт
Чтобы использовать, сделайте что-то вроде этого :
Пример вывода (не может быть встроен, потому что это не HTTPS и не удалось загрузить в imgur)
источник