advent2020/twentyfive.py

58 lines
1.0 KiB
Python
Executable File

#!/usr/bin/env python3
from functools import reduce
from itertools import count
import re, sys
import math
import numpy as np
def tpl(l):
return int(l)
def dprint(*args):
sep = False
for arg in args:
if sep:
print('--------')
sep = True
for a, b in arg.items():
print('%10s: %s' % (a, ','.join(b)))
print()
fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % 25
with open(fn) as f:
lines = [l.strip() for l in f.readlines()]
card, door = [tpl(l) for l in lines]
cl, dl = 0, 0
lol = 20201227
sub = 1
for loop in count(1):
sub = (sub * 7) % lol
if sub == card:
cl = loop
break
print(cl)
sub = 1
for loop in count(1):
sub = (sub * 7) % lol
if sub == door:
dl = loop
break
print(dl)
print()
sub = 1
for i in range(cl):
sub = (sub * door) % lol
print(sub)
print()
sub = 1
for i in range(dl):
sub = (sub * card) % lol
print(sub)