72 lines
2.0 KiB
Python
72 lines
2.0 KiB
Python
# data = "xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))"
|
|
|
|
PART1 = False
|
|
with open('day3.txt') as f:
|
|
l = [line.rstrip() for line in f]
|
|
data = ""
|
|
for line in l:
|
|
data += line
|
|
|
|
mul = []
|
|
|
|
if PART1:
|
|
|
|
for i in range(len(data)):
|
|
window = data[i:i+4]
|
|
print("window=",window)
|
|
if window == "mul(":
|
|
for j in range(i+4,min(i+4+8,len(data))):
|
|
print(data[j])
|
|
if data[j]==")":
|
|
to_test = data[i+4:j]
|
|
|
|
# print("to_test=", to_test)
|
|
to_test = to_test.split(",")
|
|
# print("to_test=", to_test)
|
|
if len(to_test)==2:
|
|
try :
|
|
a,b = int(to_test[0]),int(to_test[1])
|
|
print("ab = ", a, b)
|
|
mul.append(a*b)
|
|
|
|
|
|
except :
|
|
# print("not int")
|
|
pass
|
|
|
|
else :
|
|
do = True
|
|
for i in range(len(data)):
|
|
window_do = data[i:i+7]
|
|
print("window_do=",window_do)
|
|
if window_do == "don't()":
|
|
do = False
|
|
elif "do()" in window_do:
|
|
do = True
|
|
window = data[i:i+4]
|
|
print("window=",window)
|
|
if window== "mul(":
|
|
for j in range(i+4,min(i+4+8,len(data))):
|
|
print(data[j])
|
|
if data[j]==")":
|
|
to_test = data[i+4:j]
|
|
|
|
# print("to_test=", to_test)
|
|
to_test = to_test.split(",")
|
|
# print("to_test=", to_test)
|
|
if len(to_test)==2 and do:
|
|
try :
|
|
a,b = int(to_test[0]),int(to_test[1])
|
|
print("ab = ", a, b)
|
|
mul.append(a*b)
|
|
|
|
|
|
except :
|
|
print("not int")
|
|
pass
|
|
|
|
|
|
print(mul)
|
|
tot = sum(mul)
|
|
|
|
print(tot) |