Skip to content

Commit d881e29

Browse files
committed
Clean up solution
1 parent 674319c commit d881e29

File tree

1 file changed

+10
-20
lines changed

1 file changed

+10
-20
lines changed

2025/day10/solution.py

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,41 +22,31 @@ def solve_part1(diagram, buttons):
2222
for i, ch in enumerate(lights)
2323
)
2424
q.append((n + 1, new_lights))
25-
2625

27-
# Part 1
28-
ans = 0
29-
for line in inp:
30-
diagram, *buttons, reqs = line.split(" ")
31-
diagram = diagram[1:-1]
32-
buttons = [set(map(int, re.findall(r"\d+", bs))) for bs in buttons]
33-
ans += solve_part1(diagram, buttons)
3426

35-
print(ans)
36-
37-
# Part 2
3827
def solve_part2(reqs, buttons):
39-
buttons_vecs = [tuple(1 if i in bs else 0 for i in range(len(reqs))) for bs in buttons]
28+
buttons = [tuple(1 if i in bs else 0 for i in range(len(reqs))) for bs in buttons]
4029
ns = [Int(f"n{i}") for i in range(len(buttons))]
4130
opt = Optimize()
4231
for n in ns:
4332
opt.add(n >= 0)
44-
for i in range(len(reqs)):
45-
eq = sum(button[i]*ns[j] for j, button in enumerate(buttons_vecs))
46-
opt.add(eq == reqs[i])
47-
33+
for i, req in enumerate(reqs):
34+
opt.add(sum(button[i]*ns[j] for j, button in enumerate(buttons)) == req)
4835
opt.minimize(sum(ns))
4936
opt.check()
5037
model = opt.model()
5138
return sum([model[n].as_long() for n in ns])
52-
5339

54-
ans = 0
40+
41+
# Part 1 and 2
42+
ans_pt1 = ans_pt2 = 0
5543
for line in inp:
5644
diagram, *buttons, reqs = line.split(" ")
5745
diagram = diagram[1:-1]
5846
buttons = [set(map(int, re.findall(r"\d+", bs))) for bs in buttons]
5947
reqs = tuple(map(int, re.findall(r"\d+", reqs)))
60-
ans += solve_part2(reqs, buttons)
48+
ans_pt1 += solve_part1(diagram, buttons)
49+
ans_pt2 += solve_part2(reqs, buttons)
6150

62-
print(ans)
51+
print(ans_pt1)
52+
print(ans_pt2)

0 commit comments

Comments
 (0)