Ваша задача - нарисовать множество Мандельброта в ascii. Это должно выглядеть примерно так
Комплексное число c
лежит в множестве Мандельброта, когда последовательность z(n+1) = z(n)^2 + c
, z(0) = 0
остается ограниченной. Для этой задачи вы можете рассмотреть последовательность, ограниченную для c
if |z(32)| < 2
.
Составьте график Мандельброта на комплексной плоскости от (-2 - i) до (1 + i) и минимальное разрешение 40x30, используя символы ascii на вашем любимом языке, используя как можно меньше символов.
*
Ответы:
Предполагая, что машинный код имеет значение, я некоторое время назад написал статью, которая генерирует цветной Мандельброт размером 320x200 в 64 байта - http://www.pouet.net/prod.php?which=53287
Вот код:
Скомпилированная версия в base64:
источник
sudo apt-get install dosbox; dosbox ./Microbrot.com
меня нашли, поднимая челюсть с пола. Это чертовски впечатляюще!С, 988 символов
Вот мой, который делает Мандельброта ASCII, написанный как Мандельброт ASCII, в C.
Ох .. и он также имеет функцию интерактивного масштабирования. (нажмите клавиши 1-9 для увеличения соответствующей области)
Первоначально опубликовано здесь http://marquisdegeek.com/rnd_obs.php
источник
Общий лисп - 195 символов
Протестировано с sbcl и clisp. Результат:
Немного изменено из блога Б. Клементсона .
источник
Питон,
146145143чарПришлось добавить предложение (abs (x) <2) к условному выражению, чтобы Python не узнавал о переполнениях. Но ... это причина, по которой я люблю Мудреца ...
Шалфей, 133 чар
Пример вывода (из версии Python)
источник
15j
в версии Pythonr=range(-50,26)
. Затем заменитьrange(-15,16)
наr[35:66]
и заменитьrange(-50,26)
наr
.J , 61 знак
55 для разделенных пробелами 0/1 вместо звезд.
источник
BASH -
167165148mb3
Файл:(без завершающей строки)
Запустите его в терминале с длиной строки 125:
BASH -
214190Это в основном тот же код, что и ниже, с вычислениями, заменяемыми жестко закодированными значениями, а изображение переворачивается вокруг оси x.
Версия ниже не полностью соответствует правилам, нарушающим «от (-2 - i) до (1 + i)».
BASH -
263261260236Используйте этот источник, Люк:
Этот код использует только целочисленную арифметику, поэтому BASH не требуется дополнительных помощников для выполнения математических операций с плавающей запятой ...
источник
x=;y=
. Операторы сдвига имеют меньший приоритет, чем сложение и умножение, поэтому нет необходимости в скобках вокруг>>
левого операнда. И вы можете использовать{
...}
вместоdo
...done
, как советует Digital Trauma в своем совете . И вы можете поместить несколько выражений в арифметическую оценку, просто разделив их,
.(x*x-y*y)>>12
. Они ничего не меняют.Рубин, 95 знаков
Пример вывода:
источник
Хаскелл, 130
Выход:
источник
Вот ответ кофейного сценария, работающий на node.js: черно-белый:
Добавление цвета:
источник
Mathematica 56
Mathematica 77
Mathematica 77
источник
GraphicsGrid@ImageData@Binarize@MandelbrotSetPlot[ImageResolution->40]/.{1->" ",0->"*"}
но это было 84 символа, и результат не так хорош, как ваш.Perl, 153 символа
Вывод: я не могу опубликовать изображение, потому что я новый пользователь, поэтому я постараюсь опубликовать текст вывода.
источник
C # - 304 символа
Когда я кодирую, я пишу с удобочитаемостью и красивым форматированием. Я бросил писать это.
Я уверен, что мое решение может быть улучшено, но для справки я опубликую его. Обратите внимание, что консоль Windows сжимает изображение.
источник
Haskell: 340 символов
Ну, поскольку я не вижу ответа на Haskell, я публикую свой, я пытался свести его к минимуму из того, что я сделал до сих пор. Я уверен, что могу многое уменьшить. Но вот первая попытка:
И вот результат:
ОК. Вдохновленный каким-то анимированным запутанным кодом C на HN, вот анимированная версия:
Скопируйте / вставьте, запустите mangh.hs, наслаждайтесь!
Вот вид результата после 50 итераций:
И ссылка на более читаемый код:
http://yannesposito.com/Scratch/en/blog/Haskell-Mandelbrot/
источник
J, 70
Отображает участников набора как
1
, остальные как0
. Каждое вычисленное расстояние разделяется на два символа шириной, чтобы в большинстве шрифтов оставался пиксел, в основном квадратный.источник
QBasic, 222 персонажа. Не так коротко, но QBasic - довольно многословный язык. Кроме того, я обновил, казалось бы, более правильную версию
Вывод как на следующем рисунке.
источник
SpecBAS 201
Я знаю, что это старый вопрос, но мы играли с Ascii Brot из Perlin на форуме программирования BASIC, а вот мой - в SpecBAS (своего рода интерпретатор Sinclair BASIC), и это на самом деле просто текст, и один строка кода:
Выход:
источник
1FOR y=-29TO 30:FOR x=-10TO 89:LET m,r=0:FOR k=0TO 112:LET j=r^2-m^2-2+x/25,m=2*r*m+y/25,r=j,l=k&15,k=IIF(j^2+m^2>11,113,k):NEXT k:PRINT" .:-;!/>)|&IH%*#"(l+1);:NEXT x:NEXT y
.Perl - 193 символа
Результат
Я думаю, что он выиграл в запутанном конкурсе Perl несколько лет назад.
источник
Питон, 115
Работает только на терминалах 80x24, но вы можете добавить
print
после того, какfor
это исправить.Пример вывода (с дополнительной
print
инструкцией.):источник
c ++ - 11 - 298 символов
Полностью гольф, непараметрическая версия, которая делает только то, что требуется:
Реализация совершенно ничем не примечательна. Просто посмотреть, что можно сделать, используя родное сложное время (что, увы, немного многословно).
Неуправляемый и параметризованный, чтобы он мог делать регионы
Выход
источник
GolfScript - 77
Это, вероятно, можно играть в гольф намного больше. Результат приблизительный, потому что я должен использовать целые числа.
Выход:
Требуется еще около 9 байтов, чтобы использовать пробелы и звезды:
источник
GNU bc, 136 байт
Выход:
источник
CJam, 52 байта
Объяснение:
источник
Матлаб, 96
источник
Befunge, 266 байт
Попробуйте онлайн!
Это рендерер Мандельброта, который я реализовал пару лет назад для представления кода Розетты . Поскольку Befunge не имеет плавающей запятой, он использует форму 14-битной арифметики с фиксированной запятой, эмулируемой с целочисленными операциями. У него максимум 94 итерации с набором символов ASCII в качестве «палитры».
Первоначально это было реализовано с учетом мобильности, а не размера, но все же должно быть достаточно хорошо, как есть.
Пример вывода
источник
Python 444
Вот один из разработчиков Python ,
который не очень короткий,
это одна строка, которая довольно хороша.
источник
с ++ (260)
Гольф-код:
Пример вывода:
источник
Минколанг 0,9 ,
7774 байта (НЕВЕРНЫЙ)Этот ответ недействителен, потому что язык был создан задолго до этого испытания, но я публикую его, чтобы на этом языке было решение. Делая это довольно сбрил 3 байта Ву!
Попробуй это здесь.
Выход
объяснение
Это использует преимущества внутренней обработки сложных чисел в Python , поэтому я могу просто сделать
1~12$:;
(эквивалент(-1)**0.5
в Python), чтобы получить мнимую единицу. Тогда есть три вложенных циклов для, что через петлюy
,x
иz=z^2+c
. Разрыв самого внутреннего цикла необходим (и выполняетсяd$~2`9&
), потому что в противном случае числа станут настолько большими, что они станут(NaN+Nanj)
, которые, по-видимому, имеют величину меньше 2.источник
Python 3, 185 байт
Перевод с Perl (193) с некоторыми улучшениями
источник
> <> , 118 байт
Попробуйте онлайн! Имейте в виду, что запуск с использованием TIO занимает около 25 секунд, так что наберитесь терпения!
Скорее вызов самому себе, чем серьезная запись. Производит следующий вывод:
источник
; # 150,878 байт (неконкурентный)
Это не подходит здесь :(
Выход:
источник