Compare commits
4 Commits
383ff93502
...
a3e4290ccd
Author | SHA1 | Date | |
---|---|---|---|
a3e4290ccd | |||
117d3d58d5 | |||
8cb5086749 | |||
036a563d8f |
@ -6,36 +6,30 @@ scores = []
|
|||||||
for ii in range(len(data)):
|
for ii in range(len(data)):
|
||||||
for jj in range(len(data[ii])):
|
for jj in range(len(data[ii])):
|
||||||
top = data[ii][jj]
|
top = data[ii][jj]
|
||||||
h = -1
|
|
||||||
a = 0
|
a = 0
|
||||||
|
i = ii
|
||||||
for j in range(jj+1, len(data[ii])):
|
for j in range(jj+1, len(data[ii])):
|
||||||
a += 1
|
a += 1
|
||||||
h = data[ii][j]
|
if data[i][j] >= top:
|
||||||
if h >= top:
|
|
||||||
break
|
break
|
||||||
|
|
||||||
b = 0
|
b = 0
|
||||||
h = -1
|
|
||||||
for j in reversed(range(0, jj)):
|
for j in reversed(range(0, jj)):
|
||||||
b += 1
|
b += 1
|
||||||
h = data[ii][j]
|
if data[i][j] >= top:
|
||||||
if h >= top:
|
|
||||||
break
|
break
|
||||||
|
|
||||||
|
j = jj
|
||||||
c = 0
|
c = 0
|
||||||
h = -1
|
|
||||||
for i in range(ii+1, len(data)):
|
for i in range(ii+1, len(data)):
|
||||||
c += 1
|
c += 1
|
||||||
h = data[i][jj]
|
if data[i][j] >= top:
|
||||||
if h >= top:
|
|
||||||
break
|
break
|
||||||
|
|
||||||
d = 0
|
d = 0
|
||||||
h = -1
|
|
||||||
for i in reversed(range(0, ii)):
|
for i in reversed(range(0, ii)):
|
||||||
d += 1
|
d += 1
|
||||||
h = data[i][jj]
|
if data[i][j] >= top:
|
||||||
if h >= top:
|
|
||||||
break
|
break
|
||||||
|
|
||||||
print(ii,jj,a,b,c,d)
|
print(ii,jj,a,b,c,d)
|
||||||
|
42
day09/day09.py
Normal file
42
day09/day09.py
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
def go(p, dir):
|
||||||
|
x,y = p
|
||||||
|
if dir == "U": y += 1
|
||||||
|
elif dir == "D": y -= 1
|
||||||
|
elif dir == "L": x -= 1
|
||||||
|
elif dir == "R": x += 1
|
||||||
|
return x,y
|
||||||
|
|
||||||
|
def follow(h, t):
|
||||||
|
if abs(h[0] - t[0]) > 1 or abs(h[1] - t[1]) > 1:
|
||||||
|
x,y = t
|
||||||
|
x += sgn(h[0] - t[0])
|
||||||
|
y += sgn(h[1] - t[1])
|
||||||
|
t = x,y
|
||||||
|
return t
|
||||||
|
|
||||||
|
def sgn(x):
|
||||||
|
return (x > 0) - (x < 0)
|
||||||
|
|
||||||
|
def solve(n):
|
||||||
|
R = [(0,0)]*n
|
||||||
|
visited = set([R[-1]])
|
||||||
|
for line in open("input"):
|
||||||
|
dir, count = line.split()
|
||||||
|
for _ in range(int(count)):
|
||||||
|
R[0] = go(R[0], dir)
|
||||||
|
for i in range(1, len(R)):
|
||||||
|
t = follow(R[i-1], R[i])
|
||||||
|
if t == R[i]:
|
||||||
|
# optimization: if a knot doesn't move,
|
||||||
|
# none of the knots after it will either
|
||||||
|
break
|
||||||
|
R[i] = t
|
||||||
|
visited.add(R[-1])
|
||||||
|
#print(R)
|
||||||
|
return len(visited)
|
||||||
|
|
||||||
|
A1 = solve(2)
|
||||||
|
print(A1)
|
||||||
|
|
||||||
|
A2 = solve(10)
|
||||||
|
print(A2)
|
2000
day09/input
Normal file
2000
day09/input
Normal file
File diff suppressed because it is too large
Load Diff
8
day09/sample
Normal file
8
day09/sample
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
R 4
|
||||||
|
U 4
|
||||||
|
L 3
|
||||||
|
D 1
|
||||||
|
R 4
|
||||||
|
D 1
|
||||||
|
L 5
|
||||||
|
R 2
|
Loading…
x
Reference in New Issue
Block a user