Прежде всего ... Я хотел бы пожелать всем счастливого Рождества (извините, если я опаздываю из-за вашего часового пояса).
Чтобы отпраздновать это событие, мы собираемся нарисовать снежинку. Поскольку год 201 5, а Рождество - 2 5 (для большой части людей), мы нарисуем хлопья Пента . Pentaflake - это простой фрактал, состоящий из пятиугольников. Вот несколько примеров (взятых отсюда) :
Каждый пятиугольник имеет порядок n. Пентафляк порядка 0 - это просто пятиугольник. Для всех других порядков n пятиугольник состоит из 5 пятиугольников предыдущего порядка, расположенных вокруг 6-го пятиугольника предыдущего порядка. Например, пятиугольник порядка 1 состоит из пяти пятиугольников, расположенных вокруг центрального пятиугольника.
вход
Порядок n
. Это может быть дано любым способом, кроме предопределенной переменной.
Выход
Изображение заказа n
Пентакла. Должен быть не менее 100 пикселей в ширину и 100 пикселей в длину. Он может быть сохранен в файл, отображен для пользователя или выведен в STDOUT
. Любая другая форма вывода не допускается. Все графические форматы, существующие до этого испытания, разрешены.
выигрыш
Как Codegolf, выигрывает человек с наименьшим количеством байтов.
источник
n
не может быть предопределено в вашем файле сценария. Вы можете прочитатьn
изSTDIN
, подсказывать от пользователя, принять его в качестве функции / строки аргумента commad ... в основном все , что вы хотите для встраивания непосредственно в коде , за исключением.Ответы:
Матлаб, 226
Ungolfed:
Пятая итерация (рендеринг уже занял довольно много времени).
Небольшое изменение кода (к сожалению, больше байтов) приводит к этой красоте =)
Ох, и еще один:
источник
Mathematica, 200 байт
Последняя строка - это функция, которая может быть применена к целому числу
n
.Имена функций Mathematica длинные. Кто-то должен энтропийно кодировать их и сделать из них новый язык. :)
Применительно к
1
:Применительно к
2
:источник
MATLAB,
235233217 байтОбновление: куча предложений от @flawr помогла мне потерять 16 байт. Так как только это позволило мне победить решение flawr , и что я не нашел бы проблему без помощи flawr в первую очередь, мы считаем это совместным представлением :)
Это еще одно решение MATLAB, основанное на философии систем итерированных функций. Я был в основном заинтересован в разработке самого алгоритма, и я не слишком много играл в решение. Там, безусловно, есть место для улучшения. (Я предполагал использовать жестко закодированное приближение для фиксированной точки
c
, но это было бы не очень хорошо.)Безголовая версия:
Результат для
N=5
(с последующейaxis equal off
для красивости, но я надеюсь, что это не считается в байтовом выражении):источник
R=[p(:,2),[-p(2,2);p(1,2)]];
(и исключая предыдущиеR,C,S
), и вы можете использовать,q=[q R^l*[c-1+t(1,:);t(2,:)]/c]
и я думаюc=1.5+5^.5/2;
q
, у меня даже была пара ненужных скобок там ... 3. спасибо, но что это за магия ??: D 4. поскольку решение теперь короче вашего оригинала, я считаю, что это также частично ваше представление.Mathematica, 124 байта
Mathematica поддерживает новый синтаксис
Table
начиная с версии 10:,Table[expr, n]
который сохраняет еще один байт.Table[expr, n]
эквивалентноTable[expr, {n}]
.Суть этой функции заключается в использовании комплексных чисел для преобразования и последующего преобразования их в точки
ReIm
.Прецедент:
источник
π
занимает в UTF-8 два байта, поэтому получается всего 125 байтов.Mathematica,
199196 байтПодчеркивая ответ Питера Рихтера за волосы, вот мой собственный. Он в значительной степени опирается на графическую функциональность и меньше на математику и FP. Встроенный CirclePoints является новым в 10.1 .
Изменить: Благодаря DumpsterDoofus для GoldenRatio
источник
((1+Sqrt@5)/2)
наGoldenRatio
. Также во второй строке я думаю, что это должно бытьp@0=Polygon@c[{1,0},5];
вместоp@0=Polygon@cp[{1,0},5];
. (Кстати, я на самом деле Питер, у меня есть два профиля LOL).Mathematica, 130 байт
Я использую технику, аналогичную ответу njpipeorgan (фактически я украл его
2Pi I/5 == Pi.4I
трюк), но реализован как рекурсивная функция.Пример использования (используется
%
для доступа к анонимной функции, которая была выведена в последней строке):источник