summaryrefslogtreecommitdiff
path: root/2025/aoc2025-d12.py
diff options
context:
space:
mode:
authorbthink <bthink@fake.com>2025-12-12 12:42:43 +0100
committerbthink <bthink@fake.com>2025-12-12 12:42:43 +0100
commitde308443f4ed4e12cd18578af09b93d7d01e2a84 (patch)
treee8977d445fe6a86b45dfc8bec8aa46b1fddde76c /2025/aoc2025-d12.py
parented395fe7a7fd68f6db4ea94de8fdcdcb0fac5179 (diff)
final week of 2025HEADmasterbthink
Diffstat (limited to '2025/aoc2025-d12.py')
-rw-r--r--2025/aoc2025-d12.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/2025/aoc2025-d12.py b/2025/aoc2025-d12.py
new file mode 100644
index 0000000..725144c
--- /dev/null
+++ b/2025/aoc2025-d12.py
@@ -0,0 +1,39 @@
+#advent of code 2025
+#day 12
+
+part1=0;
+gifts=[];
+trees=[];
+ID=None;
+PuzzleInput=open("12.in","r");
+for line in PuzzleInput:
+ line=line.strip();
+ if "x" in line:
+ dimensions, quantities=line.split(": ");
+ dimensions=tuple([int(d) for d in dimensions.split("x")]);
+ quantities=[int(q) for q in quantities.split(" ")];
+ trees.append((dimensions,quantities));
+ elif ID==None:
+ ID=int(line.replace(":",""));
+ gifts.append([]);
+ elif len(line)==0:
+ ID=None;
+ else:
+ gifts[ID].append(list(line));
+
+def validateTree(tree,presents):
+ grid,reqs=tree;
+ space=grid[0]*grid[1];
+ minX,minY=0,0;
+ for ID,r in enumerate(reqs):
+ pr=presents[ID];
+ dimY=max([pr[j].count("#") for j in range(len(pr))]);
+ dimX=max( [sum([pr[j][i].count("#") for j in range(len(pr))]) for i in range(len(pr[0]))] );
+ minX+=r*dimX;
+ minY+=r*dimY;
+ space-=r*dimX*dimY;
+ return space>0;
+
+for t in trees:
+ part1+=1*validateTree(t,gifts);
+print("part 1 =",part1);