Войдите, чтобы продолжить.
Войдите, чтобы продолжить.
Игра «Жизнь» · Шаг 2 из 4
Следующее поколение
Правило Конвея умещается в одну фразу. Пустая клетка оживает, если живых соседей ровно три. Живая клетка живёт дальше, если их два или три. Все остальные — пустеют: одним скучно, другим тесно.
Что сделать
Сделайте одно поколение «Жизни» по правилу Конвея.
Что приходит
zhivye— живые клеткиvysotaиshirina— размер поляpodschet— ваш шаг 1, приходит аргументом
Что вернуть
Множество живых клеток следующего поколения: у кого соседей ровно 3 и живые, у кого 2; клетки за краем поля не попадают.
Допишите функцию sleduyushchee в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра считает каждое следующее поколение этой функцией — раз в такт. Решите шаг — и время пойдёт: узоры начнут двигаться и меняться.
Без этого шага: время стоит — поколение такое же, как было.
Подсчёт сказал: у (0, 1) три соседа, у (1, 1) — два, у (2, 2) — один. (0, 1) пустая, но у неё три соседа — рождается. (1, 1) живая с двумя — выживает. (2, 2) — нет. Функция возвращает {(0, 1), (1, 1)}.
В проверке podschet — подмена, которая отдаёт готовый словарь: так второй шаг проверяется без первого.
Функция принимает живые клетки, размер поля (рядов, столбцов) и функцию подсчёта podschet (как в шаге 1: живые клетки → словарь «клетка → соседей»). Возвращает множество живых клеток следующего поколения: клетки, у которых соседей ровно 3, и живые клетки, у которых соседей 2. Клетки за краем поля (ряд или столбец меньше нуля, не меньше размера) в ответ не попадают.
Образцовый тест целиком
def podschet(zhivye):
return {(0, 1): 3, (1, 1): 2, (2, 2): 1}
sorted(sleduyushchee([(1, 1)], 3, 3, podschet))
[(0, 1), (1, 1)]
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.