From b8cdc642f0e8edcbea4258d4ad78dc009403e8c5 Mon Sep 17 00:00:00 2001 From: Julia Lange Date: Thu, 28 Dec 2023 21:50:45 -0800 Subject: [PATCH] 2023 dec 15th --- Python/2023/15/main.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Python/2023/15/main.py diff --git a/Python/2023/15/main.py b/Python/2023/15/main.py new file mode 100644 index 0000000..f61dd15 --- /dev/null +++ b/Python/2023/15/main.py @@ -0,0 +1,41 @@ + +input = open("input", 'r').read().rstrip() + +data = input.split(",") + +total = [] + +def hash(cv, inp): + for char in inp: + cv += ord(char) + cv *= 17 + cv %= 256 + return cv + +for inp in data: + total.append(hash(0, inp)) + +print(sum(total)) + +boxes = [{} for _ in range(256)] + +for inp in data: + if inp[-1] == "-": + label = inp[:-1] + box = hash(0, label) + if label in boxes[box]: + del boxes[box][label] + else: + label, fl = inp.split("=") + box = hash(0, label) + boxes[box][label] = int(fl) + +print(boxes) + +total2 = [] + +for i, box in enumerate(boxes): + for slot, fl in enumerate(box.values()): + total2.append((i+1)*(slot+1)*fl) + +print(sum(total2))