2025 day 1

This commit is contained in:
2025-12-05 16:42:14 +01:00
parent 87f51b3f83
commit 97c7b63217
2 changed files with 44 additions and 1 deletions

View File

@@ -0,0 +1,43 @@
def part1(lines):
pos = 50
cnt = 0
for rotation in lines:
direction = -1 if rotation[0] == "L" else 1
amount = int(rotation[1:])
pos = (pos + amount * direction) % 100
if pos == 0:
cnt += 1
print("Part 1: ", cnt)
def part2(lines):
pos = 50
cnt = 0
for rotation in lines:
direction = -1 if rotation[0] == "L" else 1
amount = int(rotation[1:])
pos0 = pos % 100
# k0 is the smallest positive number of clicks (1..100) after the
# start of the current rotation at which the dial first reaches
# position 0.
k0 = ((100 - pos0) % 100) if direction == 1 else (pos0 % 100)
if k0 == 0:
k0 = 100
if amount >= k0:
cnt += 1 + (amount - k0) // 100
pos = (pos + direction * amount) % 100
print(rotation, pos, cnt)
print("Part 2: ", cnt)
if __name__ == "__main__":
import sys
infile = sys.argv[1]
with open(infile) as f:
lines = f.readlines()
lines = [x.rstrip() for x in lines]
part1(lines)
part2(lines)