From a7f3b70e7312baf195ddfddd26e97cae53f88f38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 13 Dec 2020 08:28:08 +0100 Subject: day 13 --- 20/py/d13.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 20/py/d13.py (limited to '20/py') diff --git a/20/py/d13.py b/20/py/d13.py new file mode 100644 index 0000000..fde95e9 --- /dev/null +++ b/20/py/d13.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +import aoc20 +import sys + + +def pt1(_in): + me = int(_in[0]) + busses = [int(s) for s in _in[1].split(",") if s != "x"] + time = me + while True: + for bus in busses: + if time % bus == 0: + return (time - me) * bus + time += 1 + + +def mul_inv(a, m): + return pow(a, -1, mod=m) + + +def pt2(_in): + busses = {} + for i, s in enumerate(_in[1].strip().split(",")): + if s != "x": + busses[i] = int(s) + N = 1 + for dep, bus in busses.items(): + N *= bus + x = 0 + for dep, bus in busses.items(): + x += -dep * (N // bus) * mul_inv(N // bus, bus) + return x % N + + +if __name__ == "__main__": + input = aoc20.read_input(sys.argv[1:], 13) + print(pt1(input)) + print(pt2(input)) -- cgit v1.2.1