Solve day 20.

This commit is contained in:
2024-05-30 15:37:22 -04:00
parent ecda947fb4
commit 8042b7f5e2
2 changed files with 57 additions and 1 deletions

55
2017/d20.py Normal file
View File

@@ -0,0 +1,55 @@
from lib import str_to_ints
from collections import defaultdict
def part_1(data):
ps = []
for i, line in enumerate(data.splitlines()):
ps.append(str_to_ints(line) + [i])
for _ in range(10_000):
for p in ps:
p[3] += p[6]
p[4] += p[7]
p[5] += p[8]
p[0] += p[3]
p[1] += p[4]
p[2] += p[5]
ps.sort(key=lambda p: abs(p[0]) + abs(p[1]) + abs(p[2]))
print(ps[0][-1])
def part_2(data):
ps = []
for i, line in enumerate(data.splitlines()):
ps.append(str_to_ints(line) + [i])
for _ in range(10_000):
poss = defaultdict(list)
for p in ps:
p[3] += p[6]
p[4] += p[7]
p[5] += p[8]
p[0] += p[3]
p[1] += p[4]
p[2] += p[5]
poss[(p[0], p[1], p[2])].append(p)
for pts in poss.values():
if len(pts) > 1:
for p in pts:
ps.remove(p)
print(len(ps))
def main():
data = open(0).read()
part_1(data)
part_2(data)
if __name__ == "__main__":
main()

View File

@@ -80,4 +80,5 @@ written in Python.
- Day 17: 55:00
- Day 18: 23:00
- Day 19: 45:00
- Day 20:
- Day 20: 9:55 (would have been 10th)
- Day 21: