diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2025-12-06 07:57:16 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2025-12-06 07:57:16 +0100 |
| commit | be683b101393d3566261c9cc10351398bd2e1b6c (patch) | |
| tree | b8c47ad943a4f5cffd423ee04f6a931c4b276b89 /2025 | |
| parent | 424ffd61c58eb127f9a657a854737e2d82368217 (diff) | |
| download | aoc-be683b101393d3566261c9cc10351398bd2e1b6c.tar.gz aoc-be683b101393d3566261c9cc10351398bd2e1b6c.zip | |
Day 6 2025 I suck
Diffstat (limited to '2025')
| -rw-r--r-- | 2025/06/a.py | 16 | ||||
| -rw-r--r-- | 2025/06/b.py | 32 | ||||
| -rw-r--r-- | 2025/README.md | 16 |
3 files changed, 63 insertions, 1 deletions
diff --git a/2025/06/a.py b/2025/06/a.py index 5fdb11b..1d12e01 100644 --- a/2025/06/a.py +++ b/2025/06/a.py | |||
| @@ -1,6 +1,20 @@ | |||
| 1 | import fileinput | 1 | import fileinput |
| 2 | from functools import reduce | ||
| 3 | from operator import mul | ||
| 2 | 4 | ||
| 5 | a = [] | ||
| 6 | op = [] | ||
| 3 | with fileinput.input() as lines: | 7 | with fileinput.input() as lines: |
| 4 | for line in lines: | 8 | for line in lines: |
| 5 | ... | 9 | t = line[:-1].split(' ') |
| 10 | if t[0] == '+' or t[0] == '*': | ||
| 11 | op = [x for x in t if x != ''] | ||
| 12 | else: | ||
| 13 | a.append([int(x) for x in t if x != '']) | ||
| 6 | 14 | ||
| 15 | def sol(a, op, i): | ||
| 16 | return (sum(a[j][i] for j in range(len(a))) if op[i] == '+' | ||
| 17 | else reduce(mul, (a[j][i] for j in range(len(a))), 1)) | ||
| 18 | |||
| 19 | |||
| 20 | print(sum(sol(a, op, i) for i in range(len(a[0])))) | ||
diff --git a/2025/06/b.py b/2025/06/b.py new file mode 100644 index 0000000..d52560f --- /dev/null +++ b/2025/06/b.py | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | import fileinput | ||
| 2 | from functools import reduce | ||
| 3 | from operator import mul | ||
| 4 | |||
| 5 | with fileinput.input() as lines: | ||
| 6 | all = list(lines) | ||
| 7 | a = [line[:-1] for line in all[:-1]] | ||
| 8 | op = all[-1][:-1] | ||
| 9 | |||
| 10 | def sol(a, j, k): | ||
| 11 | nums = [] | ||
| 12 | i = k-2 | ||
| 13 | while i >= j: | ||
| 14 | n = 0 | ||
| 15 | for r in a: | ||
| 16 | if r[i] != ' ': | ||
| 17 | n = 10*n + int(r[i]) | ||
| 18 | nums.append(n) | ||
| 19 | i -= 1 | ||
| 20 | return sum(nums) if op[j] == '+' else reduce(mul, nums, 1) | ||
| 21 | |||
| 22 | j = 0 | ||
| 23 | s = 0 | ||
| 24 | while j < len(op): | ||
| 25 | k = j+1 | ||
| 26 | while k < len(op) and op[k] == ' ': | ||
| 27 | k += 1 | ||
| 28 | if k >= len(op): | ||
| 29 | k = max(len(r) for r in a)+1 | ||
| 30 | s += sol(a, j, k) | ||
| 31 | j = k | ||
| 32 | print(s) | ||
diff --git a/2025/README.md b/2025/README.md index a77c168..548deb3 100644 --- a/2025/README.md +++ b/2025/README.md | |||
| @@ -11,6 +11,7 @@ Example | |||
| 11 | 11 | ||
| 12 | ``` | 12 | ``` |
| 13 | Day -Part 1- -Part 2- | 13 | Day -Part 1- -Part 2- |
| 14 | 6 00:13:38 01:49:24 | ||
| 14 | 5 00:04:39 00:22:19 | 15 | 5 00:04:39 00:22:19 |
| 15 | 4 00:25:36 00:27:49 | 16 | 4 00:25:36 00:27:49 |
| 16 | 3 00:05:02 00:16:09 | 17 | 3 00:05:02 00:16:09 |
| @@ -69,3 +70,18 @@ Part 2 required a little bit of thinking to handle overlaps correctly | |||
| 69 | - at first I wrote a solution that did not handle overlaps, then one | 70 | - at first I wrote a solution that did not handle overlaps, then one |
| 70 | that can only handle single overlaps, and finally one that works in | 71 | that can only handle single overlaps, and finally one that works in |
| 71 | every case. My final solution is quite straightforward. | 72 | every case. My final solution is quite straightforward. |
| 73 | |||
| 74 | ### Day 6: Trash Compactor | ||
| 75 | |||
| 76 | Part 1 was easy, but I struggled with part 2. | ||
| 77 | |||
| 78 | I had to solve this while travelling, which did not help, but that was | ||
| 79 | not the main issue. The problem was that for whatever reason my script | ||
| 80 | did not copy the whitespaces correctly from the sample input in the web | ||
| 81 | page, so I was left wondering how the heck am I supposed to align the | ||
| 82 | numbers. After more than an hour and after changing train, I figured out | ||
| 83 | the error and I was able to solve this elementary school problem. Much | ||
| 84 | smart, very accomplishment. | ||
| 85 | |||
| 86 | This year so far the only problems that took me more than 30 minutes | ||
| 87 | are this and the first one, not exactly the hardest problems imaginable. | ||
