Initial commit: AoC solutions 2023-2025

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Samuel Enocsson
2025-12-02 10:39:09 +01:00
commit 549f0c4382
90 changed files with 17360 additions and 0 deletions
+62
View File
@@ -0,0 +1,62 @@
"""Day 1: Advent of Code 2025."""
from aoc import read_lines, read_input
def get_pointer(dial, move, pointer):
dir = move[0]
n = int(move[1:])
if dir == 'L':
pointer = (pointer - n) % len(dial)
elif dir == 'R':
pointer = (pointer + n) % len(dial)
return dial[pointer]
def part1(data):
dial = range(100)
password = 0
pointer = 50
for line in data:
move = line.strip()
pointer = get_pointer(dial, move, pointer)
if pointer == 0:
password += 1
return password
def get_new_index(dial, move, pointer):
dir = move[0]
n = int(move[1:])
if dir == 'L':
pointer = (pointer - n)
elif dir == 'R':
pointer = (pointer + n)
return pointer
def part2(data):
dial = range(100)
password = 0
pointer = 50
for line in data:
move = line.strip()
if len(move[1:]) > 2:
n = int(move[1:][:-2])
move = move[0] + move[-2:]
password += n
idx = get_new_index(dial, move, pointer)
if pointer != 0 and (idx < 0 or idx > len(dial)):
password += 1
pointer = idx % len(dial)
if pointer == 0:
password += 1
return password
if __name__ == "__main__":
data = read_lines(1) # or read_input(1), read_ints(1), read_grid(1)
print(f"Part 1: {part1(data)}")
print(f"Part 2: {part2(data)}")