#seisund: [x, y, dx, dy] def uus(seisund, dx, dy): kx=seisund[2]+dx ky=seisund[3]+dy if -7<=kx<=7 and -7<=ky<=7: seisund2=[seisund[0]+kx, seisund[1]+ky, kx, ky] return seisund2 return False def uued(seisund): return list(filter(None, [uus(seisund, d[0], d[1]) for d in [[-1, 0], [1, 0], [0, -1], [0, 1]]])) def puutub(p1, p2, p3, p4): v1=[p2[0]-p1[0], p2[1]-p1[1]] v2=[p4[0]-p3[0], p4[1]-p3[1]] if v1[0]!=0: a1=v1[1]/v1[0] b1=p1[1]-a1*p1[0] if v2[0]!=0: a2=v2[1]/v2[0] b2=p3[1]-a1*p3[0] if v1[0]==0: if v2[0]==0: if p1[0]==p3[0]: if min(p3[1], p4[1]) <= p1[1] <=max(p3[1], p4[1]) or min(p3[1], p4[1]) <= p2[1] <=max(p3[1], p4[1]) or min(p1[1], p2[1]) <= p3[1] <=max(p1[1], p2[1]) or min(p1[1], p2[1]) <= p4[1] <=max(p1[1], p2[1]): return True return False else: pass a1=v1[1]/v1[0] b1=p1[1]-a1*p1[0] a2=v2[1]/v2[0] b2=p3[1]-a1*p3[0] x=(b2-b1)/(a1-a2) y=a1*x+b1 print(a1, b1, a2, b2) print(x, y) puutub([0, 0], [3, 3], [0, 3], [3, 0]) sihtkoht=[0, 5] alg=[0, 0, 0, 0] leitud=[alg] tagasitee={} uuritud=[] veel=True loppseisund="?" while veel: uuritav=leitud.pop(0) for koht in uued(uuritav): if not (koht in leitud or koht in uuritud): leitud.append(koht) tagasitee["_".join(map(str,koht))]="_".join(map(str,uuritav)) if koht[:2]==sihtkoht: loppseisund="_".join(map(str,koht)) veel=False uuritud.append(uuritav) loendur=0 while loppseisund in tagasitee: loppseisund=tagasitee[loppseisund] loendur+=1 print(loppseisund) print(loendur)