Каждой клетке в похожем на жизнь клеточном автомате нужен только один бит, чтобы представить ее, поскольку она может быть только живой или мертвой. Это означает, что есть только два цвета; довольно скучный.
Нормальные изображения имеют 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-м слое (он обязательно будет работать в обычной жизни):
Размещение интересных эпизодов или даже анимации настоятельно рекомендуется.
источник
Ответы:
МАТЛАБ: 275
Мой любимый из параметров, которые я попробовал
45678
,568
таков: после постепенного распада образуется небо мерцающих звезд. На этом изображении изображен «распад упорства памяти».Ungolfed GIF-код (принимает PNG без расширения):
Гольф-код, который принимает полное имя файла (это может быть GIF, JPEG и, возможно, другие вещи) и записывает в
out.png
:Ранее обнаруженный факт заключается в том
12
, что параметры1
можно использовать для создания коврового фрактала Серпинского. Вот один со случайным образом расположенным начальным значением в каждом бите:источник
Математика, 359
Я беру входные данные из строковых подсказок в следующем порядке: (1) правила рождения, (2) правила выживания, (3) имя файла, и я отображаю результат прямо в Mathematica.
Это должно быть в состоянии справиться с большинством популярных форматов, если файл на самом деле имеет 24-битную глубину.
Вот несколько нелепая версия:
Вот два примера использования аватара Rainbolt :
20 поколений, использующих стандартную игру жизни
[3,23]
:20 поколений с использованием
[456,34567]
:А вот и GIF первых 200 поколений последнего правила. GIF пропускает каждый третий кадр, потому что иначе я не смог бы сжать его ниже 2 МБ:
источник
Python 2, 427
Для тех, у кого нет Mathematica;)
Он запрашивает имя файла, затем случаи рождения, затем случаи выживания. Таким образом , для нормальных правил жизни вы могли бы вход
test.bmp
, затем3
, затем23
(без кавычек или что - нибудь не требуется).Я использовал форматирование строк для индексации и рекомбинации цветовых битов, хотя, боюсь, это не оптимально.
Обратите внимание, что это довольно медленно.
пример
Светлая жизнь и великое искусство смешиваются не так ли? (Правило
36
/23
.)Оригинал / Поколение 1
Поколение 2 / Поколение 3
источник
Ява, 1085 байт
Примеры (правило 368/245):
Быт 0:
Быт 1:
Быт 2:
Быт 3:
Быт 4:
источник