aboutsummaryrefslogtreecommitdiff
path: root/2022/20/solve.py
blob: 6a0a74ffe8d2bb887c17474e72d74c4f2361fb9e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import numpy as np

data = [
    (i, int(dat))
    for i, dat in enumerate(open("input").readlines())
    if dat != ""
]
size = len(data)


def solve(arr, mult):
    for coord in arr[:] * mult:
        i = arr.index(coord)
        arr.pop(i)
        arr.insert((i + coord[1]) % (size - 1), coord)
    zero = [coord[1] for coord in arr].index(0)
    locs = [1000, 2000, 3000]
    return sum(arr[(zero + p) % size][1] for p in locs)


def part1():
    copied = data[:]  # don't overwrite because part2
    return solve(copied, 1)


def part2():
    applied = [(i, dat * 811589153) for i, dat in data]
    return solve(applied, 10)


print(f"Part 1: {part1()}")
print(f"Part 2: {part2()}")