From ed395fe7a7fd68f6db4ea94de8fdcdcb0fac5179 Mon Sep 17 00:00:00 2001 From: bthink Date: Sun, 7 Dec 2025 15:59:37 +0100 Subject: first week of AOC 2025 --- 2025/aoc2025-d06.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 2025/aoc2025-d06.py (limited to '2025/aoc2025-d06.py') diff --git a/2025/aoc2025-d06.py b/2025/aoc2025-d06.py new file mode 100644 index 0000000..864cb90 --- /dev/null +++ b/2025/aoc2025-d06.py @@ -0,0 +1,54 @@ +#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); -- cgit v1.2.3