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