Skip to content

Commit 8ba7281

Browse files
2024 Day 25 complete
1 parent 02d8dcd commit 8ba7281

File tree

4 files changed

+85
-9
lines changed

4 files changed

+85
-9
lines changed

aoc2024/.aocrunner.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -370,13 +370,13 @@
370370
},
371371
{
372372
"part1": {
373-
"solved": false,
374-
"result": null,
373+
"solved": true,
374+
"result": "2978",
375375
"attempts": [],
376-
"time": null
376+
"time": 3.1022
377377
},
378378
"part2": {
379-
"solved": false,
379+
"solved": true,
380380
"result": null,
381381
"attempts": [],
382382
"time": null

aoc2024/README.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
[![Day](https://badgen.net/badge/22/%E2%98%85%E2%98%85/green)](src/day22)
3636
[![Day](https://badgen.net/badge/23/%E2%98%85%E2%98%85/green)](src/day23)
3737
[![Day](https://badgen.net/badge/24/%E2%98%85%E2%98%85/green)](src/day24)
38-
![Day](https://badgen.net/badge/25/%E2%98%86%E2%98%86/gray)
38+
[![Day](https://badgen.net/badge/25/%E2%98%85%E2%98%85/green)](src/day25)
3939

4040
<!--/SOLUTIONS-->
4141

@@ -237,14 +237,14 @@ Both parts: 2.003ms
237237

238238
```
239239
Day 25
240-
Time part 1: -
240+
Time part 1: 3.102ms
241241
Time part 2: -
242-
Both parts: -
242+
Both parts: 3.102ms
243243
```
244244

245245
```
246-
Total stars: 47/50
247-
Total time: 4099.017ms
246+
Total stars: 50/50
247+
Total time: 4102.119ms
248248
```
249249

250250
<!--/RESULTS-->

aoc2024/src/day25/README.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# 🎄 Advent of Code 2024 - day 25 🎄
2+
3+
## Info
4+
5+
Task description: [link](https://adventofcode.com/2024/day/25)
6+
7+
## Notes
8+
9+
...

aoc2024/src/day25/index.ts

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import run from "aocrunner";
2+
3+
const parseInput = (rawInput: string) => {
4+
const sections = rawInput.split("\n\n").map((sec) => sec.split("\n"));
5+
6+
const keys: number[][] = [];
7+
const locks: number[][] = [];
8+
9+
sections.forEach((s) => {
10+
let key = [];
11+
for(let x= 0; x < s[0].length; x++){
12+
let count = 0;
13+
for(let y = 0; y < s.length; y ++) {
14+
if(s[y][x] === '#'){
15+
count++;
16+
}
17+
}
18+
key.push(count);
19+
}
20+
if(s[0][0] === '.'){
21+
keys.push(key);
22+
}else {
23+
locks.push(key);
24+
}
25+
})
26+
27+
return { keys, locks }
28+
};
29+
30+
const part1 = (rawInput: string) => {
31+
const {keys, locks} = parseInput(rawInput);
32+
33+
return keys.map((k) => {
34+
return locks.filter((l) => {
35+
return k.every((v, i) => v + l[i] <= 7)
36+
}).length
37+
}).reduce((prev, curr) => prev + curr, 0)
38+
};
39+
40+
const part2 = (rawInput: string) => {
41+
const input = parseInput(rawInput);
42+
43+
return;
44+
};
45+
46+
run({
47+
part1: {
48+
tests: [
49+
// {
50+
// input: ``,
51+
// expected: "",
52+
// },
53+
],
54+
solution: part1,
55+
},
56+
part2: {
57+
tests: [
58+
// {
59+
// input: ``,
60+
// expected: "",
61+
// },
62+
],
63+
solution: part2,
64+
},
65+
trimTestInputs: true,
66+
onlyTests: false,
67+
});

0 commit comments

Comments
 (0)