X-Git-Url: https://git.sommitrealweird.co.uk/advent-of-code-2020.git/blobdiff_plain/d8fa220992cb30ff6491df21b6bac912abbf9031..b1754ed665fed108a29cd4f9f5d6bee7c38f0258:/day18/badmath.py diff --git a/day18/badmath.py b/day18/badmath.py new file mode 100755 index 0000000..b7e6dda --- /dev/null +++ b/day18/badmath.py @@ -0,0 +1,72 @@ +#!/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) + +