27 lines
686 B
Python
27 lines
686 B
Python
def part1(digits):
|
|
return sum(int(d) for i, d in enumerate(digits) if d == digits[(i+1) % len(digits)])
|
|
|
|
for inp, out in [
|
|
('1122', 3),
|
|
('1111', 4),
|
|
('1234', 0),
|
|
('91212129', 9),
|
|
]:
|
|
assert part1(inp) == out, f'Expected {out}, got {part1(inp)}'
|
|
|
|
def part2(digits):
|
|
return sum(int(d) for i, d in enumerate(digits) if d == digits[(i+len(digits)//2) % len(digits)])
|
|
|
|
for inp, out in [
|
|
('1212', 6),
|
|
('1221', 0),
|
|
('123425', 4),
|
|
('123123', 12),
|
|
('12131415', 4),
|
|
]:
|
|
assert part2(inp) == out, f'Expected {out}, got {part2(inp)}'
|
|
|
|
puzzle_input = 'TODO'
|
|
|
|
print(part1(puzzle_input))
|
|
print(part2(puzzle_input))
|