adventofcode/2021/10/part2.mjs

43 lines
842 B
JavaScript

import fs from "fs-extra";
import fp from "lodash/fp.js";
import _ from "lodash";
import * as p1 from "./part1.mjs";
function completionString(line) {
const stack = [];
for (const c of line) {
if (p1.closing[c]) {
stack.unshift(p1.closing[c]);
} else if (c !== stack.shift()) {
return;
}
}
return stack;
}
export function linesScore(lines) {
lines = lines.map(completionString).filter((x) => x);
const points = {
")": 1,
"]": 2,
"}": 3,
">": 4,
};
const lineScore = (line) => line.reduce((a, b) => 5 * a + points[b], 0);
return lines.map(lineScore);
}
export function solution(lines) {
const scores = linesScore(lines);
scores.sort((a, b) => (a < b ? -1 : 1));
return scores[(scores.length - 1) / 2];
}