Пенроуза треугольник , также известная как трибар Пенроуза, или невозможный трибару, является невозможной задачей.
Цель этого задания - показать треугольник Пенроуза в наименьшем количестве байтов.
Источник: Википедия
Правила:
- Вы должны отобразить треугольник Пенроуза в цифровом виде после его генерации.
- Они должны выглядеть так же, как на изображении выше вики-страницы (источник выше) без непосредственного показа изображения.
- Одно и то же изображение с одинаковой цветовой схемой должно быть показано размером не менее 400x400.
- Должно быть максимально точным.
Удачи и приятного времяпровождения!
code-golf
kolmogorov-complexity
graphical-output
arodebaugh
источник
источник
Ответы:
логотип,
129120 байтРисует только первые 4 стороны каждой формы L, затем поднимает перо, перемещается в соответствующее место на следующей форме L, опускает перо и рисует 4 стороны этого. Каждая форма L занимает 2 стороны от предыдущей.
Последние изменения: перейдите от области черной заливки к области серой заливки, используя
fd
вместоsetx
, и измените все движения сfd
на,bk
чтобы сохранить один байт при повороте на 180 градусов:rt 210
->rt 30
, сократитьsetpencolor
доsetpc
(недокументировано в используемом мной интерпретаторе, но это работает .)логотип, 140 байт
Рисует 6 сторон каждой формы L, выходит за пределы последнего края, затем поворачивается на 180 градусов, чтобы начать следующий.
запустить на http://www.calormen.com/jslogo/#
Рекомендуется сделать
cs pd setpencolor 0
перед запуском, чтобы убедиться, что экран чист, черепаха центрирована и направлена вверх, ручка опущена и установлена в черный цвет (настройки по умолчанию, не требуются для нового сеанса), а такжеht
скрыть черепаху (st
будет покажи еще раз.)источник
SVG (HTML5), 191 байт
источник
Python 2,
211201195188175173 байтаК сожалению,
exec
он не реализован в Trinket, поэтому он не может быть протестирован онлайн как есть. По крайней мере, не в бесплатной версии. Я распечатал строку и вставил ее как код для проверки. Если вы разбираетесь в сценариях, вы можете изменить размер html / css по мере необходимости, чтобы увеличить холст. Дайте мне знать, если вы делаете.Попробуйте онлайн - использует меньший размер, так как холст сайта слишком мал для 400px, но вы можете увидеть весь результат.
Ungolfed:
источник
255*n/2
можно ли уменьшить значение до,128*n
я думаю, значения RGB с плавающей запятой в любом случае будут округляться, так что произойдет ли изменение цвета пикселей?PHP, 153 байта
Это будет работать, только если
short_open_tag
настройка включена. Исходный код содержит непечатаемые символы, поэтому вместо этого используйте шестнадцатеричный дамп:Распакованные данные выглядят так (добавлены разрывы строк для удобочитаемости):
Хотя данные SVG не совсем корректны, PHP обслуживает их
text/html
по умолчанию. Без объявления doctype документ обрабатывается в режиме причуд, что очень простительно.Чтобы улучшить сжатие, я разбил изображение на три части в форме «7», которые можно нарисовать, используя почти идентичные
<path>
элементы. Полученное изображение расширится, чтобы заполнить область просмотра. Вот снимок экрана из окна 500 × 500 пикселей:источник
HTML + JS (ES6), 34 + 306 = 340 байт
Использует горизонтальный наклон 30 градусов - в 3-м аргументе матричного преобразования тангенс 30 ° представляется как
pow(3,-.5)
.Есть довольно много уродливых магических чисел, и они не совсем соответствуют пропорциям изображения в Википедии. Я уверен, что есть более «математический» способ сделать это; любая помощь будет оценена.
Посмотрите версию без кода на CodePen.
источник
HTML + CSS, 9 +
315309308 = 317 байтГраницы и перекосы в изобилии! Проверено на Chrome. Посмотрите версию без кода на CodePen .
источник
>
, верно?Mathematica 171 байт
Рисует 3 многоугольника, используя AnglePath, кратные поворотам на 60 градусов, и использует преимущество в том, что отправной точкой для каждого многоугольника является 5-я точка предыдущего многоугольника.
источник
AnglePath
.Tcl / Tk, 205
источник