summaryrefslogtreecommitdiff
path: root/2025/aoc2025-d06.py
diff options
context:
space:
mode:
Diffstat (limited to '2025/aoc2025-d06.py')
-rw-r--r--2025/aoc2025-d06.py54
1 files changed, 54 insertions, 0 deletions
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);