From dd2497438dfe8ff9637787cb3181c23745f901f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Jos=C3=A9=20Guti=C3=A9rrez=20de=20Quevedo=20P=C3=A9?= =?UTF-8?q?rez?= Date: Tue, 15 Dec 2020 11:40:03 +0100 Subject: [PATCH] optimized versions of day 15 interesting discoveries: * using a list instead of a dict made a difference, but not a lot * declaring the code in a function instead of as "global code" made *A LOT* of difference. I guess it has to do with the variables being global in that case --- 15/1.py | 37 ++++++++++++++++++++----------------- 15/2.py | 37 ++++++++++++++++++++----------------- 2 files changed, 40 insertions(+), 34 deletions(-) diff --git a/15/1.py b/15/1.py index 71d0cd9..eeae830 100644 --- a/15/1.py +++ b/15/1.py @@ -1,21 +1,24 @@ -content = [2,0,6,12,1,3] +def play_number_of_turns(turns): + content = [2,0,6,12,1,3] -spoken = {} -new_spoken = 0 -turn = 1 -for c in content: - spoken[c] = turn - turn += 1 + spoken = [0] * turns + new_spoken = 0 + turn = 1 + for c in content: + spoken[c] = turn + turn += 1 -last_turn = 0 -while turn <= 2020: - if not last_turn: - new_spoken = 0 - else: - new_spoken = turn - 1 - last_turn + last_turn = 0 + while turn <= turns: + if not last_turn: + new_spoken = 0 + else: + new_spoken = turn - 1 - last_turn - last_turn = spoken.get(new_spoken, 0) - spoken[new_spoken] = turn - turn += 1 + last_turn = spoken[new_spoken] + spoken[new_spoken] = turn + turn += 1 -print(new_spoken) + print(new_spoken) + +play_number_of_turns(2020) diff --git a/15/2.py b/15/2.py index 979c967..928069b 100644 --- a/15/2.py +++ b/15/2.py @@ -1,21 +1,24 @@ -content = [2,0,6,12,1,3] +def play_number_of_turns(turns): + content = [2,0,6,12,1,3] -spoken = {} -new_spoken = 0 -turn = 1 -for c in content: - spoken[c] = turn - turn += 1 + spoken = [0] * turns + new_spoken = 0 + turn = 1 + for c in content: + spoken[c] = turn + turn += 1 -last_turn = 0 -while turn <= 30000000: - if not last_turn: - new_spoken = 0 - else: - new_spoken = turn - 1 - last_turn + last_turn = 0 + while turn <= turns: + if not last_turn: + new_spoken = 0 + else: + new_spoken = turn - 1 - last_turn - last_turn = spoken.get(new_spoken, 0) - spoken[new_spoken] = turn - turn += 1 + last_turn = spoken[new_spoken] + spoken[new_spoken] = turn + turn += 1 -print(new_spoken) + print(new_spoken) + +play_number_of_turns(30000000)