Войти Создать аккаунт

Игра «Жизнь» · Шаг 3 из 4

Поколения до повтора

«Жизнь» можно крутить вечно, но интересна она, пока меняется. Как только поле повторило то, что уже было, дальше всё пойдёт по кругу — и смотреть больше нечего. Поколения удобно отдавать по одному, генератором, — и генератор сам знает, когда остановиться.

Что сделать

Отдавайте поколения по одному и остановитесь, как только узор пошёл по кругу.

Что приходит

  • zhivye — живые клетки в начале

  • shag — функция: живые клетки → живые клетки следующего поколения

Что вернуть

Генератор: отдаёт поколения начиная со следующего; повторилось бывшее — включая начальное — останавливается, не отдавая его.

Допишите функцию pokoleniya в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

В игре

Игра берёт из этого генератора по поколению на каждый такт. Когда он кончается, партия окончена: «узор повторяется» или «все вымерли». Решите шаг — и игра сама остановится, когда смотреть станет не на что.

Без этого шага: поколения идут, но повтор никто не замечает — партия не кончается сама.

Пример

Одна клетка в (0, 0) падает вниз на ряд за поколение и исчезает за третьим рядом. Генератор отдаёт {(1, 0)}, {(2, 0)}, {(3, 0)}, потом пустое множество. Следующее было бы снова пустым — повтор, и генератор останавливается.

В проверке вместо правила Конвея — подмена padenie: она и двигает клетку вниз.

Готовая игра →

Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.