1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
area = [[],[]]
start = (x,y) #de mémoire x c'est l'axe vertical et y l'axe horizontal
def get_all_valide_cases(pos, added, k):
x, y = pos
poles = [(x-1, y),(x,y-1),(x,y+1),(x+1,y)]
next_cases = []
k+=1
for X, Y in poles:
if X < 0 or Y <0:
continue
if (X, Y) not in added:
try:
if area[X][Y]==1 or area[X][Y]>k:
next_cases.append((X, Y, k))
added.append((X, Y))
except IndexError:
pass
return next_cases, added
def main():
path_to_go = [(start[0], start[1], 1)]
added = [start,start]
while path_to_go:
x, y, k = path_to_go.pop(0)
next_cases, added = get_all_valide_cases((x, y), added, k)
for _ in next_cases:
added.pop(0)
path_to_go.extend(next_cases)
area[x][y]=k |
Partager