Соревнование
Вы должны написать полную программу, которая берет семь чисел из STDIN и печатает двумерную историю клеточного автомата (CA) в STDOUT. Это код гольф.
Форматирование ввода На входе будет семь целых чисел / строк, разделенных запятыми. Первое число - это номер правила в соответствии с кодом Wolfram (стандартное имя для каждого правила). Второе - начальная начальная конфигурация. Третий и четвертый описывают, какой шаблон и сколько раз он должен быть добавлен слева от начальной конфигурации. в качестве дополнения. Пятый и шестой делают то же самое для правой стороны. Последнее число - это число поколений, которые запускают симуляцию.
Итак, пример ввода 90,11,0,4,0,4,5
. Это должно сказать вашей программе, что вы используете правило 90 . Он также должен сообщить программе, что вы хотите, чтобы начальная конфигурация была 11
со строкой, 0
добавленной 4 раза к обоим концам, поэтому фактический начальный шаблон - это 0000110000
. Это также говорит вашей программе запускать эту симуляцию в течение 5 поколений.
Выходные данные Ваша программа должна печатать весь массив ячеек каждого поколения (разделенных новыми строками), чтобы выходные данные представляли собой диаграмму пространства-времени ЦС. Для каждого поколения состояние каждой ячейки определяется ее состоянием и состояниями ячеек непосредственно слева и справа в соответствии с правилом, предоставленным в качестве входных данных. Симуляция должна обтекать края. Первое, что должно быть напечатано, это начальный массив как gen. 0.
Ввод 90,11,0,4,0,4,5
должен привести к следующему выводу как можно точнее.
0000110000
0001111000
0011001100
0111111110
1100000011
0110000110
Обратите внимание, что начальное состояние не входит в пять поколений. Также обратите внимание, что симуляция оборачивается по краям.
Больше примеров
вход:
184,1100,01,2,01,1,4
выход:
0101110001
1011101000
0111010100
0110101010
0101010101
вход:
0,1011,1,0,0,1,2
выход:
10110
00000
00000
Больше информации о том, как работает 1D CA и как они пронумерованы