From efd1fa7e5754361b6c5a83362b0cac15fc34bfbd Mon Sep 17 00:00:00 2001 From: Joseph Montanaro Date: Thu, 13 Dec 2018 09:29:39 -0800 Subject: [PATCH] what. --- 2018/12.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/2018/12.py b/2018/12.py index 12c2a9c..4eb2567 100644 --- a/2018/12.py +++ b/2018/12.py @@ -57,6 +57,23 @@ with open('data/12.txt') as f: pots = grow(initial, 20) print(f'Part 1: {sum(pots)}\n') -pots = grow(initial, 5 * 10 ** 10, True) -print(f'Part 2: {pots}\n') +# find pattern and exploit +first_stable = 0 +prev_gen = [] +for i in range(1, 1000): + current_gen = sorted(grow(initial, i)) + if current_gen == [x + 1 for x in prev_gen]: + first_stable = i - 1 + break + else: + prev_gen = current_gen +magic_number = sum(prev_gen) + + +def cheat(num_gens): + if num_gens < first_stable: + raise RuntimeError("Can't cheat.") + return magic_number + (num_gens - first_stable) * len(prev_gen) + +print(f'Part 2: {cheat(5 * 10 ** 10)}\n')