From 529b8303374f68d88f993af55d53b8dd32d8ea13 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Tue, 20 Dec 2022 23:19:31 +0100 Subject: day 20 part 2 just wanted to get this over with --- 22.20/main.py | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/22.20/main.py b/22.20/main.py index 7cb46de..c6324f5 100644 --- a/22.20/main.py +++ b/22.20/main.py @@ -1,16 +1,29 @@ +# brace for horribleness from sys import stdin a = [int(n) for n in stdin.readlines()] -p = list(range(len(a))) +def perm(a, p): + for i, n in enumerate(a): + og_idx = p.index(i) + p.pop(og_idx) + og_idx = (og_idx + n) % len(p) + if og_idx == 0 and n < 0: og_idx = len(p) + p.insert(og_idx, i) + return p -for i, n in enumerate(a): - og_idx = p.index(i) - p.pop(og_idx) - og_idx = (og_idx + n) % len(p) - if og_idx == 0 and n < 0: og_idx = len(p) - p.insert(og_idx, i) +def partOne(a): + a = [a[i] for i in perm(a, list(range(len(a))))] + def g(n): return a[(a.index(0) + n) % len(a)] + return g(1000) + g(2000) + g(3000) -a = [a[i] for i in p] -def g(n): return a[(a.index(0) + n) % len(a)] +def partTwo(a): + a = [n * 811589153 for n in a] + p = list(range(len(a))) + for _ in range(10): + p = perm(a, p) + a = [a[i] for i in p] + def g(n): return a[(a.index(0) + n) % len(a)] + return g(1000) + g(2000) + g(3000) -print(g(1000) + g(2000) + g(3000)) +print(partOne(a)) +print(partTwo(a)) -- cgit 1.4.1-2-gfad0