7.FF7777.|77.-L-77.|F-7-.L77|7F|7-|-JF77 …
J7L-||LL7L|7-J.|.|7LL-|.F7|FJ7----J-7-|L …
.77L|7-|L-L7J.L7FJ.||F|F|-F-JJ.|..|LL-L. …
""" Il est plus facile de savoir si on coupe la boucle ou non
si on trace des diagonales (y = x + h) au lieu des horizontales """
def get_pos_interieures(grid):
pos_interieures = set()
for h in range(1 - len(grid[0]), len(grid)):
outside = True
for x in range(max(0,-h), min(len(grid[0]), len(grid) - h)):
y = x + h
lettre = grid[y][x]
if lettre in '-|FJ': # un seul critère pour savoir si on traverse la boucle
outside = not outside
elif lettre in '.':
if not outside:
pos_interieures.add((y,x))
return pos_interieures