Convay's Life Python

Начал знакомиться с питоном - решил реализовать простейшую версию игры "Жизнь" Конвея, но на данном этапе не могу понять, почему она работает не верно - некоторые клетки оживают, хотя соседей у них менее или более 3, а некоторые убивает, хотя соседей 2-е или трое. Код залил на гитхаб, потому что тут его было бы многовато: код.

Лично я грешу на 2 проблемы: первое это правильно ли указаны координаты(в самом начале при чтении построчно, x и y должны соответствовать осям абсцисс и ординат соответственно) а второе это проблемы с записью и чтением в вспомогательный список(new_universe), но где именно ошибка - я не знаю

Буду благодарен за любую помощь!


Ответы (1 шт):

Автор решения: CrazyElf

Вы пишете новые данные в ту же самую матрицу, на основе которой вычисляете "новую вселенную", у вас universe и new_universe указывают на одну и ту же область памяти. Поэтому ваши вычисления базируются на данных, уже частично изменённых на текущей итерации и из-за этого заведомо не являются корректными.

Вам нужно явным образом копировать вашу матрицу вселенной в новый объект:

while i < k:
    universe = new_universe.copy()
→ Ссылка