day 7
This commit is contained in:
		
							
								
								
									
										1317
									
								
								day07/input.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1317
									
								
								day07/input.txt
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										15
									
								
								day07/part1.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								day07/part1.js
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										57
									
								
								day07/part2.js
									
									
									
									
									
										Normal 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); | ||||
		Reference in New Issue
	
	Block a user