adventofcode/2021/10/part2.mjs

45 lines
834 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 ];
}