Skip to content

Commit 27c6aa6

Browse files
committed
refactor
1 parent 6820500 commit 27c6aa6

File tree

1 file changed

+17
-24
lines changed

1 file changed

+17
-24
lines changed

src/2025/day10.js

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,5 @@
11
import { powerSet } from "combinatorial-generators";
22

3-
function parse(input) {
4-
return input.split("\n").map(line => {
5-
let parts = line.replaceAll(/[[\](){}]/g, "").split(" ");
6-
let indicator = parts[0].replace(/./g, c => (c === "#" ? 1 : 0));
7-
let buttons = parts.slice(1).map(x => x.split(",").map(Number));
8-
let jolts = parts.at(-1).split(",").map(Number);
9-
return { indicator, buttons, jolts };
10-
});
11-
}
12-
133
function producePatterns(buttons, length) {
144
let patterns = {};
155
for (let pressed of powerSet(buttons)) {
@@ -21,14 +11,15 @@ function producePatterns(buttons, length) {
2111
return patterns;
2212
}
2313

24-
export function part1(input) {
25-
let machines = parse(input);
26-
let result = 0;
27-
for (let { indicator, buttons } of machines) {
14+
function parse(input) {
15+
return input.split("\n").map(line => {
16+
let parts = line.replaceAll(/[[\](){}]/g, "").split(" ");
17+
let indicator = parts[0].replace(/./g, c => (c === "#" ? 1 : 0));
18+
let buttons = parts.slice(1).map(x => x.split(",").map(Number));
19+
let jolts = parts.at(-1).split(",").map(Number);
2820
let patterns = producePatterns(buttons, indicator.length);
29-
result += Math.min(...patterns[indicator].map(x => x.length));
30-
}
31-
return result;
21+
return { indicator, buttons, jolts, patterns };
22+
});
3223
}
3324

3425
function minimumPresses(target, patterns) {
@@ -47,12 +38,14 @@ function minimumPresses(target, patterns) {
4738
return Math.min(...totals);
4839
}
4940

41+
export function part1(input) {
42+
return parse(input).reduce((sum, { indicator, patterns }) => {
43+
return sum + Math.min(...patterns[indicator].map(x => x.length));
44+
}, 0);
45+
}
46+
5047
export function part2(input) {
51-
let machines = parse(input);
52-
let result = 0;
53-
for (let { buttons, jolts } of machines) {
54-
let patterns = producePatterns(buttons, jolts.length);
55-
result += minimumPresses(jolts, patterns);
56-
}
57-
return result;
48+
return parse(input).reduce((sum, { jolts, patterns }) => {
49+
return sum + minimumPresses(jolts, patterns);
50+
}, 0);
5851
}

0 commit comments

Comments
 (0)