Day 20 - Advent of Code 2022
Working solutions for the day 20 puzzles.
Part One
""" day_20_01.py """
# usage: python3 day_20_01.py < input
import sys
def parse(data):
""" create object """
return [(i, int(j)) for i, j in enumerate(data.splitlines())]
numbers = parse(sys.stdin.read())
size = len(numbers)
for item, move in numbers.copy():
pos = numbers.index((item, move))
numbers.remove((item, move))
at = (pos + move) % (size - 1)
numbers.insert(at, (item, move))
zero = [i for _, i in numbers].index(0)
print(sum([numbers[(zero + i) % size][1] for i in [1000, 2000, 3000]]))
Part Two
""" day_20_02.py """
# usage: python3 day_20_02.py < input
import sys
def parse(data):
""" create object """
key = 811589153
return [(i, int(j) * key) for i, j in enumerate(data.splitlines())]
numbers = parse(sys.stdin.read())
size = len(numbers)
order = numbers.copy()
for _ in range(10):
for item, move in order:
pos = numbers.index((item, move))
numbers.remove((item, move))
at = (pos + move) % (size - 1)
numbers.insert(at, (item, move))
zero = [i for _, i in numbers].index(0)
print(sum([numbers[(zero + i) % size][1] for i in [1000, 2000, 3000]]))