Игра на живот

Предадени решения

Краен срок:
02.04.2012 23:59
Точки:
6

Срокът за предаване на решения е отминал

Играта "живот"

Промяна

Имахме бъг в примерния тест, за което се извиняваме. В GitHub ще намерите новият тест.

Играта "живот" на Конуей е вид клетъчен автомат. Играта се играе от 0 (нула) на брой играчи, върху повърхнина разделена на квадратни клетки. Всяка клетка е или жива, или мъртва. "Играта" протича на ходове, като състоянието на всеки ход се определя от състоянието на предишния и от следните правила (из wikipedia):

  1. Всяка жива клетка с по-малко от две живи съседни клетки умира (от самота).
  2. Всяка жива клетка с повече от три живи съседни клетки умира (от пренаселеност).
  3. Всяка жива клетка с две или три живи съседни клетки остава жива и на следващата итерация.
  4. Всяка мъртва клетка с точно три живи съседни клетки се превръща в жива клетка.

Тъй като е пролет и настроението ни е повишено, решихме да ви улесним като:

  • Не ви тормозим със сложни топологии, а само с Ограничена равнина (48x48)
  • Ви дадем функции за създаване на случайна дъска и за нейното печатане.

Структурата на дъската е един списък за редове, съдържащ вложени списъци със стойностите на всяка клетка от реда. Стойноста на всяка клетка се означава с 0, ако е мъртва или 1, ако е жива. За ваше улеснение добавяме по един ред/колона с нули на всяка страна от дъската. Дъска 48x48 трябва да съдържа 50 списъка с 50 стойности всеки.

От вас се иска да свалите solution.py и да имплементирате функцията step_board(), която променя аргумента си board до следващата стъпка от играта. За да знаете дали сте успели изпълнете тестовете с:

python3 sample_test.py

Подсказка: Ние ще гледаме само най-ниския бит за всяка клетка, тъй че 1, 3, 5, 7 все са живи, докато 0, 2, 4, 8 все са мъртви. Възползвайте се.