41 lines
734 B
Python
41 lines
734 B
Python
|
|
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))
|