Каждой клетке в похожем на жизнь клеточном автомате нужен только один бит, чтобы представить ее, поскольку она может быть только живой или мертвой. Это означает, что есть только два цвета; довольно скучный.
Нормальные изображения имеют 24 бита на пиксель (8 в каждом из RGB). Это означает, что на обычном изображении с пикселями в качестве ячеек вы можете симулировать 24 реалистичные игры одновременно!
Вызов
Ваша задача - написать программу, которая будет применять одно поколение правил похожего на жизнь клеточного автомата к 24-битному изображению глубины (в любом известном формате, который вам нравится) и выводить полученное изображение.
Каждый из 24 слоев будет использовать один и тот же жизненный набор правил, строго в своем собственном слое. 24 слоя не взаимодействуют друг с другом.
Также
- Нули - это мертвые клетки, а те - живые.
- Граничные условия являются периодическими (образующими тор).
- Любые размеры изображения должны работать.
Ввод, вывод
Ваша программа должна принимать 3 аргумента через стандартный ввод или командную строку (или ближайший эквивалент вашего языка):
- Имя входного файла изображения.
- Строка цифр от 0 до 8 в порядке возрастания, которая обозначает, когда рождаются новые клетки:
- Если цифра d находится в строке, то мертвые клетки оживают, если у них есть d живых соседей.
- Пример:
3
нормальная жизнь - мертвые клетки с ровно 3 живыми соседями оживают.
- Строка цифр от 0 до 8 в порядке возрастания, которая обозначает, когда существующие ячейки выживают:
- Если цифра d находится в строке, то живые клетки с d живыми соседями выживают до следующего поколения, в противном случае они умирают.
- Пример:
23
нормальная жизнь - только клетки с ровно 2 или 3 соседями доживают до следующего раунда.
Обратите внимание, что соседство Мура всегда используется. Прочитайте это или это для получения дополнительной информации о том, что точно определяет реалистичный автомат и много интересных наборов правил.
Выходное изображение 1-го поколения должно отображаться или сохраняться как out.png
( bmp
или как угодно).
представление
Самый короткий код в байтах побеждает.
Вы должны включить по крайней мере одно тестовое изображение и три его непосредственных последующих поколения для некоторого нетривиального набора правил. Используйте свой аватар и обычные правила жизни, если вы не можете придумать ничего лучше.
Если вам нравится, вы можете использовать это Gosper Glider Gun, где единственные живые биты находятся в зеленом 128-м слое (он обязательно будет работать в обычной жизни):
Размещение интересных эпизодов или даже анимации настоятельно рекомендуется.