Я пытаюсь написать функцию, которая получает набор кортежей в качестве параметра и проверяет, образуют ли данные символы непрерывную форму в сетке NxN. Кортежи - это индексы символов в списках, которые образуют сетку. Форма является непрерывной, если персонаж находится непосредственно под, над или по бокам другого символа.
continuous not continous not continous
xxxxx xxxxx ooxxx
xxoox xxoox xxxxx
xxxoo ooxxx xxoox
xxxoo oxxxx xxoox
xxxxo xoxxx xxxxx
========================
def connected(characters):
result = True
for i in characters:
if (i[0]+1, i[1]) in characters or (i[0]-1, i[1]) in characters or (i[0], i[1]+1) in characters or (i[0], i[1]-1) in characters:
result = True
characters.discard(i)
else:
result = False
return result
return result
>>>connected({(1, 3), (2, 1), (2, 3), (0, 3), (1, 1)})
будет формировать эту форму, поэтому она не будет не будет непрерывным, но мой код думает, что это так.
xxxo
xoxo
xoxo
xxxx
Это работает в большинстве случаев, но не работает, когда данные символы образуют две отдельные непрерывные фигуры, как 2-й неправильный пример, который я привел выше. Я попытался решить эту проблему, удалив каждый кортеж после того, как он был проверен, но я получаю ошибку
Traceback (most recent call last):
File "C:/Users/User/PycharmProjects/untitled6/venv/1.py", line 47, in <module>
connected({(1, 2), (1, 3), (2, 2), (0, 3), (0, 4)})
File "C:/Users/User/PycharmProjects/untitled6/venv/1.py", line 15, in connected
for i in grid:
RuntimeError: Set changed size during iteration
. Что я могу сделать, чтобы решить эту проблему?