我正在尝试编写一个函数,该函数获取一组元组作为参数,并检查给定的字符是否在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
这在大多数情况下都有效,但是当给定的字符形成两个单独的连续形状时不起作用,就像我上面给出的第二个错误示例一样。我试图通过在检查后删除每个元组来解决此问题,但我得到
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
错误。我能做些什么来解决这个问题?
森栏
相关分类