45 lines
		
	
	
	
		
			977 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			977 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import * as fs from "fs";
 | 
						|
 | 
						|
const simple = /(\w+): (\d+)/;
 | 
						|
const operation = /(\w+): (\w+) ([+\-*/]) (\w+)/;
 | 
						|
 | 
						|
function load(filename) {
 | 
						|
	let res = {};
 | 
						|
	fs.readFileSync(filename, "utf8")
 | 
						|
		.trim()
 | 
						|
		.split("\n")
 | 
						|
		.forEach(line => {
 | 
						|
			const s = line.match(simple);
 | 
						|
			if (s) {
 | 
						|
				res[s[1]] = function() { return parseInt(s[2]); };
 | 
						|
			} else {
 | 
						|
				const o = line.match(operation);
 | 
						|
				res[o[1]] = function () {
 | 
						|
					let left = res[o[2]]();
 | 
						|
					let right = res[o[4]]();
 | 
						|
					switch(o[3]) {
 | 
						|
					case "+": return left + right;
 | 
						|
					case "-": return left - right;
 | 
						|
					case "*": return left * right;
 | 
						|
					case "/": return left / right;
 | 
						|
					}
 | 
						|
				};
 | 
						|
			}
 | 
						|
		});
 | 
						|
	return res;
 | 
						|
}
 | 
						|
 | 
						|
let example = load("example");
 | 
						|
let input = load("input");
 | 
						|
 | 
						|
function solve(input) {
 | 
						|
	return input["root"]();
 | 
						|
}
 | 
						|
 | 
						|
const exampleOutput = solve(example);
 | 
						|
if (exampleOutput !== 152) {
 | 
						|
	console.log("Example failed with " + exampleOutput);
 | 
						|
	process.exit(1); // eslint-disable-line
 | 
						|
}
 | 
						|
 | 
						|
console.log(solve(input));
 |