Roderic Day před 1 rokem
rodič
revize
ad57b68e3d
2 změnil soubory, kde provedl 28 přidání a 1 odebrání
  1. +1
    -1
      VERSION
  2. +27
    -0
      y2023/p15.py

+ 1
- 1
VERSION Zobrazit soubor

@@ -1 +1 @@
🌋

+ 27
- 0
y2023/p15.py Zobrazit soubor

@@ -0,0 +1,27 @@
import re


def hush(string):
cv = 0
for c in string:
cv += ord(c)
cv *= 17
cv %= 256
return cv


text = open(0).read()
ans1 = sum(hush(step) for step in text.replace('\n', '').split(','))
print(ans1)


cases = [[] for _ in range(256)]
for label, op, val in re.findall(r'(\w+)(=|-)(\d*)', text):
box = cases[hush(label)]
old = [idx for idx, it in enumerate(box) if it[0] == label]
match old, op, int(val or 0):
case [idx], '-', 0: box.pop(idx)
case [], '=', n: box.append([label, n])
case [idx], '=', n: box[idx] = [label, n]
ans2 = sum(i * j * lens[1] for i, slots in enumerate(cases, 1) for j, lens in enumerate(slots, 1))
print(ans2)

Načítá se…
Zrušit
Uložit