"Непоследовательный" обход массивов
Совсем недавно увлекшись идеей написания своего варианта реализации алгоритма "Клеточных автоматов" Life заметил следующий нюанс:
При последовательном обходе массивов в первую очередь обрабатыватся "элементы-автоматы" с наименьшими координатами в массиве.
В частности при перечении Орестности Мура двух близлежащий автоматов, указанных на рисунке, сначала будет произведены действия Автомата I, а затем действия Автомата II.
Мне удалось реализовать алгоритм "нелинейного" обхода массива, идея заключается в использовании генератора псевдослучайных чисел для выбора элементов массива.
Однако этот метод создает избыточность итераций цикла обработки массива.
from random import randint
SomeData = [[i for i in range(10)] for j in range(5)]
Cols = len(SomeData[0])
Rows = len(SomeData);PunchCard = [[True for i in range(Cols)] for j in range(Rows)]
while sum(map(sum, PunchCard)) > 0 :
rndCols = randint(0, Cols-1)
rndRows = randint(0, Rows-1)
if PunchCard[rndRows][rndCols]: ## "Punch"
##Do some action
SomeData[rndRows][rndCols] += 1
##*****************************
PunchCard[rndRows][rndCols] = False ## Mark as "Space"
##Show result
for i in range(Rows):
print(SomeData[i])

Программирование на python
1K постов12K подписчик
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• конструктивность комментариев
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
• нарушать правила Пикабу