A peu près pareil pour moi. Mais simple BFS a la place de Dijkstra.
Code non cleané et non optimisé (pas besoin aujourd'hui, phew).
defincluded(cube):foriinrange(3):globalmax_coordinateifcube[i]<-1orcube[i]>max_coordinate+1:returnFalsereturnTruedefget_adjacents(cube):x,y,z=cubeforadjin[(x,y,z+1),# up(x,y,z-1),# down(x-1,y,z),# left(x+1,y,z),# right(x,y-1,z),# back(x,y+1,z),# front]:ifincluded(adj):yieldadjdroplet=[]max_coordinate=0withopen("2022/input_files/day18")asf:fordatainf:cube=tuple(map(int,data.rstrip().split(",")))max_coordinate=max(max_coordinate,max(cube))droplet.append(cube)# Start BFS on top left corner to find exterior areaexterior=[(0,0,0)]queue=[]queue.append((0,0,0))whilequeue:cube=queue.pop(0)foradjinget_adjacents(cube):ifadjnotinexteriorandadjnotindroplet:exterior.append(adj)queue.append(adj)part1_surface=0part2_surface=0forcubeindroplet:foradjinget_adjacents(cube):ifadjnotindroplet:part1_surface+=1ifadjinexterior:part2_surface+=1print(f"{part1_surface=}")print(f"{part2_surface=}")
Excusez l'absence d'accents dans mes commentaires, j'habite en Australie et n'ai pas de clavier francais sous la main.
[^] # Re: Plus cool que les jours précédents
Posté par Eric P. . En réponse au message Avent du Code, jour 18. Évalué à 3.
A peu près pareil pour moi. Mais simple BFS a la place de Dijkstra.
Code non cleané et non optimisé (pas besoin aujourd'hui, phew).
Excusez l'absence d'accents dans mes commentaires, j'habite en Australie et n'ai pas de clavier francais sous la main.