Skip to content

Commit ebac894

Browse files
committed
refactor
1 parent 9c99d4b commit ebac894

File tree

1 file changed

+12
-25
lines changed

1 file changed

+12
-25
lines changed

src/2024/day02.js

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,19 @@
1+
function isSafe(line) {
2+
const result = line.map((num, i) => i > 0 && num - line[i - 1]).slice(1);
3+
return (
4+
result.every(num => num >= 1 && num <= 3) ||
5+
result.every(num => num <= -1 && num >= -3)
6+
);
7+
}
8+
19
export function part1(input) {
210
const lines = input.split("\n").map(line => line.split(" ").map(Number));
3-
const safe = lines.filter(line => {
4-
const result = line
5-
.map((num, i) => (i === 0 ? 0 : num - line[i - 1]))
6-
.slice(1);
7-
return (
8-
result.every(num => num >= 1 && num <= 3) ||
9-
result.every(num => num <= -1 && num >= -3)
10-
);
11-
});
12-
return safe.length;
11+
return lines.filter(isSafe).length;
1312
}
1413

1514
export function part2(input) {
1615
const lines = input.split("\n").map(line => line.split(" ").map(Number));
17-
const safe = lines.filter(line => {
18-
for (let i = 0; i < line.length; i++) {
19-
const newLine = line.slice();
20-
newLine.splice(i, 1);
21-
const result = newLine
22-
.map((num, i) => (i === 0 ? 0 : num - newLine[i - 1]))
23-
.slice(1);
24-
if (
25-
result.every(num => num >= 1 && num <= 3) ||
26-
result.every(num => num <= -1 && num >= -3)
27-
)
28-
return true;
29-
}
30-
});
31-
return safe.length;
16+
return lines.filter(line => {
17+
return line.map((x, i) => line.toSpliced(i, 1)).find(isSafe);
18+
}).length;
3219
}

0 commit comments

Comments
 (0)