Solve 2020 day 23

This commit is contained in:
2024-10-06 18:50:29 -04:00
parent 6475681cfb
commit ea28a17ab9
2 changed files with 75 additions and 1 deletions

73
2020/d23.py Normal file
View File

@@ -0,0 +1,73 @@
from lib import get_data
data = get_data(__file__)
cups = list(map(int, list(data.strip())))
min_label = min(cups)
max_label = max(cups)
cmap = {}
for i in range(len(cups)):
cmap[cups[i]] = cups[(i + 1) % len(cups)]
cc = cups[0]
for _ in range(100):
a = cmap[cc]
b = cmap[a]
c = cmap[b]
cmap[cc] = cmap[c]
dest = cc - 1
while dest in {a, b, c} or dest < min_label:
dest = dest - 1
if dest < min_label:
dest = max_label
cmap[c] = cmap[dest]
cmap[dest] = a
cc = cmap[cc]
s = ""
cup = cmap[1]
while cup != 1:
s += str(cup)
cup = cmap[cup]
print(s)
cups = list(map(int, list(data.strip())))
current = max(cups) + 1
while len(cups) != 1_000_000:
cups.append(current)
current += 1
min_label = min(cups)
max_label = max(cups)
cmap = {}
for i in range(len(cups)):
cmap[cups[i]] = cups[(i + 1) % len(cups)]
cc = cups[0]
for _ in range(10_000_000):
a = cmap[cc]
b = cmap[a]
c = cmap[b]
cmap[cc] = cmap[c]
dest = cc - 1
while dest in {a, b, c} or dest < min_label:
dest = dest - 1
if dest < min_label:
dest = max_label
cmap[c] = cmap[dest]
cmap[dest] = a
cc = cmap[cc]
a = cmap[1]
b = cmap[a]
print(a * b)