Треугольник Рело является формой , образованное пересечением трех кругов, причем каждой окружность , проходящей через центры чужих. Независимо от поворота ширина треугольника Рёло всегда будет равна радиусу окружностей:
Изображение: Wolfram MathWorld
Напишите программу, которая принимает ширину в r
качестве входных данных и отображает треугольник Reuleaux этой ширины (в пикселях).
Вы должны отображать фигуру изолированно, т.е. сплошной заливкой, без штрихов и поверх сплошной заливки фона.
code-golf - выигрывает самая короткая программа в байтах.
code-golf
graphical-output
geometry
darrylyeo
источник
источник
r
быть в пикселях или просто какой-то коэффициент масштабирования?Ответы:
JavaScript + HTML,
164158 + 13 = 171 байтЯ не знаю, почему мне так нравится отвечать на эти математические задачи рисования
<canvas>
...источник
Love2D, 320 байт.
Вероятно, не оптимальное решение, оно использует трафареты Love2D, устанавливает 3 круга и заполняет, где они пересекаются.
Звоните через командную строку, как
love tri.love 256
Пример вывода
источник
Python 2 , 111 байт
источник
Mathematica
10110098 байтПринятие подхода, отличного от @MichaelSeifert, и, возможно, более буквальное его толкование в отношении предложения pixel:
Пример использования:
10 пикселей
50 пикселей
100 пикселей
Сохранение байта благодаря @MartinEnder (инфиксная запись) и еще 2 байта путем определения d.
источник
PHP + SVG, 165 байт
Пример вывода для ввода 128
источник
PostScript,
968685757372 байтаПринимает ввод как значение в стеке.
^^
и^@
представляют буквенные управляющие символы.(^@^^Z<^@Z<)
это строка символов с кодовыми точками 0, 30, 90, 60, 0, 90 и 60 соответственно. Затем они интерпретируются как углы в градусах, потому что, очевидно, для этого нужны кодовые точки.Сохранено 10 байт, потому что они
closepath
не нужны (clip
иfill
неявно закрывают путь).Сохранено 1 байт с использованием
repeat
вместо определения функции.Сэкономили 10 байт, переключившись на совершенно другой подход.
Сохранено 2 байта, выполняя трюки со стеком.
Сохранено 1 байт с использованием
0 1 2{}for
вместо3{}repeat
.источник
Mathematica,
134131 байтNB Это решение больше не действует, так как вопрос был позже отредактирован, чтобы потребовать измерения r в пикселях. Спасибо Мартину Эндеру за то, что он помог мне сбрить несколько байтов в комментариях.
Чтобы этот код работал, входное значение должно быть масштабировано от 0 до 1. Обратите внимание, что почти четверть этого кода требуется для отображения формы «изолированно», поскольку это не значение по умолчанию Mathematica.
источник
r Exp[2 I Pi n/3]
можноExp[2I n/3Pi]r
сэкономить некоторые пробелы. И как правило, короче написать безымянную функцию, то есть удалитьr=Input[];
, заменитьr
на#
и добавить a&
.BBC BASIC, 58 байт
Скачать переводчик можно по адресу http://www.bbcbasic.co.uk/bbcwin/download.html.
Ungolfed
источник
TeX / TikZ,
128121112 байтовКод основан на этом ответ на TeX.se .
TeX основан на векторах, поэтому не работает с пикселями. Радиус - это число с плавающей точкой, максимум около 15, прежде чем он достигнет края страницы. Он также не предназначен для ввода из командной строки, поэтому его нужно запускать как
где приведенный выше код сохраняется в
rt.tex
источник
.tex
;\footline{}
так же хорошо, как\nopagenumbers
; использовать~
в качестве имени переменной вместо\i
. Чтобы удовлетворить требование «пикселей», вы можете использовать\r sp
; 1sp является своего рода эквивалентом пикселя для TeX, поскольку это лучшее место, которым может управлять TeX (хотя я не знаю, относится ли оно к tikz).sp
но я думаюpt
, это хорошая идея. Все ваши другие идеи сработали (некоторые из них не показались в моих тестах). Спасибо~
сохранения еще одного байта.\input tikz\footline{}\tikz\draw[draw=none,fill=red](0,1)\foreach~in{1,2,3}{[rotate=~*120]arc(0:60:\r sp)};\bye
работает для меня. Попробуйтеpdftex "\def\r{2000000} \input rt.tex"
- в 2sp найти форму визуально было бы сложно, учитывая, насколько она мала.GLSL,
298229 знаковПопробуй здесь
бонус
r
переменнойисточник
JavaScript (ES6) + HTML, 196 + 13 = 209 байт
Использует основанный на пути подход вместо подхода заполнения пикселя.
Показать фрагмент кода
источник
Логотип, 53 байта
использует
filled
команду, чтобы заполнить форму цветом 0 (черный). Код во внешних квадратных скобках выполняется без прорисовки линии, но Logo отслеживает движения черепахи и заполняет форму после выхода из скобки.Логотип,
6461 байтPen Down, нарисуйте 60-градусную дугу с черепахой в центре, Pen Up, переместите ручку к началу дуги, поверните на 120 градусов.
Повторите 3 раза, затем переместитесь внутрь фигуры и заполните ее.
Попробуйте на http://turtleacademy.com/playground/en
Позвоните, как
cs ht t 100
(очистить экран, скрыть черепаху,t
с г = 100.)источник
MATL , 35 байт
Это создает файл с именем
image.png
. Для вводаr
размер изображения равен2*r+1
ширине треугольника,r
как требуется.Попробуйте это в MATL Online! Онлайн-переводчик автоматически открывает созданный файл и отображает изображение с произвольным масштабированием; нажмите на нее, чтобы получить версию в реальном размере.
В качестве альтернативы вот два примера выходных данных автономного компилятора, работающего на Matlab, с входами
50
и100
. Последняя часть кода0YG
была замененаIYG
так, чтобы рисунок отображался непосредственно (с правильным размером) вместо записи в файл.объяснение
источник
JavaScript (ES6) + SVG (HTML5), 28 + 102 = 130 байт
Количество байтов исключает код, необходимый для удобного ввода пользователем нужного размера.
источник
n=>s.style.width=n
будет работать также.МетаПост (
242226 байт)Возможно, это можно несколько уменьшить, я новичок в метапосте.
источник
len * dir
и точку в конце?к,
14110098 байтВвод взят из
stdin
, выходstderr
(или вstdin
зависимости от переводчика) вpgm
формате. Например:Объяснение:
источник
05AB1E , 66 байт
Не могу использовать TIO, так как он открывает окно и рисует там треугольник Reuleaux.
Запрашивает ввод, а затем открывает окно черепаха Python с изображением треугольника.
Ответ Джонатана Аллана вдохновил меня на это, хотя я немного изменил его код.
По сути, это сочетание возможностей сжатия 05AB1E и простоты графики в черепах Python.
источник
OpenSCAD , 91 байт
Я не уверен, насколько это кошерно, поскольку пиксели не являются четко определенной единицей в любых известных мне сеточных форматах. Вместо этого модуль
t
рисует треугольник reuleaux заданного радиусаr
в любых используемых нативных единицах.Пример предварительного просмотра для
t(100)
:источник
SmileBASIC,
8786858382817978777675 байтовUngolfed:
источник