feat: solve day 25
This commit is contained in:
parent
e8aad99eca
commit
c065f3c6c6
2
25/input.txt
Normal file
2
25/input.txt
Normal file
@ -0,0 +1,2 @@
|
||||
2069194
|
||||
16426071
|
30
25/main.py
Normal file
30
25/main.py
Normal file
@ -0,0 +1,30 @@
|
||||
|
||||
def read_input(filename: str) -> tuple[int, int]:
|
||||
with open(filename, "r") as f:
|
||||
cards_pub, doors_pub = f.read().splitlines()
|
||||
return int(cards_pub), int(doors_pub)
|
||||
|
||||
def reverse_loop_size(public_key: int, subject_number: int) -> int:
|
||||
key = 1
|
||||
loop_size = 0
|
||||
while key != public_key:
|
||||
loop_size += 1
|
||||
key *= subject_number
|
||||
key %= 20201227
|
||||
return loop_size
|
||||
|
||||
def transform_key(subject_number: int, loop_size: int) -> int:
|
||||
key = 1
|
||||
for _ in range(loop_size):
|
||||
key *= subject_number
|
||||
key %= 20201227
|
||||
return key
|
||||
|
||||
def part1(cards_pub: int, doors_pub: int) -> int:
|
||||
subject_number = 7
|
||||
card_loop_size = reverse_loop_size(cards_pub, subject_number)
|
||||
return transform_key(doors_pub, card_loop_size)
|
||||
|
||||
if __name__ == "__main__":
|
||||
cards_pub, doors_pub = read_input("input.txt")
|
||||
print("part1: ", part1(cards_pub, doors_pub))
|
2
25/test.txt
Normal file
2
25/test.txt
Normal file
@ -0,0 +1,2 @@
|
||||
5764801
|
||||
17807724
|
Loading…
Reference in New Issue
Block a user