day 15, trivial

This commit is contained in:
setop 2023-12-15 17:24:51 +01:00
parent 6be1a222b1
commit a59c3c697c
2 changed files with 38 additions and 0 deletions

12
d15/part1.py Normal file
View File

@ -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)

26
d15/part2.py Normal file
View File

@ -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())))