--- /dev/null
+#!/usr/bin/python3
+
+import sys
+
+filename="p1_71.txt"
+if len(sys.argv) > 1:
+ filename=sys.argv[1]
+
+def parse_sum(oursum):
+ parts = oursum.split()
+ new_parts=[]
+ for part in parts:
+ if part[0]=="(":
+ for index,c in enumerate(part):
+ if c=="(":
+ new_parts.append("(")
+ else:
+ new_parts.append(part[index:])
+ break
+ elif part[-1]==")":
+ got_number=False
+ for index,c in enumerate(part):
+ if c==")":
+ if not got_number:
+ new_parts.append(part[0:index])
+ got_number=True
+ new_parts.append(c)
+ else:
+ new_parts.append(part)
+ return new_parts
+
+def do_sum(parts):
+ cur_total=0
+ next_oper="+"
+ bracketed=[]
+ in_brackets=0
+ for part in parts:
+ if in_brackets > 0 and part != ")" and part != "(":
+ bracketed.append(part)
+ continue
+ if in_brackets > 0 and part == ")":
+ in_brackets-=1
+ bracketed.append(part)
+ if in_brackets == 0:
+ part=do_sum(bracketed[1:-1])
+ bracketed.clear()
+ else:
+ continue
+ if part == "+":
+ next_oper="+"
+ elif part == "*":
+ next_oper="*"
+ elif part == "(":
+ in_brackets+=1
+ bracketed.append(part)
+ else:
+ part=int(part)
+ if next_oper == "+":
+ cur_total+=part
+ else:
+ cur_total*=part
+ return cur_total
+
+total=0
+total2=0
+for line in [line.rstrip() for line in open(filename, "r")]:
+ answer=do_sum(parse_sum(line))
+ total+=answer
+
+print("Part 1 Total:", total)
+
+