Kaynağa Gözat

Solve day 15

Taddeus Kroes 2 yıl önce
ebeveyn
işleme
b2ff5b0b18
2 değiştirilmiş dosya ile 34 ekleme ve 0 silme
  1. 34 0
      2023/15_asciihash.py
  2. 0 0
      2023/input/15

+ 34 - 0
2023/15_asciihash.py

@@ -0,0 +1,34 @@
+#!/usr/bin/env python3
+import sys
+
+def asciihash(s):
+    h = 0
+    for char in s:
+        h = (h + ord(char)) * 17 % 256
+    return h
+
+def focus(steps):
+    boxes = [({}, []) for _ in range(256)]
+
+    for step in steps:
+        if step.endswith('-'):
+            label = step[:-1]
+            index, powers = boxes[asciihash(label)]
+            if label in index:
+                powers[index.pop(label)] = None
+        else:
+            label, power = step.split('=')
+            index, powers = boxes[asciihash(label)]
+            if label in index:
+                powers[index[label]] = int(power)
+            else:
+                index[label] = len(powers)
+                powers.append(int(power))
+
+    return sum(sum((b + 1) * (i + 1) * power
+                   for i, power in enumerate(filter(None, powers)))
+               for b, (_, powers) in enumerate(boxes))
+
+steps = next(sys.stdin).rstrip().split(',')
+print(sum(map(asciihash, steps)))
+print(focus(steps))

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
2023/input/15


Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor