for i in range(len(matrix) - 1):
for j in range(len(matrix[i]) - 1):
У вас возникла проблема с разбором cols
, rows
- они также могут использовать их как границы цикла.
if matrix[i][j] == matrix[i][j + 1]:
Да, это обрабатывает одно направление.Попробуйте определить окрестность :
nbrhd = [
(0, 1),
(-1, 0),
(0, -1),
(1, 0),
]
Затем вы можете выполнить итерацию dx, dy
, добавив эти дельты к текущему местоположению.
Рассмотрите возможность использования numpy массив , а не списки списков, поэтому ваши индексы i
, j
не выходят назад.
алгоритм
Большойвам нужно выбрать алгоритм, записать описание вашего желаемого подхода и начать его реализацию.
Например, возможно, вы захотите рассматривать это как упражнение «считать хлебные крошки», выбираяих, чтобы избежать застрять в петле.Или, возможно, вы бы предпочли создать карту ценностей, показывающую, сколько будет стоить посещение каждого квадрата, начиная с определенной начальной точки.
Короче говоря, у вас есть сложная проблема, о которой вы не знаетекак решить, и вам нужно записать одну или несколько «простых» подзадач, которые вы можете решить и которые приближают вас к цели.