-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathass-day-25.py
37 lines (27 loc) · 914 Bytes
/
ass-day-25.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Read input
f = open("ass-day-25-input.txt", "r")
def tranform_subject(val_, subject_):
val_ = val_ * subject_
return val_ % 20201227
def get_loopsize(key, val_, subject_):
loopsize = 1
val_ = tranform_subject(val_, subject_)
while val_ != key:
val_ = tranform_subject(val_, subject_)
loopsize += 1
return loopsize
def calc_private_key(val_, subject_, loopsize_):
for i in range(0, loopsize_):
val_ = tranform_subject(val_, subject_)
return val_
val = 1
subject = 7
card_pkey = 16616892
door_pkey = 14505727
loopsize_card = get_loopsize(card_pkey, val, subject)
# loopsize_door = get_loopsize(door_pkey, val, subject)
print(f"Card loopsize = {loopsize_card}")
# private_key_card = calc_private_key(val, card_pkey, loopsize_door)
private_key_door = calc_private_key(val, door_pkey, loopsize_card)
print(f"Private_key = {private_key_door}")
#4441893