Create day25.py

This commit is contained in:
kamoshi 2020-12-25 19:59:26 +01:00 committed by GitHub
parent b58981ef4d
commit c0acc480e7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

38
2020/Python/day25.py Normal file
View file

@ -0,0 +1,38 @@
from typing import Tuple
def parse_pks() -> Tuple[int, int]:
with open("input.txt") as file:
return int(file.readline()), int(file.readline())
def transform_step(value: int, subject: int) -> int:
value *= subject
value %= 20201227
return value
def transform_loop(loop_value: int, subject: int) -> int:
value = 1
for _ in range(loop_value):
value = transform_step(value, subject)
return value
def find_loop_value(subject: int, desired_value: int) -> int:
value = 1
loop = 0
while value != desired_value:
value = transform_step(value, subject)
loop += 1
return loop
def solve_p1(public_key1: int, public_key2: int) -> int:
loop_value1 = find_loop_value(subject=7, desired_value=public_key1)
encryption_key = transform_loop(loop_value=loop_value1, subject=public_key2)
return encryption_key
PK1, PK2 = parse_pks()
print(solve_p1(public_key1=PK1, public_key2=PK2))