This commit is contained in:
Tim Stallard 2017-12-07 15:07:07 +00:00
parent 2f00f67d4f
commit 7124a52027
Signed by: Tim
GPG Key ID: AAE46381AF6A3FE8
3 changed files with 1389 additions and 0 deletions

1317
day07/input.txt Normal file

File diff suppressed because it is too large Load Diff

15
day07/part1.js Normal file
View File

@ -0,0 +1,15 @@
var lines = require("fs").readFileSync("input.txt").toString().split("\n").filter((a)=>(a));
var top = lines[0].split(" ")[0];
var oldtop = "";
while(oldtop != top){
oldtop = top;
for(var line of lines){
console.log(line);
if(line.indexOf("->") != -1){
if(line.split(" -> ")[1].split(", ").indexOf(top) != -1){
top = line.split(" ")[0];
}
}
}
}
console.log(top);

57
day07/part2.js Normal file
View File

@ -0,0 +1,57 @@
var lines = require("fs").readFileSync("input.txt").toString().split("\n").filter((a)=>(a));
var top = lines[0].split(" ")[0];
var oldtop = "";
while(oldtop != top){
oldtop = top;
for(var line of lines){
if(line.indexOf("->") != -1){
if(line.split(" -> ")[1].split(", ").indexOf(top) != -1){
top = line.split(" ")[0];
}
}
}
}
//console.log(top);
var discs = {};
for(var line of lines){
var disc = {
weight: parseInt(new RegExp("\(([0-9]+)\)").exec(line)[0]),
subweight: 0,
children: []
}
if(line.indexOf("->") != -1){
disc.children = line.split(" -> ")[1].split(", ");
}
discs[line.split(" ")[0]] = disc;
}
function calcsubweight(id){
if(discs[id].children.length == 0){
return discs[id].weight;
}
else{
var childweight = -1;
discs[id].subweight += discs[id].weight;
for(var child of discs[id].children){
discs[child].subweight = calcsubweight(child);
discs[id].subweight += discs[child].subweight;
if(childweight != discs[child].subweight && childweight != -1){
console.log(id, child, childweight, discs[child].subweight);
}
childweight = discs[child].subweight;
}
return discs[id].subweight;
}
}
function debugPrint(id, i){
console.log(i, id, discs[id]);
for(var child of discs[id].children){
debugPrint(child, i+1);
}
}
calcsubweight(top);
debugPrint("wknuyhc", 0);
//console.log(discs);