D'ailleurs, en utilisant la technique de l'exercice 2 on peut refaire l'exercice 1 en immédiat :
# Pas de zone comme pour l'exo1, on retourne les intervalles comme pour l'exo2classRobotSensor:def__init__(self,*args):self.sx,self.sy,self.bx,self.by,*self.other=argsself.distance=manhattan(*args)def__contains__(self,line):returnabs(self.sy-line)<=self.distancedef__getitem__(self,line):deltax=self.distance-abs(self.sy-line)returnself.sx-deltax,self.sx+deltaxsensors=[RobotSensor(*(int(x)forxinline))forlineindata]r=sorted([sensor[line_to_check]forsensorinsensorsifline_to_checkinsensor])xmin,xmax,holes=r[0][0],0,0fors,einr:ifs>xmax:holes+=s-xmaxxmax=max(xmax,e)beacons=len(set(s.bxforsinsensorsifs.by==line_to_check))result1=xmax-xmin+1-holes-beaconsprint(f"No beacon on {result1} positions"f" [{xmin}->{xmax}, {holes} holes and {beacons} beacons]\n")
[^] # Re: Force Brute.
Posté par Yth (Mastodon) . En réponse au message Avent du Code jour 15. Évalué à 2.
D'ailleurs, en utilisant la technique de l'exercice 2 on peut refaire l'exercice 1 en immédiat :
Le calcul est immédiat.