Изображение выше называется гекса-глифом. Гекса-глифы - это несколько классных шаблонов, которые я придумал во время рисования на уроках DiffEq. Вот как вы это делаете:
- Рассмотрим следующий набор точек в форме правильной гексаграммы. Внутренний шестиугольник - это то, что будет содержать окончательный глиф, а внешние 6 точек образуют звезду, и именно там мы начнем рисовать наши линии.
- Из шести внешних точек случайным образом выберите пару. Для эффективности между двумя выбранными точками должна быть хотя бы одна другая точка (в противном случае это не повлияет на конечный показатель). Затем из каждой из двух точек наведите луч на другой. Этот луч заблокирован предыдущими строками.
- Повторяйте этот процесс, пока все 9 ребер не будут сформированы, как показано на следующих нескольких изображениях.
- Вот пример блокировки лучей. Концы сегмента луча все еще видны, но средняя часть закрыта первыми двумя нарисованными нами сегментами.
- Эти два луча также «заблокированы», но это не вызывает видимой разницы, потому что они заблокированы той же самой другой линией.
- Перемотка вперед, пока все 9 линий не нарисованы. Если вы хотите более подробное объяснение этих пропущенных шагов, я могу изложить.
- Наконец, удалите точки звезды. Чтобы сделать его более красивым, толстые точки также удаляются.
Соревнование
Ваша задача - вывести визуальное представление случайного гекса-глифа. Это код-гольф, побеждает меньше байтов.
Все возможные гекса-глифы должны появляться с некоторой положительной вероятностью. Различные гекса-глифы создаются путем изменения порядка прорисовки 9 ребер.
Кроме того, все изображения, выводимые вашей программой, должны быть действительными гекса-символами. Определенные шаблоны (например, полный контур внутреннего шестиугольника) не могут отображаться в виде гекса-глифа, и поэтому ваша программа не должна их выводить.
На выходе должно быть графическое изображение (напечатанное на экране или в файле).
Шестиугольник должен быть правильным, но может появляться в любой ориентации.
Отражения / повороты не считаются уникальными. (Это может облегчить выполнение требования 1).
'01'
чередования пробелов вместо ' *'
.
I made up while doodling during my DiffEq class
, Как происходят все великие открытия ...: P