Задача здесь состоит в том, чтобы точно изобразить цветок жизни (который, по некоторым данным, является священной геометрической фигурой) на выбранном вами языке.
Конструкция состоит из расположения окружностей и частичных окружностей радиуса 1, как показано, центры которых расположены на треугольной сетке с шагом 1, плюс один большой круг радиуса 3, окружающий их.
Дизайн можно масштабировать по своему усмотрению, но допускается максимальная ошибка 2% от математически правильной. При использовании растровой графики это эффективно ограничивает диаметр маленьких кружков, по крайней мере, до 100 пикселей.
Поскольку это код-гольф, выигрывает самый короткий код (байты).
code-golf
ascii-art
graphical-output
Бенджамин Спектор
источник
источник
Ответы:
Mathematica,
177173128124120 байтОсновная идея состоит в том, чтобы составить результат из шести повернутых версий этого:
Это, в свою очередь, прямоугольный стол из одинаковых дуг окружности с отрезанными двумя углами. Если мы уберем сдвиг и представим каждый центр окружности с помощью a
#
, мы в основном хотим распределить окружности по этой схеме:Эти ребра обрезаются путем наложения условия
-3 < x-y < 4
на двумерные индексы (так как значениеx-y
является постоянным вдоль диагоналей), а сдвиг происходит путем умножения ихx
иy
на неортогональные базисные векторы, которые охватывают сетку, которую мы ищем.Эта конкретная ориентация не повернутых дуг оказывается самой короткой, поскольку оба конца дуги равномерно делятся,
Pi
так что дуга может быть выражена какPi/{6,2}
(для всех других дуг потребуется либо дополнительный знак минус, либо целые числа в числителе).источник
OpenSCAD, 228 байт
Ниже приведена версия, позволяющая установить параметры r (радиус) и w (ширина колец).
Эта версия состоит из 246 символов.
Часть этого кода технически не нужна, но делает его более похожим на рисунок.
источник
Error: Error: Parse error on line 1: ...x(k))o();circle(9);};}}}q(2);o(27); -----------------------^ Expecting 'TOK_ID', '}', 'TOK_IF', '!', '#', '%', '*', got ';'
Mathematica 263 байта
Не очень конкурентоспособен с представлением @ MartinEnder, но мне все равно было весело. Я позволил лепесткам сделать случайную прогулку! Лепесток вращается на 60 градусов случайным образом вокруг одной из конечных точек, которая также выбирается случайным образом. Я проверяю, находится ли вращающийся конец лепестка за пределами большого диска, и если да, то вращение идет другим путем.
Вот следующий код, который я использовал для анимации.
Я где-то читал, что 2-мерные случайные блуждания должны в конечном итоге вернуться к началу координат. Кажется, несколько тысяч шагов гарантируют заполнение большого диска.
источник
Sqrt[3]
есть3^.5
. Вам не нужно определятьe
до его первого использования, и вы можете использовать этот трюк, чтобы сохранить байт на нем, такv={e=0{,},{0,2}}
. Вы также можете использовать некоторые инфиксные обозначения, такие какe~c~6
илиe~Disk~6
, иArcTan@@Subtract@@v
должны быть эквивалентныArcTan@@(#-#2)&@@v
.JavaScript (ES6) / SVG, 299 байт
Работает, генерируя несколько пар дуг различной длины, затем поворачивая их на место.
источник