Compare commits
No commits in common. "abc28306b336b10a9c63e3f4ec9190365c0d6a32" and "a0249842eeeb479640f079a260436c959b9ef5f2" have entirely different histories.
abc28306b3
...
a0249842ee
2 changed files with 0 additions and 121 deletions
|
|
@ -1,71 +0,0 @@
|
||||||
from output import DD, ints
|
|
||||||
|
|
||||||
|
|
||||||
def solve(data):
|
|
||||||
p12 = []
|
|
||||||
for sl in [2, 10]:
|
|
||||||
seen = set([(0, 0)])
|
|
||||||
snake = [(0, 0)] * sl
|
|
||||||
for line in data.splitlines():
|
|
||||||
d = line[0]
|
|
||||||
for i in range(ints(line)[0]):
|
|
||||||
ns = []
|
|
||||||
hd, *tls = snake
|
|
||||||
r, c = hd
|
|
||||||
hd = r + DD[d][0], c + DD[d][1]
|
|
||||||
ns.append(hd)
|
|
||||||
for tl in tls:
|
|
||||||
r, c = tl
|
|
||||||
match (r - hd[0], c - hd[1]):
|
|
||||||
case (2, -1):
|
|
||||||
tl = r - 1, c + 1
|
|
||||||
case (-2, -1):
|
|
||||||
tl = r + 1, c + 1
|
|
||||||
case (-2, 1):
|
|
||||||
tl = r + 1, c - 1
|
|
||||||
case (2, 1):
|
|
||||||
tl = r - 1, c - 1
|
|
||||||
case (1, 2):
|
|
||||||
tl = r - 1, c - 1
|
|
||||||
case (-1, 2):
|
|
||||||
tl = r + 1, c - 1
|
|
||||||
case (-1, -2):
|
|
||||||
tl = r + 1, c + 1
|
|
||||||
case (1, -2):
|
|
||||||
tl = r - 1, c + 1
|
|
||||||
case (0, 2):
|
|
||||||
tl = r, c - 1
|
|
||||||
case (0, -2):
|
|
||||||
tl = r, c + 1
|
|
||||||
case (2, 0):
|
|
||||||
tl = r - 1, c
|
|
||||||
case (-2, 0):
|
|
||||||
tl = r + 1, c
|
|
||||||
case (2, -2):
|
|
||||||
tl = r - 1, c + 1
|
|
||||||
case (-2, -2):
|
|
||||||
tl = r + 1, c + 1
|
|
||||||
case (-2, 2):
|
|
||||||
tl = r + 1, c - 1
|
|
||||||
case (2, 2):
|
|
||||||
tl = r - 1, c - 1
|
|
||||||
ns.append(tl)
|
|
||||||
hd = tl
|
|
||||||
snake = ns
|
|
||||||
seen.add(tl)
|
|
||||||
p12.append(len(seen))
|
|
||||||
p1, p2 = p12
|
|
||||||
return p1, p2
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
with open("./input/09.txt", "r") as f:
|
|
||||||
inp = f.read().strip()
|
|
||||||
|
|
||||||
p1, p2 = solve(inp)
|
|
||||||
|
|
||||||
print(p1)
|
|
||||||
print(p2)
|
|
||||||
|
|
||||||
assert p1 == 6212
|
|
||||||
assert p2 == 2522
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
||||||
from output import sints
|
|
||||||
|
|
||||||
|
|
||||||
def solve(data):
|
|
||||||
x = 1
|
|
||||||
P = data.splitlines()
|
|
||||||
p1 = 0
|
|
||||||
c = 0
|
|
||||||
p = 0
|
|
||||||
running = True
|
|
||||||
busy = False
|
|
||||||
pixels = []
|
|
||||||
while running:
|
|
||||||
if not p < len(P) and not busy:
|
|
||||||
running = False
|
|
||||||
continue
|
|
||||||
line = P[min([p, len(P) - 1])]
|
|
||||||
if (c + 21) % 40 == 0:
|
|
||||||
p1 += (c + 1) * x
|
|
||||||
if c % 40 == 0:
|
|
||||||
pixels.append("\n")
|
|
||||||
pixels.append("■" if (x - 1) <= (c % 40) <= (x + 1) else " ")
|
|
||||||
if busy:
|
|
||||||
busy = False
|
|
||||||
x += int(sints(line)[0])
|
|
||||||
p += 1
|
|
||||||
c += 1
|
|
||||||
continue
|
|
||||||
if line.startswith("noop"):
|
|
||||||
p += 1
|
|
||||||
c += 1
|
|
||||||
continue
|
|
||||||
busy = True
|
|
||||||
c += 1
|
|
||||||
p2 = None
|
|
||||||
p2 = "".join(pixels)
|
|
||||||
return p1, p2
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
with open("./input/10.txt", "r") as f:
|
|
||||||
inp = f.read().strip()
|
|
||||||
|
|
||||||
p1, p2 = solve(inp)
|
|
||||||
|
|
||||||
print(p1)
|
|
||||||
print(p2)
|
|
||||||
|
|
||||||
assert p1 == 11820
|
|
||||||
# assert p2 == "EPJBRKAH"
|
|
||||||
Loading…
Add table
Reference in a new issue