day15 - shorter, faster, still too slow

This commit is contained in:
Stefan Harmuth 2020-12-15 06:46:48 +01:00
parent 017e04a27c
commit 5bda75e144

View File

@ -8,19 +8,13 @@ TEST_SOLUTION_PART2 = 175594
def part1(test_mode=False, count=2020): def part1(test_mode=False, count=2020):
my_input = aoclib.getInputAsArraySplit(day=DAY, return_type=int, split_char=",", test=test_mode) my_input = aoclib.getInputAsArraySplit(day=DAY, return_type=int, split_char=",", test=test_mode)
memory_last = {v: i for i, v in enumerate(my_input)} memory = {v: i for i, v in enumerate(my_input)}
memory_prev = {}
last_spoken = my_input[-1] last_spoken = my_input[-1]
for i in range(len(my_input), count): for i in range(len(my_input), count):
if last_spoken not in memory_prev: speak = i - 1 - memory.get(last_spoken, i - 1)
last_spoken = 0 memory[last_spoken] = i - 1
else: last_spoken = speak
last_spoken = i - 1 - memory_prev[last_spoken]
if last_spoken in memory_last:
memory_prev[last_spoken] = memory_last[last_spoken]
memory_last[last_spoken] = i
return last_spoken return last_spoken