From a59c3c697c3baead456aba7c58d6703dfcc9d1ab Mon Sep 17 00:00:00 2001 From: setop Date: Fri, 15 Dec 2023 17:24:51 +0100 Subject: [PATCH] day 15, trivial --- d15/part1.py | 12 ++++++++++++ d15/part2.py | 26 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 d15/part1.py create mode 100644 d15/part2.py diff --git a/d15/part1.py b/d15/part1.py new file mode 100644 index 0000000..f07eaba --- /dev/null +++ b/d15/part1.py @@ -0,0 +1,12 @@ +import sys + +S=0 +for l in sys.stdin.read().split(','): + c = 0 + for w in l: + c += ord(w) + c *= 17 + c = c % 256 + print(l, c) + S += c +print(S) diff --git a/d15/part2.py b/d15/part2.py new file mode 100644 index 0000000..d1ef39c --- /dev/null +++ b/d15/part2.py @@ -0,0 +1,26 @@ +import sys + +def hash(l): + c = 0 + for w in l: + c += ord(w) + c *= 17 + c = c % 256 + return c + +B = [ dict() for _ in range(256) ] + +for l in sys.stdin.read().split(','): + e = l.find('=') + d = l.find('-') + i = max(e,d) + lbl = l[:i] + box = hash(lbl) + if e > 0: # set + v = int(l[i+1:]) + B[box][lbl] = v + elif d > 0: # remove + if lbl in B[box]: + del B[box][lbl] + +print(sum((i+1)*(j+1)*v for i, b in enumerate(B) for j,(k,v) in enumerate(b.items())))