advent-of-code/2022/21/index.js

70 lines
1.5 KiB
JavaScript

const fs = require('fs/promises');
const sum = (arr) => arr.reduce((total, num) => total+num, 0);
const arrayOfLength = n => Array.from(Array(n).keys()).map(() => {});
const modulo = (n, m) => ((n % m + m) % m);
const keypress = async () => {
process.stdin.setRawMode(true)
return new Promise(resolve => process.stdin.once('data', data => {
const byteArray = [...data]
if (byteArray.length > 0 && byteArray[0] === 3) {
console.log('^C')
process.exit(1)
}
process.stdin.setRawMode(false)
resolve()
}))
}
const coords = ([x, y, z]) => `${x},${y},${z}`;
const createNode = (arr, order, first, par, i = 0) => {
};
const runOp = (a, op, b) => {
switch(op) {
case "+":
return a + b;
case "-":
return a - b;
case "*":
return a * b;
case "/":
return a / b;
}
throw(Error(`Op not found! - ${op}`));
}
const inflateMonkeys = (monkeys, name) => {
const command = monkeys[name];
const number = parseInt(command);
if(!isNaN(number)) {
return number;
}
const [_, a, op, b] = command.match(/([a-z]+) (.) ([a-z]+)/);
return runOp(inflateMonkeys(monkeys, a),
op,
inflateMonkeys(monkeys, b));
};
const main = async () => {
const monkeys = (await fs.readFile("./input.txt", 'utf8')).slice(0, -1).split("\n")
.reduce((monkeys, row) => {
const [_, name, command] = row.match(/([a-z]+): (.*)/);
monkeys[name] = command;
return monkeys;
}, {});;
const root = inflateMonkeys(monkeys, "root");
console.log("root: ", root);
}
main();