58 lines
1.0 KiB
Python
Executable File
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)
|