aoc/2018/7/part1.js
2018-12-08 11:18:40 +00:00

23 lines
610 B
JavaScript

const fs = require('fs');
let rules = fs.readFileSync('input.txt', 'utf-8').split('\n');
steps = [];
for (let rule of rules) {
[_, step1, step2] = rule.match(/Step (\w) must be finished before step (\w) can begin./);
if (!steps[step1])
steps[step1] = []
if (!steps[step2])
steps[step2] = []
steps[step2].push(step1)
}
let ans = '';
while (Object.entries(steps).length > 0) {
let step = Object.entries(steps).filter(v => v[1].length == 0).map(v => v[0]).sort()[0]
delete steps[step];
for (let step_ in steps) {
steps[step_] = steps[step_].filter(v => v != step)
}
ans += step
}
console.log(ans)