Beaucoup moins académique que Guillaume, très itératif, les deux parties en 22 lignes:
boxes=[tuple(map(int,line.split(",")))forlineinopen(0).read().strip().split('\n')]clusters=dict()forc,(_,(i,j))inenumerate(sorted(((x-l)**2+(y-m)**2+(z-n)**2,(i,i+1+j))fori,(x,y,z)inenumerate(boxes)forj,(l,m,n)inenumerate(boxes[i+1:]))):icl=[[kfor(k,v)inclusters.items()ifiinv]or["ALONE"]][0][0]jcl=[[kfor(k,v)inclusters.items()ifjinv]or["ALONE"]][0][0]match(icl=="ALONE",jcl=="ALONE",icl==jcl):case(False,False,False):# both belongs to different clusters, merge clustersclusters[f'{i}_{j}']=clusters[icl]|clusters[jcl]delclusters[icl]delclusters[jcl]case(False,True,_):clusters[icl].add(j)case(True,False,_):clusters[jcl].add(i)case(True,True,_):# both out of clusters, create a new cluster with themclusters[f'{i}_{j}']={i,j}# else (False, False, True), i and j are in the same clusterifc==1000:s=sorted(map(len,clusters.values()))print(s[-1]*s[-2]*s[-3])ifc>1000andlen(clusters)==1:print(boxes[i][0]*boxes[j][0])# 5267 connsbreak
[^] # Re: Jour 8
Posté par steph1978 . En réponse au journal Advent of Code 2025. Évalué à 2.
Beaucoup moins académique que Guillaume, très itératif, les deux parties en 22 lignes: