Skip to content

Commit 61935b5

Browse files
committed
2025/07
1 parent 752950d commit 61935b5

6 files changed

Lines changed: 107 additions & 38 deletions

File tree

2025/Day07/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
## --- Day 7: Laboratories ---
2+
You thank the cephalopods for the help and exit the trash compactor, finding yourself in the [familiar](/2024/day/6) [halls](/2018/day/4) of a North Pole research wing.
3+
4+
Based on the large sign that says "teleporter hub", they seem to be researching <em>teleportation</em>; you can't help but try it for yourself and step onto the large yellow teleporter pad.
5+
6+
_Visit the website for the full story and [full puzzle](https://adventofcode.com/2025/day/7) description._

2025/Day07/Solution.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
namespace AdventOfCode.Y2025.Day07;
2+
3+
using System.Linq;
4+
5+
[ProblemName("Laboratories")]
6+
class Solution : Solver {
7+
8+
public object PartOne(string input) => RunManifold(input).splits;
9+
public object PartTwo(string input) => RunManifold(input).timelines;
10+
public (int splits, long timelines) RunManifold(string input) {
11+
// Dynamic programming over the grid:
12+
//
13+
// Each cell in row i depends only on the values from row i-1 directly above it.
14+
// We propagate a vector of "timeline counts" downward row by row instead of
15+
// keeping a full 2D DP table, which reduces memory to O(columns).
16+
//
17+
// At forks ('^'), a timeline splits into left/right branches, and we count a
18+
// "split" whenever an active timeline actually forks (>0 incoming paths).
19+
20+
var lines = input.Split("\n").Select(line => line.ToCharArray()).ToArray();
21+
var crow = lines.Length;
22+
var ccol = lines[0].Length;
23+
24+
var splits = 0;
25+
var timelines = new long[ccol];
26+
for (int irow = 0; irow < crow; irow++) {
27+
var nextTimelines = new long[ccol];
28+
for (var icol = 0; icol < ccol; icol++) {
29+
if (lines[irow][icol] == '^') {
30+
splits += timelines[icol] > 0 ? 1 : 0;
31+
nextTimelines[icol - 1] += timelines[icol];
32+
nextTimelines[icol + 1] += timelines[icol];
33+
} else if (lines[irow][icol] == 'S') {
34+
nextTimelines[icol] = 1;
35+
} else {
36+
nextTimelines[icol] += timelines[icol];
37+
}
38+
}
39+
timelines = nextTimelines;
40+
}
41+
return (splits, timelines.Sum());
42+
}
43+
}

2025/Day07/input.in

19.7 KB
Binary file not shown.

2025/Day07/input.refout

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
1678
2+
357525737893560

2025/SplashScreen.cs

Lines changed: 43 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,23 @@ public void Show() {
88

99
var color = Console.ForegroundColor;
1010
Write(0xcc00, false, " ▄█▄ ▄▄█ ▄ ▄ ▄▄▄ ▄▄ ▄█▄ ▄▄▄ ▄█ ▄▄ ▄▄▄ ▄▄█ ▄▄▄\n █▄█ █ █ █ █ █▄█ █ █ █ █ █ █▄ ");
11-
Write(0xcc00, false, " █ █ █ █ █ █▄█\n █ █ █▄█ ▀▄▀ █▄▄ █ █ █▄ █▄█ █ █▄ █▄█ █▄█ █▄▄ 0x0000 | 2025\n ");
12-
Write(0xcc00, false, " \n ");
13-
Write(0xffffff, false, "____ ..' .' ");
11+
Write(0xcc00, false, " █ █ █ █ █ █▄█\n █ █ █▄█ ▀▄▀ █▄▄ █ █ █▄ █▄█ █ █▄ █▄█ █▄█ █▄▄ // 2025\n \n ");
12+
Write(0xcc00, false, " ");
13+
Write(0xffffff, false, ".... ____ . ' ");
1414
Write(0xffff66, true, "* ");
15-
Write(0xffffff, false, "' . ");
15+
Write(0xffffff, false, "' ' . ' ");
1616
Write(0xff9900, false, "<");
1717
Write(0xffffff, false, "o \n ________/");
1818
Write(0x999999, false, "O___");
1919
Write(0xffffff, false, "\\__________");
2020
Write(0xff0000, false, "|");
2121
Write(0xffffff, false, "_________________O______ ");
2222
Write(0xcccccc, false, " 1 ");
23-
Write(0xffff66, false, "**\n ");
24-
Write(0x32211a, false, "' ");
23+
Write(0xffff66, false, "**\n ");
2524
Write(0x999999, false, "_______");
2625
Write(0xaabbcc, false, "||");
2726
Write(0x999999, false, "_________ ");
28-
Write(0x32211a, false, "' . .. . \n . ");
27+
Write(0x32211a, false, ".'. ' . ' '' . .. .' \n ");
2928
Write(0x999999, false, "| ");
3029
Write(0x9b715b, false, "_");
3130
Write(0xbb66ff, false, "@");
@@ -37,7 +36,8 @@ public void Show() {
3736
Write(0xff0000, false, "'.");
3837
Write(0x999999, false, "|_ _________________________ ");
3938
Write(0xcccccc, false, " 2 ");
40-
Write(0xffff66, false, "**\n ");
39+
Write(0xffff66, false, "**\n ");
40+
Write(0x32211a, false, ". ");
4141
Write(0x999999, false, "|_");
4242
Write(0xff0000, false, "&");
4343
Write(0x999999, false, "_");
@@ -61,8 +61,8 @@ public void Show() {
6161
Write(0x666666, false, ". ");
6262
Write(0xff0000, false, ".");
6363
Write(0x666666, false, ". ");
64-
Write(0x999999, false, "| \n ");
65-
Write(0x32211a, false, "' ' '. . ' ");
64+
Write(0x999999, false, "| \n ");
65+
Write(0x32211a, false, "' ' '. . ");
6666
Write(0x999999, false, "\\_");
6767
Write(0xaabbcc, false, "]");
6868
Write(0x999999, false, "__");
@@ -78,8 +78,8 @@ public void Show() {
7878
Write(0xaabbcc, false, "//");
7979
Write(0x999999, false, "_| ");
8080
Write(0xcccccc, false, " 3 ");
81-
Write(0xffff66, false, "**\n ");
82-
Write(0x32211a, false, ". . ' . . ' ' ''' ");
81+
Write(0xffff66, false, "**\n ");
82+
Write(0x32211a, false, "' ' ' ? . ' .. ");
8383
Write(0x999999, false, "____________");
8484
Write(0xaabbcc, false, "//");
8585
Write(0x999999, false, "___ \n __________________________ ");
@@ -139,33 +139,51 @@ public void Show() {
139139
Write(0xaa7744, false, "...' ");
140140
Write(0xcccccc, false, " 5 ");
141141
Write(0xffff66, false, "**\n ");
142-
Write(0x9900, false, "|| ");
143-
Write(0x32211a, false, ".");
144-
Write(0x666666, false, " ____________ \n ");
142+
Write(0x9900, false, "|| ");
143+
Write(0x999999, false, "____________ ");
144+
Write(0x32211a, false, "'");
145+
Write(0x666666, false, " _______________________ \n ");
145146
Write(0x999999, false, "_");
146147
Write(0x9900, false, "||");
147-
Write(0x999999, false, "__");
148-
Write(0x666666, false, "/ \\_ ");
148+
Write(0x999999, false, "__/");
149+
Write(0xff0000, false, "'...' ");
150+
Write(0xff00, false, "'...' ");
151+
Write(0x999999, false, "\\_");
152+
Write(0x666666, false, " | |~ | ");
149153
Write(0xcccccc, false, " 6 ");
150154
Write(0xffff66, false, "**\n ");
151155
Write(0x999999, false, "|");
152156
Write(0xff00, false, "^");
153157
Write(0xbb66ff, false, "@ ");
158+
Write(0x999999, false, "| ");
159+
Write(0xaabbcc, false, "1 2 3 ");
160+
Write(0x9900, false, "() ");
154161
Write(0x999999, false, "|");
155-
Write(0x333333, false, " 1 2 3 | \n ");
162+
Write(0x666666, false, " | / \\ | \n ");
156163
Write(0x999999, false, "|");
157164
Write(0xff0000, false, "&");
158165
Write(0xffff66, false, "%");
159166
Write(0xaaaa, false, ";");
160167
Write(0xaabbcc, false, "]");
161-
Write(0x333333, false, "__[]_[]_[]__<>| ");
162-
Write(0x666666, false, " 7\n \n ");
163-
Write(0x666666, false, " 8\n ");
164-
Write(0x666666, false, " \n 9\n ");
168+
Write(0x999999, false, "__");
169+
Write(0xaabbcc, false, "[]");
170+
Write(0x999999, false, "_");
171+
Write(0xaabbcc, false, "[]");
172+
Write(0x999999, false, "_");
173+
Write(0xaabbcc, false, "[]");
174+
Write(0x999999, false, "__");
175+
Write(0xffff66, false, "<>");
176+
Write(0x999999, false, "|");
177+
Write(0x666666, false, " | |H_/|\\ \\\\\\\\\\\\ | ");
178+
Write(0xcccccc, false, " 7 ");
179+
Write(0xffff66, false, "**\n '...");
180+
Write(0x333333, false, "|<>__|H__|_\\__|_____|_[ \n ");
181+
Write(0x666666, false, " 8\n \n ");
182+
Write(0x666666, false, " 9\n ");
183+
Write(0x666666, false, " \n 10\n ");
165184
Write(0x666666, false, " \n 1");
166-
Write(0x666666, false, "0\n \n ");
167-
Write(0x666666, false, " 11\n ");
168-
Write(0x666666, false, " \n 12\n \n");
185+
Write(0x666666, false, "1\n \n ");
186+
Write(0x666666, false, " 12\n \n");
169187

170188
Console.ForegroundColor = color;
171189
Console.WriteLine();

0 commit comments

Comments
 (0)