day 9 python part 2
parent
036a563d8f
commit
8cb5086749
|
@ -31,6 +31,25 @@ def follow():
|
||||||
y += sgn(H[1] - T[1])
|
y += sgn(H[1] - T[1])
|
||||||
return x,y
|
return x,y
|
||||||
|
|
||||||
|
def follow2(h, t):
|
||||||
|
if h == t:
|
||||||
|
return t
|
||||||
|
if abs(h[0] - t[0]) <= 1 and abs(h[1] - t[1]) <= 1:
|
||||||
|
return t
|
||||||
|
if h[1] == t[1]:
|
||||||
|
x,y = t
|
||||||
|
x = h[0] - sgn(h[0] - t[0])
|
||||||
|
return x,y
|
||||||
|
if h[0] == t[0]:
|
||||||
|
x,y = t
|
||||||
|
y = h[1] - sgn(h[1]-t[1])
|
||||||
|
return x,y
|
||||||
|
# diagonal
|
||||||
|
x,y = t
|
||||||
|
x += sgn(h[0] - t[0])
|
||||||
|
y += sgn(h[1] - t[1])
|
||||||
|
return x,y
|
||||||
|
|
||||||
def sgn(x):
|
def sgn(x):
|
||||||
if x==0: return 0
|
if x==0: return 0
|
||||||
if x > 0: return 1
|
if x > 0: return 1
|
||||||
|
@ -44,7 +63,22 @@ for line in open("input"):
|
||||||
H = go(H, dir)
|
H = go(H, dir)
|
||||||
T = follow()
|
T = follow()
|
||||||
visited.add(T)
|
visited.add(T)
|
||||||
print(H,T)
|
#print(H,T)
|
||||||
print(len(visited))
|
print(len(visited))
|
||||||
|
|
||||||
|
|
||||||
|
R = [(0,0)]*10
|
||||||
|
visited = set([R[-1]])
|
||||||
|
for line in open("input"):
|
||||||
|
dir, count = line.split()
|
||||||
|
count = int(count)
|
||||||
|
for _ in range(count):
|
||||||
|
R[0] = go(R[0], dir)
|
||||||
|
for i in range(1,len(R)):
|
||||||
|
t = follow2(R[i-1], R[i])
|
||||||
|
if t == R[i]:
|
||||||
|
break
|
||||||
|
R[i] = t
|
||||||
|
visited.add(R[-1])
|
||||||
|
print(R)
|
||||||
|
print(len(visited))
|
||||||
|
|
Loading…
Reference in New Issue