Avec un lib de gestion des polygone, j'ai fini par trouver pour la partie 2.
Mais un peu l'impression de tricher et de sortir le bazooka.
Le code pour la partie 1:
importsysI=sys.stdin.read().splitlines()G=[list(l)forlinI]W=len(G[0])H=len(G)# look for SS=Noneforyinrange(H):if(x:=I[y].find("S"))>-1:S=(x,y)breakD={'u':{'|':(0,-1,'u'),'F':(1,0,'r'),'7':(-1,0,'l'),},'r':{'-':(1,0,'r'),'J':(0,-1,'u'),'7':(0,1,'d'),},'d':{'|':(0,1,'d'),'L':(1,0,'r'),'J':(-1,0,'l'),},'l':{'-':(-1,0,'l'),'L':(0,-1,'u'),'F':(0,1,'d'),},}N=1x0,y0=SP=(x0+1,y0,'r')# start at S and go rightfor_inrange(100_000):x,y,d=PN+=1z=G[y][x]ifz=='S':breakdx,dy,nd=D[d].get(z)P=(x+dx,y+dy,nd)print(N//2)
[^] # Re: j'ai adoré
Posté par steph1978 . En réponse au message Advent of Code 2023 : Jour 10. Évalué à 2. Dernière modification le 10 décembre 2023 à 15:17.
Avec un lib de gestion des polygone, j'ai fini par trouver pour la partie 2.
Mais un peu l'impression de tricher et de sortir le bazooka.
Le code pour la partie 1:
Sinon, c'est joli