Skip to content

Commit bcb2e9f

Browse files
committed
2025/05
1 parent 9087679 commit bcb2e9f

6 files changed

Lines changed: 141 additions & 46 deletions

File tree

2025/Day05/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
## --- Day 5: Cafeteria ---
2+
As the forklifts break through the wall, the Elves are delighted to discover that there was a cafeteria on the other side after all.
3+
4+
You can hear a commotion coming from the kitchen. "At this rate, we won't have any time left to put the wreaths up in the dining hall!" Resolute in your quest, you investigate.
5+
6+
_Visit the website for the full story and [full puzzle](https://adventofcode.com/2025/day/5) description._

2025/Day05/Solution.cs

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
namespace AdventOfCode.Y2025.Day05;
2+
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
7+
record Range(long start, long end);
8+
9+
[ProblemName("Cafeteria")]
10+
class Solution : Solver {
11+
12+
public object PartOne(string input) {
13+
var (ranges, nums) = Parse(input);
14+
return nums.Count(num => ranges.Any(range => range.start <= num && num <= range.end));
15+
}
16+
17+
public object PartTwo(string input) {
18+
var (ranges, _) = Parse(input);
19+
20+
// Merge overlapping ranges into the disjoint intervals.
21+
// First sort ranges by start so that any range that can extend
22+
// the current one appears at a higher index. Then we walk the list
23+
// once extending ranges[i] with any later range that overlaps with it.
24+
ranges = ranges.OrderBy(x => x.start).ToList();
25+
for (var i = 0; i < ranges.Count; i++) {
26+
int j = i + 1;
27+
while (j < ranges.Count) {
28+
var rangeI = ranges[i];
29+
var rangeJ = ranges[j];
30+
31+
if (rangeJ.start <= rangeI.end) {
32+
ranges[i] = new Range(rangeI.start, Math.Max(rangeI.end, rangeJ.end));
33+
ranges.RemoveAt(j);
34+
} else {
35+
j++;
36+
}
37+
}
38+
}
39+
40+
return ranges.Sum(range => range.end - range.start + 1);
41+
}
42+
43+
(List<Range> ranges, long[] nums) Parse(string input) {
44+
var blocks = input.Split("\n\n");
45+
var ranges = (
46+
from line in blocks[0].Split("\n")
47+
let limits = line.Split("-").Select(long.Parse).ToArray()
48+
select new Range(limits[0], limits[1])
49+
).ToList();
50+
51+
var nums = blocks[1].Split("\n").Select(long.Parse).ToArray();
52+
return (ranges, nums);
53+
}
54+
}

2025/Day05/input.in

21.1 KB
Binary file not shown.

2025/Day05/input.refout

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

2025/SplashScreen.cs

Lines changed: 64 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,24 @@ 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, ". ____ . . ");
14-
Write(0xffff66, true, "* ");
15-
Write(0xffffff, false, "' . ");
11+
Write(0xcc00, false, " █ █ █ █ █ █▄█\n █ █ █▄█ ▀▄▀ █▄▄ █ █ █▄ █▄█ █ █▄ █▄█ █▄█ █▄▄ λy.2025\n \n ");
12+
Write(0xcc00, false, " ");
13+
Write(0xffffff, false, ".'. ' ____ '.' . ");
14+
Write(0xffff66, true, "* ");
15+
Write(0xffffff, false, ".. . .' . ");
1616
Write(0xff9900, false, "<");
17-
Write(0xffffff, false, "o .. '' \n ________/");
17+
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 ");
24+
Write(0x32211a, false, ". ");
2525
Write(0x999999, false, "_______");
2626
Write(0xaabbcc, false, "||");
27-
Write(0x999999, false, "_________ ");
28-
Write(0x32211a, false, "' . ' . '' ' ' ' \n ");
27+
Write(0x999999, false, "_________ ");
28+
Write(0x32211a, false, ". . .'. ' ' . \n . ");
2929
Write(0x999999, false, "| ");
3030
Write(0x9b715b, false, "_");
3131
Write(0xbb66ff, false, "@");
@@ -37,8 +37,7 @@ public void Show() {
3737
Write(0xff0000, false, "'.");
3838
Write(0x999999, false, "|_ _________________________ ");
3939
Write(0xcccccc, false, " 2 ");
40-
Write(0xffff66, false, "**\n ");
41-
Write(0x32211a, false, "' ");
40+
Write(0xffff66, false, "**\n ");
4241
Write(0x999999, false, "|_");
4342
Write(0xff0000, false, "&");
4443
Write(0x999999, false, "_");
@@ -62,7 +61,9 @@ public void Show() {
6261
Write(0x666666, false, ". ");
6362
Write(0xff0000, false, ".");
6463
Write(0x666666, false, ". ");
65-
Write(0x999999, false, "| \n \\_");
64+
Write(0x999999, false, "| \n ");
65+
Write(0x32211a, false, "' ' ");
66+
Write(0x999999, false, "\\_");
6667
Write(0xaabbcc, false, "]");
6768
Write(0x999999, false, "__");
6869
Write(0x9b715b, false, "--");
@@ -77,12 +78,12 @@ public void Show() {
7778
Write(0xaabbcc, false, "//");
7879
Write(0x999999, false, "_| ");
7980
Write(0xcccccc, false, " 3 ");
80-
Write(0xffff66, false, "**\n ");
81+
Write(0xffff66, false, "**\n ");
82+
Write(0x32211a, false, ". . ' . ' ");
8183
Write(0x999999, false, "____________");
8284
Write(0xaabbcc, false, "//");
83-
Write(0x999999, false, "___ \n ");
84-
Write(0x666666, false, "__________________________ ");
85-
Write(0xaa7744, false, "..");
85+
Write(0x999999, false, "___ \n __________________________ ");
86+
Write(0xaa7744, false, "...");
8687
Write(0x999999, false, "| ");
8788
Write(0xffffff, false, "\\ ");
8889
Write(0xff0000, false, "'");
@@ -96,8 +97,14 @@ public void Show() {
9697
Write(0x999999, false, "| ");
9798
Write(0xcccccc, false, " 4 ");
9899
Write(0xffff66, false, "**\n ");
99-
Write(0x333333, false, "|_ ___ | .--. | ");
100-
Write(0xaa7744, false, "..");
100+
Write(0x999999, false, "|");
101+
Write(0x9900, false, "_ ");
102+
Write(0xffffff, false, "___ ");
103+
Write(0x999999, false, "| ");
104+
Write(0xaabbcc, false, ".--. ");
105+
Write(0x9900, false, "() () ");
106+
Write(0x999999, false, "|");
107+
Write(0xaa7744, false, ".' ..");
101108
Write(0x999999, false, "__");
102109
Write(0xaabbcc, false, "[#]");
103110
Write(0x999999, false, "_");
@@ -106,18 +113,44 @@ public void Show() {
106113
Write(0xaabbcc, false, "//");
107114
Write(0x999999, false, "_");
108115
Write(0xffffff, false, "@@@");
109-
Write(0x999999, false, "| \n ");
110-
Write(0x333333, false, "|_\\_|^|_]_|==|_T_T_T_T_T_| ");
111-
Write(0x666666, false, " 5\n \n ");
112-
Write(0x666666, false, " 6\n ");
113-
Write(0x666666, false, " \n 7\n ");
114-
Write(0x666666, false, " \n ");
115-
Write(0x666666, false, "8\n \n ");
116-
Write(0x666666, false, " 9\n ");
117-
Write(0x666666, false, " \n 10\n ");
118-
Write(0x666666, false, " \n 11");
119-
Write(0x666666, false, "\n \n ");
120-
Write(0x666666, false, " 12\n \n");
116+
Write(0x999999, false, "| \n |");
117+
Write(0x9900, false, "_\\");
118+
Write(0x999999, false, "_");
119+
Write(0xffffff, false, "|");
120+
Write(0xff9900, true, "^");
121+
Write(0xffffff, false, "|");
122+
Write(0x999999, false, "_");
123+
Write(0xaabbcc, false, "]");
124+
Write(0x999999, false, "_");
125+
Write(0xaabbcc, false, "|");
126+
Write(0x9b715b, false, "==");
127+
Write(0xaabbcc, false, "|");
128+
Write(0x999999, false, "_");
129+
Write(0x9b715b, false, "T");
130+
Write(0x999999, false, "_");
131+
Write(0x9b715b, false, "T");
132+
Write(0x999999, false, "_");
133+
Write(0x9b715b, false, "T");
134+
Write(0x999999, false, "_");
135+
Write(0x9b715b, false, "T");
136+
Write(0x999999, false, "_");
137+
Write(0x9b715b, false, "T");
138+
Write(0x999999, false, "_");
139+
Write(0xaa7744, false, "...' ");
140+
Write(0xcccccc, false, " 5 ");
141+
Write(0xffff66, false, "**\n ");
142+
Write(0x333333, false, " || \n _||__ ");
143+
Write(0x333333, false, " ");
144+
Write(0x666666, false, " 6\n ");
145+
Write(0x333333, false, "| | \n |___] ");
146+
Write(0x333333, false, " ");
147+
Write(0x666666, false, " 7\n \n ");
148+
Write(0x666666, false, " 8\n ");
149+
Write(0x666666, false, " \n 9\n ");
150+
Write(0x666666, false, " \n 1");
151+
Write(0x666666, false, "0\n \n ");
152+
Write(0x666666, false, " 11\n ");
153+
Write(0x666666, false, " \n 12\n \n");
121154

122155
Console.ForegroundColor = color;
123156
Console.WriteLine();

0 commit comments

Comments
 (0)