Взгляните на этот цветок ромашки:
Довольно, не правда ли? Что ж, если я скажу вам, что это был не один цветок?
Многие цветы (включая подсолнухи, ромашки, ромашки и другие) на самом деле состоят из множества очень маленьких цветов (черные точки на подсолнухах) на цветочной головке. Эти миниатюрные цветы называют цветочками , и они устроены по-особенному.
По сути, позиция n-го цветочка на головке цветка (в полярных координатах):
где c = 1 (обратите внимание, что 137.508 градусов = золотой угол. Вам не нужно использовать эту точную точность.)
Это приводит к тому, что цветочки образуются в виде спирали, называемой спиралью Ферма. Расположение цветочков также связано с числами Фибоначчи, но это сказка для другого времени.
Итак, вот проблема. Учитывая целое число n в качестве входных данных, вычислите положения первых n цветочков и нанесите их на график . Это графический вывод , поэтому я действительно хочу, чтобы вы отображали точки в каком-либо окне или выводили в виде данных в каком-то обычном формате изображения в STDOUT или файл. Помимо этого, этот вызов должен быть довольно простым. Это код-гольф , поэтому выигрывает самый короткий код. GLHF!
Вот пример изображения того, как может выглядеть вывод:
источник
Ответы:
TI-BASIC, 34 байта
Для калькуляторов серии TI-83 + / 84 +.
Это считает точку в начале координат 0-й точкой.
Благодаря однобайтовому
sinh⁻¹(
токену,2πe^(-2sinh⁻¹(.5
это короткий способ получить золотой угол в радианах. Это вытекает из того факта, чтоe^(sinh⁻¹(.5
это золотое сечение.Вот скриншоты для N = 50.
(Да, это монохромный дисплей 96x64 на TI-84 +. Более новые цветные калькуляторы имеют улучшенное разрешение, но по-прежнему имеют только 3,7% пикселей iPhone.)
Нажмите, TRACEчтобы пройти через каждую точку.
источник
sinh⁻¹
кажется (если я понял ваше объяснение), будет считаться более чем одним байтом.Python 2,
858281 байтУкорочен на один байт маринусом.
Используя золотой угол в радианах. Длина байта такая же, если я использовал 137.508, но как-то не так хорошо. Создает полярный график, используя pylab. Ниже показано, когда 300 (для более старой версии) - это вход, а 7000 (для более новой версии) - это вход. Можно округлить угол до 2,4, чтобы уменьшить количество байтов до 77.
Вот более длинная версия, которая производит более чистый вид, удаляя сетку и ось:
Причина разных цветов заключается в том, что каждая точка отображается отдельно и рассматривается как собственный набор данных. Если углы и радиусы были переданы как списки, то они будут рассматриваться как один набор и иметь один цвет.
источник
for
цикл вместо списка. Он должен был бы быть по своей линии, но;
и\n
имеют одинаковую длину, так что не имеет значения. То есть:from pylab import*
-for i in arange(0,input(),2.39996):polar(i,sqrt(i),'o')
-show()
Блиц 2D / 3D , 102 байта
(Самый первый ответ на блиц 2D / 3D на этом сайте!)
Ввод
50
заполняет окно. (Да, я мог бы сбрить два байтаGraphics 99,99
, но визуально это не так интересно или полезно.)Более симпатичная версия (и приятнее выходит):
источник
Mathematica,
4342 байтаЭто безымянная функция, принимающая целочисленный аргумент, например
Скриншот использует более старую версию, но вывод выглядит так же.
Mathematica на самом деле имеет встроенную функцию
GoldenAngle
для еще более точных результатов, но это дольше2.39996
.источник
GoldenAngle
! Это новая функция в Mathematica 10.2?MATLAB, 42 байта
Получает входной номер, создает диапазон от 1 до этого числа.
Умножает диапазон на золотой угол в радианах (используемое значение ближе к истинному значению, чем 137.508 градусов до 6 нс).
Затем просто нанесите тета против r на диаграмме полярных координат, используя точки. Здесь показано с 2000 баллов
Немного более симпатичный график (без линий сетки) будет таким кодом:
Хотя это за счет 31 байта. Снова вот это показано с 2000 очков
источник
polar
решение, я никогда не использовал это раньше. Я думаю, что вы можете сохранить два байта, используяt.^.5
instad ofsqrt(t)
!R,
585554 байтаЭто требует установки
plotrix
пакета, но пакет не нужно импортировать, потому что мы явно ссылаемся на пространство имен.Ungolfed:
Пример вывода для n = 1500:
Сохранено 3 байта благодаря планнапу!
источник
R,
5554 байтаВот результат для n = 1000:
Редактировать: 1 байт, используя частичное совпадение аргументов (
as
вместоasp
) благодаря @AlexA.!источник
R,
4847 байтЯ думаю, что это достаточно отличается от других решений R до сих пор. Этот использует сложные векторы для построения координат. квадраты t и t помещаются в параметры модуля и аргумента, а x, y берутся из действительного и мнимого. Спасибо @AlexA. для байта.
источник
as
можно использовать вместоasp
.HTML + JavaScript 179
источник
Джольф, 25 байт
(вывод для n = 5000)
Попробуйте онлайн. (обратите внимание, что полученная спираль мала)
Не конкурирует, так как Джольф был создан после этого испытания. Это 25 байтов при кодировании с ISO-8859-7, и он содержит один непечатаемый (вот hexdump):
объяснение
источник
Python 2, 74 байта
источник
MATL , 20 байтов (не конкурирует)
Помечен как неконкурентный, потому что язык устарел
Попробуйте это в MATL Online!
Золотой угол,
137.708
град =pi*(3-sqrt(5))
рад =2.39996...
рад, аппроксимируется как2.4
рад.Следующая версия ( 25 байт ) использует точное значение с точностью до
double
плавающей запятой:Попробуйте это в MATL Online!
источник
Tcl / Tk, 114
Пример использования:
и выводит окно
источник