From 1153a91fd4b141ee9d5310e613459fa3ac770179 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Sat, 23 Dec 2023 23:19:32 +0100 Subject: day 15 --- 15.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 15.py (limited to '15.py') diff --git a/15.py b/15.py new file mode 100644 index 0000000..cad8d00 --- /dev/null +++ b/15.py @@ -0,0 +1,33 @@ +from sys import stdin + + +def holiday_hash(s: str) -> int: + value = 0 + for c in s: + value += ord(c) + value *= 17 + value %= 256 + return value + + +inp = list(stdin.read().rstrip("\n").split(",")) + +print(sum(map(holiday_hash, inp))) + +boxes: list[dict[str, int]] = [dict() for _ in range(256)] +for i in inp: + if i.endswith("-"): + label = i[:-1] + h = holiday_hash(label) + if label in boxes[h]: + del boxes[h][label] + else: + label, operand = i.split("=", maxsplit=2) + boxes[holiday_hash(label)][label] = int(operand) + +p2 = 0 +for i, box in enumerate(boxes): + for slot, (label, focal_length) in enumerate(box.items()): + print(i, slot, label, focal_length) + p2 += (i + 1) * (slot + 1) * focal_length +print(p2) -- cgit v1.2.3-54-g00ecf