adventofcode-2018/08/part1.js
2018-12-08 20:34:24 +00:00

29 lines
725 B
JavaScript

var input = require("fs").readFileSync("input.txt").toString().replace("\n", "");
var nums = input.split(" ").map(a=>(parseInt(a)));
function parseTree(ints){
var numChildren = ints[0];
var numMeta = ints[1];
var children = [];
var i = 0;
while(numChildren > 0){
var childParsed = parseTree(ints.slice(2 + i));
i += childParsed[1].length;
children.push(childParsed[0]);
numChildren--;
}
return [{children: children, meta: ints.slice(2+i, 2+i+numMeta)}, ints.slice(0, 2+i+numMeta)]
}
function treeMetaTotal(tree){
var total = 0;
for(var child of tree.children){
total += treeMetaTotal(child);
}
total += tree.meta.reduce((a,b)=>(a+b));
return total;
}
console.log(treeMetaTotal(parseTree(nums)[0]));