#advent of code 2025 #day 06 import re def calculate(values,op): if op=="+": answer=sum(values); elif op=="*": answer=1; for value in values: answer*=value; return answer; part1=0; part2=0; PuzzleInput=open("06.in","r"); problems=dict(); biggerproblems=dict(); operators=[]; for y,line in enumerate(PuzzleInput): line=line.replace("\n",""); vals=re.findall(r'(\d+|\*|\+)', line); if y==0: #reserve space for each column for n in range(len(vals)): problems[n]=[]; for n in range(len(line)): biggerproblems[n]=[]; for x,val in enumerate(vals): problems[x].append(val); if vals.count("+")+vals.count("*")==0: for x,c in enumerate(line): biggerproblems[x].append(c); else: operators=[op for op in vals]; PuzzleInput.close(); #part 1 for n in problems: problems[n]=[[int(num) for num in problems[n][:-1]],problems[n][-1]]; part1+=calculate(*problems[n]); #part 2 subproblem=[]; for n in biggerproblems: problemline=biggerproblems[n]; if problemline.count(" ")==len(problemline): operation=operators.pop(0); part2+=calculate(subproblem,operation); subproblem=[]; continue; subproblem.append(int("".join(problemline))); #last column doesn't have it's own whitespace so it's outside the loop operation=operators.pop(0); part2+=calculate(subproblem,operation); print("part 1",part1); print("part 2",part2);