2 missing
This commit is contained in:
parent
fc3fdf677a
commit
18f0a69ed2
70
src/5/index.ts
Normal file
70
src/5/index.ts
Normal file
@ -0,0 +1,70 @@
|
||||
import fs from "fs"
|
||||
|
||||
const content = fs.readFileSync('input.txt', 'utf-8');
|
||||
|
||||
interface Rule {
|
||||
before: number,
|
||||
after: number,
|
||||
}
|
||||
|
||||
const rules = content.split("\r\n").filter(word => word.indexOf("|") > -1)
|
||||
const updates = content.split("\r\n").filter(word => word.indexOf(",") > -1)
|
||||
|
||||
const ruleList: Rule[] = rules.map(str => {
|
||||
return {before: Number(str.split("|")[0]), after: Number(str.split("|")[1])}
|
||||
})
|
||||
const updateList: number[][] = updates.map(values => values.split(",").map(value => Number(value)));
|
||||
const toFilter: number[][] = Object.assign([], updateList);
|
||||
for (let i = 0; i < updateList.length; i++) {
|
||||
const update = updateList[i];
|
||||
let invalid = false;
|
||||
for (let j = 0; j < update.length-1; j++) {
|
||||
const preCondition = update[j];
|
||||
for (let k = j + 1; k < update.length; k++) {
|
||||
const postCondition = update[k]
|
||||
invalid = ruleList.find(rule => rule.before === postCondition && rule.after === preCondition) !== undefined;
|
||||
if (invalid) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (invalid) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (invalid) {
|
||||
const index = toFilter.indexOf(update);
|
||||
toFilter.splice(index, 1);
|
||||
}
|
||||
}
|
||||
let middelsum = 0;
|
||||
for (let i = 0; i < toFilter.length; i++) {
|
||||
const update = toFilter[i];
|
||||
middelsum += update[Math.round((update.length - 1) / 2)];
|
||||
|
||||
}
|
||||
console.log(middelsum);
|
||||
|
||||
const incorrect:number[][] = updateList.filter(update => toFilter.indexOf(update) < 0);
|
||||
for (let i = 0; i < incorrect.length; i++) {
|
||||
const incorrectUpdate = incorrect[i];
|
||||
for (let j = 0; j < incorrectUpdate.length-1; j++) {
|
||||
const preCondition = incorrectUpdate[j];
|
||||
for (let k = j+1; k < incorrectUpdate.length; k++) {
|
||||
const postCondition = incorrectUpdate[k]
|
||||
const invalid = ruleList.find(rule => rule.before === postCondition && rule.after === preCondition)
|
||||
if (invalid) {
|
||||
const temp = incorrectUpdate[j]
|
||||
incorrectUpdate[j] = incorrectUpdate[k]
|
||||
incorrectUpdate[k] = temp;
|
||||
j = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
middelsum = 0;
|
||||
for (let i = 0; i < incorrect.length; i++) {
|
||||
const update = incorrect[i];
|
||||
middelsum += update[Math.round((update.length - 1) / 2)];
|
||||
|
||||
}
|
||||
console.log(middelsum);
|
||||
Loading…
x
Reference in New Issue
Block a user