Завдання: Напишіть найкоротшу програму, яка реалізує клітинний автомат « Гра життя» Джона Х. Конвея . [ посилання ]
РЕДАГУВАТИ: Приблизно через тиждень змагань, я вибрав переможця: pdehaan , щоб мені вдалося перемогти рішення Matlab одним персонажем за допомогою perl.
Для тих, хто не чув про «Гра життя», ви берете сітку (в ідеалі нескінченну) квадратних клітинок. Клітини можуть бути живими (наповненими) або мертвими (порожніми). Ми визначаємо, які клітини живі на наступному кроці часу, застосовуючи такі правила:
- Будь-яка жива клітина, у якій менше двох живих сусідів, гине, ніби спричинена недостатньою чисельністю населення.
- Будь-яка жива клітина з більш ніж трьома живими сусідами гине, ніби через перенаселеність.
- Будь-яка жива клітина з двома-трьома живими сусідами живе до наступного покоління.
- Будь-яка мертва клітина з рівно трьома живими сусідами стає живою клітиною, ніби шляхом розмноження.
Ваша програма читатиме текстовий файл 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 (перезаписати, якщо він існує) у вказаному форматі
- Вам не потрібно мати справу з краями дошки (обгортка, нескінченні сітки. Тощо)
- EDIT: Ви дійсно повинні мати в своєму нового рядка вихідного файлу.
Переможець визначатиметься за підрахунком символів.
Удачі!