Ваша задача - написать программу, которая будет рисовать черно-белое изображение размером 800x600 с чем-то, напоминающим лес.
Вот так (это фото из грязи):
правила
- Вам запрещено использовать любые существующие изображения - вы должны генерировать изображение исключительно алгоритмически
- Используйте только 2 цвета - черный и белый (без оттенков серого)
- Каждый раз, когда программа запускает изображение должно быть новым - случайным каждый раз
- Одно дерево не лес (скажем, 5 деревьев минимум)
- Специальные библиотеки для рисования деревьев / лесов запрещены
- Ответ с большинством голосов побед
Ответы:
C:
386311441023999942927Исходное решение сохраняет 2 pnm-файла за один прогон (один с добавлением g, перед сглаживанием). Поскольку сглаживание не было прекрасным для первых нескольких строк, существует хакер, позволяющий отображать больше строк, чем необходимо, и обрезать их во время вывода.
Решение для игры в гольф имеет более простое сглаживание и сохраняет только размытое изображение. (нет предупреждений с gcc -std = c11 -pedantic -Wall -Wextra)
Примеры изображений из 3 оригинальных прогонов программы и одного прогона игры в гольф (последнее изображение):
Гольф версия
Оригинальная версия
источник
Java джунгли
(954 в гольфе)
Полный глубокий извилистый подлесок, этот лес нелегко пройти.
Это в основном фрактальная случайная прогулка с медленно сжимающимися извилистыми лозами. Я рисую 75 из них, постепенно переходя от белого сзади к черному спереди. Затем я размышляю над всем этим, бесстыдно адаптируя здесь код Аверроэса .
Гольф: (Только потому, что другие решили)
Вменяемый оригинальный код:
Еще один? Хорошо! У этого немного сглажено сглаживание, так что черные впереди намного более пологие.
К сожалению, сглаживание не показывает мелкие детали слоев винограда. Вот версия в оттенках серого, просто для сравнения:
источник
Javascript + HTML - не в гольф
Javascript-портирование алгоритма @Manuel Kansten - удивительно, как хорошо выглядят эти деревья.
Просто чтобы сделать что-то другое, я рисую изображение в цвете, затем на последнем шаге добавляю черно-белое изображение.
Я не знаю почему, но мой лес менее темный и менее пугающий по отношению к Мануэлю.
Протестируйте с помощью JSfiddle или запустите новый фрагмент ниже. Это НЕ быстро. Будьте терпеливы и наблюдайте, как растет лес.
источник
Context Free Art 3 (1133)
CF - это язык рендеринга векторной графики, поэтому я не могу избежать сглаживания. Я работал над этим, рисуя квадрат в одном и том же месте несколько
N
раз. Туман делается путем рисования маленьких квадратов в случайных местах.Больше рендеров с использованием разных номеров
источник
С: 301
Эта программа создает простое, абстрактное изображение в формате PGM . Вы можете открыть его с помощью GIMP.
Вот пример запуска:
источник
IFS с JAVA
Это решение использует систему итеративных функций (IFS) для описания одного (прото) дерева. IFS применяется 100 раз (= лес). Перед тем, как каждое дерево будет окрашено (посажено в лес), IFS немного изменяется на месте (стиль случайной прогулки). Так что каждое дерево выглядит немного по-другому.
Картинки из случайных семян:
Дизеринг не нужен.
источник
Я заметил здесь явное отсутствие хвойных, поэтому я кое-что взломал в Python.
Это был мой первый Code Golf, было очень весело!
источник
Этот ответ не так хорош, как я надеялся, но это ступенька к более трехмерной идее, над которой я работаю, и мне очень нравится идея на самом деле имитировать, какие деревья получают ресурсы
источник