29 lines
725 B
JavaScript
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]));
|