Эта геометрическая спираль выглядит сложной, но ее довольно просто нарисовать; возьмите следующее поле:
Нарисуйте прямую линию между углом поля и некоторым заданным расстоянием над следующим углом против часовой стрелки.
Продолжайте этот паттерн внутрь, всегда оставаясь на заданном расстоянии от угла следующей линии. Вот еще несколько строк.
Как вы можете видеть, поскольку паттерн продолжается, спираль приближается к центру, и нарисованные прямоугольники начинают вращаться. Обратите внимание, что расстояние остается постоянным, независимо от угла.
Соревнование
Вдохновение (а также благодаря замечательному человеку, который познакомил меня с этой концепцией <3)
Учитывая числовой (возможно, дробный) ввод от 1 до 25, запишите изображение на диск, который использует этот шаблон, или отобразите вывод на экране, где расстояние от каждого угла - это расстояние от одной начальной стороны поля, деленное на ввод , Продолжайте рисунок внутрь, пока расстояние от указанного угла не станет длиннее следующей стороны.
правила
- Вы не можете использовать встроенные модули для этого спирального создания, но вы можете использовать встроенные функции обработки изображений.
- Если вы записываете на диск, вы должны вывести изображение в любом из .jpg, .gif, .tiff, .pbm, .ppm и .png.
- Начальная длина стороны должна быть не менее 500 пикселей.
- Начальный угол может быть любым, который вы выберете.
- Как всегда, Стандартные лазейки запрещены.
источник
Ответы:
Обувь (Рубин) 163 байта
Shoes - это инструментарий GUI на основе рубина.
Ungolfed
Выходы n = 4 и n = 25
Обратите внимание, что форма всегда заканчивается треугольником, который сворачивается дальше в линию. Замена
size-1
наsize
не имеет значения для внешнего вида вывода и сэкономила бы 2 байта, но я оставил это для теоретической корректности.Выход n = 300
Вдохновленные комментариями OP, более высокие цифры выглядят великолепно!
источник
line
Нужно ли пробел в нижней строке?*
преобразует массив четыре элемента , образованный путем преобразования комплексных чисел в четырех параметровline
. Стандартный синтаксис состоит в том,line(*(a[j-1].rect+a[j].rect))
что удаление скобок и добавление пробела уже экономит один байт. Удаление пробела заставляет Ruby пытаться умножитьline
содержимое круглых скобок, что не имеет смысла и вызывает ошибку. Здесь можно поиграть в гольф, но не так. Я посмотрю на это позже.upto
. Кроме того, вы пытались удалить('')
послеask
? Я не проверял это, но это может быть ненужнымJava,
10561005985948522508507504502501493492488474465458 байтСпасибо CoolestVeto и ECS за другие способы уменьшить размер. :-)
источник
Groovy,
412411403398 байтисточник
Caught: groovy.lang.MissingMethodException: No signature of method: static s.div() is applicable for argument types: (java.lang.Float) values: [25.0] Possible solutions: is(java.lang.Object), wait(), run(), run(), find(), any() groovy.lang.MissingMethodException: No signature of method: static s.div() is applicable for argument types: (java.lang.Float) values: [25.0] Possible solutions: is(java.lang.Object), wait(), run(), run(), find(), any() at s$1.<init>(s.groovy:3) at s.run(s.groovy:2)