Задача: Напишите кратчайшую программу, которая реализует клеточный автомат Джона Х. Конвей "Игра жизни". [ссылка]
РЕДАКТИРОВАТЬ:. Примерно через неделю соревнований я выбрал победителя: pdehaan, за то, что он смог победить решение Matlab одним символом с помощью perl.
Для тех, кто не слышал об Game of Life, вы берете сетку (идеально бесконечную) квадратных ячеек. Клетки могут быть живыми (заполненными) или мертвыми (пустыми). Мы определяем, какие ячейки живы в следующем шаге времени, применяя следующие правила:
- Любая живая клетка с менее чем двумя живыми соседями умирает, как если бы она вызвана неполным населением.
- Любая живая клетка с более чем тремя живыми соседями умирает, как если бы она переполнена.
- Любая живая ячейка с двумя или тремя живыми соседями живет следующим поколением.
- Любая мертвая ячейка с ровно тремя живыми соседями становится живой клеткой, как бы размножением.
Ваша программа будет читать текстовый файл ASCII размером 40x80 символов, указанный в качестве аргумента командной строки, а также количество выполняемых итераций (N). Наконец, он выведет в файл ASCII out.txt состояние системы после N итераций.
Вот пример запуска с соответствующими файлами:
in.txt:
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
..................................XX............................................
..................................X.............................................
.......................................X........................................
................................XXXXXX.X........................................
................................X...............................................
.................................XX.XX...XX.....................................
..................................X.X....X.X....................................
..................................X.X......X....................................
...................................X.......XX...................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
Итерация 100 раз:
Q:\>life in.txt 100
Результирующий вывод (out.txt)
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
..................................XX............................................
..................................X.X...........................................
....................................X...........................................
................................XXXXX.XX........................................
................................X.....X.........................................
.................................XX.XX...XX.....................................
..................................X.X....X.X....................................
..................................X.X......X....................................
...................................X.......XX...................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
Правила:
- Для чтения/записи файлов вам необходимо использовать ввод/вывод файлов.
- Вам необходимо принять входной файл и количество итераций в качестве аргументов
- Вам нужно сгенерировать out.txt(переписать, если он существует) в указанном формате
- Вы не должны иметь дело с краями доски (wraparound, бесконечные сетки .etc)
- EDIT: вы do должны иметь новые строки в своем выходном файле.
Победитель будет определен по количеству символов.
Удачи!