day25 the solution is easier to calculate once you have the loop count

This commit is contained in:
Stefan Harmuth 2020-12-25 07:45:40 +01:00
parent d630a568b7
commit 97d51cb00c

View File

@ -15,15 +15,17 @@ def transform(key, subject_number, loop_size=1):
def part1(test_mode=False): def part1(test_mode=False):
my_input = aoclib.getInputAsArray(day=DAY, return_type=int, test=test_mode) my_input = aoclib.getInputAsArray(day=DAY, return_type=int, test=test_mode)
loop_card = 0 loop_card = 1
public_key_card = 1 public_key_card = 1
while public_key_card != my_input[0]: while pow(7, loop_card, 20201227) != my_input[0]:
loop_card += 1 loop_card += 1
public_key_card = transform(public_key_card, 7) public_key_card = transform(public_key_card, 7)
public_key_door = my_input[1] public_key_door = my_input[1]
return transform(1, public_key_door, loop_card) # as we start with a key of 1, it's just a matter of
# multiplying public_key_door with itself loop_card times ....
return pow(public_key_door, loop_card, 20201227)
def part2(test_mode=False): def part2(test_mode=False):