From 182de3db5f5c9b0d40c28ed66ba6b93ee8c84e0d Mon Sep 17 00:00:00 2001 From: TimStallard Date: Sat, 8 Dec 2018 20:34:24 +0000 Subject: [PATCH] 6 and 8 --- 06/input-test.txt | 6 ++++++ 06/input.txt | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 06/part1.js | 45 ++++++++++++++++++++++++++++++++++++++++++ 06/part2.js | 26 ++++++++++++++++++++++++ 08/input-test.txt | 1 + 08/input.txt | 1 + 08/part1.js | 28 ++++++++++++++++++++++++++ 08/part2.js | 29 +++++++++++++++++++++++++++ 8 files changed, 186 insertions(+) create mode 100644 06/input-test.txt create mode 100644 06/input.txt create mode 100644 06/part1.js create mode 100644 06/part2.js create mode 100644 08/input-test.txt create mode 100644 08/input.txt create mode 100644 08/part1.js create mode 100644 08/part2.js diff --git a/06/input-test.txt b/06/input-test.txt new file mode 100644 index 0000000..95d160a --- /dev/null +++ b/06/input-test.txt @@ -0,0 +1,6 @@ +1, 1 +1, 6 +8, 3 +3, 4 +5, 5 +8, 9 diff --git a/06/input.txt b/06/input.txt new file mode 100644 index 0000000..b00971d --- /dev/null +++ b/06/input.txt @@ -0,0 +1,50 @@ +353, 177 +233, 332 +178, 231 +351, 221 +309, 151 +105, 289 +91, 236 +321, 206 +156, 146 +94, 82 +81, 114 +182, 122 +81, 153 +319, 312 +334, 212 +275, 93 +224, 355 +347, 94 +209, 65 +118, 172 +113, 122 +182, 320 +191, 178 +99, 70 +260, 184 +266, 119 +177, 178 +313, 209 +61, 285 +155, 218 +354, 198 +274, 53 +225, 138 +228, 342 +187, 165 +226, 262 +143, 150 +124, 159 +325, 210 +163, 176 +326, 91 +170, 193 +84, 265 +199, 248 +107, 356 +45, 340 +277, 173 +286, 44 +242, 150 +120, 230 diff --git a/06/part1.js b/06/part1.js new file mode 100644 index 0000000..17963f6 --- /dev/null +++ b/06/part1.js @@ -0,0 +1,45 @@ +var input = require("fs").readFileSync("input.txt").toString(); + +var points = input.split("\n").filter(a=>a).map(a=>(a.split(",").map(b=>(parseInt(b))))); + +var xmin = points.map(a=>(a[0])).sort((a,b)=>(a-b))[0]; +var xmax = points.map(a=>(a[0])).sort((a,b)=>(b-a))[0]; +var ymin = points.map(a=>(a[1])).sort((a,b)=>(a-b))[0]; +var ymax = points.map(a=>(a[1])).sort((a,b)=>(b-a))[0]; + +var finitePoints = points.filter(p=>(p[0] != xmin && p[0] != xmax && p[1] != ymin && p[1] != ymax)); +var infinitePoints = []; + +var areas = {}; + +var man = (xa, ya, xb, yb)=>(Math.abs(xa - xb) + Math.abs(ya - yb)); + +for(var x = xmin - 200; x <= xmax + 200; x++){ + for(var y = ymin - 200; y <= ymax + 200; y++){ + var mindist = points.map(p=>(man(p[0], p[1], x, y))).sort((a,b)=>(a-b))[0]; + var closest = points.filter(p=>(man(p[0], p[1], x, y) == mindist)); + //if(closest.length == 1 && (finitePoints.indexOf(closest[0]) != -1)){ + if(closest.length == 1){ + if(x == xmin || x == xmax || y == ymin || y == ymax){ + if(infinitePoints.indexOf(closest[0]) == -1){ + infinitePoints.push(closest[0]); + } + } + if(!areas[closest[0]]){ + areas[closest[0]] = 0; + } + areas[closest[0]]++; + } + } +} + +for(var point of infinitePoints){ + delete areas[point]; +} + + +console.log(areas); +console.log(infinitePoints); +console.log(xmin, xmax, ymin, ymax); +console.log(Object.values(areas)); +console.log(Math.max.apply(null, Object.values(areas))); diff --git a/06/part2.js b/06/part2.js new file mode 100644 index 0000000..f5ea2d7 --- /dev/null +++ b/06/part2.js @@ -0,0 +1,26 @@ +var input = require("fs").readFileSync("input.txt").toString(); + +var points = input.split("\n").filter(a=>a).map(a=>(a.split(",").map(b=>(parseInt(b))))); + +var xmin = points.map(a=>(a[0])).sort((a,b)=>(a-b))[0]; +var xmax = points.map(a=>(a[0])).sort((a,b)=>(b-a))[0]; +var ymin = points.map(a=>(a[1])).sort((a,b)=>(a-b))[0]; +var ymax = points.map(a=>(a[1])).sort((a,b)=>(b-a))[0]; + +var areas = {}; +var count = 0; + +var man = (xa, ya, xb, yb)=>(Math.abs(xa - xb) + Math.abs(ya - yb)); + +for(var x = xmin; x <= xmax; x++){ + for(var y = ymin; y <= ymax; y++){ + var dist = points.map(p=>(man(p[0], p[1], x, y))).reduce((a,b)=>(a+b)); + //var dists = points.map(p=>(man(p[0], p[1], x, y))); + //console.log(x,y,dists,dist); + if(dist < 10000){ + count++; + } + } +} + +console.log(count); diff --git a/08/input-test.txt b/08/input-test.txt new file mode 100644 index 0000000..4279f52 --- /dev/null +++ b/08/input-test.txt @@ -0,0 +1 @@ +2 3 0 3 10 11 12 1 1 0 1 99 2 1 1 2 diff --git a/08/input.txt b/08/input.txt new file mode 100644 index 0000000..fabfb02 --- /dev/null +++ b/08/input.txt @@ -0,0 +1 @@ +7 11 6 3 5 5 3 5 1 8 0 8 9 9 2 3 4 3 3 1 1 3 1 2 2 1 1 3 1 9 0 9 4 9 6 4 7 7 4 1 1 1 2 1 1 3 3 3 1 1 1 6 0 8 3 5 3 6 4 1 1 8 1 1 2 3 1 2 1 4 4 1 4 3 5 1 5 0 8 4 1 7 2 4 7 8 7 1 3 2 2 3 1 9 0 7 1 1 4 5 5 4 6 2 1 1 2 3 2 1 1 1 1 9 0 10 9 7 8 1 1 7 8 9 9 1 3 1 2 3 3 3 1 1 2 3 4 1 4 5 3 4 1 7 0 8 4 5 7 2 2 1 8 8 3 3 1 1 2 2 1 1 9 0 11 2 3 9 3 5 3 1 3 4 4 6 3 1 2 3 3 1 3 2 3 1 9 0 7 8 1 1 6 3 5 8 1 1 2 2 3 2 1 3 1 4 1 1 4 3 6 1 8 0 8 6 8 9 5 1 1 9 2 1 1 2 2 1 2 2 1 1 8 0 10 1 3 6 1 4 2 3 4 7 6 3 1 3 3 1 3 1 1 1 7 0 8 7 7 1 6 8 5 3 7 3 3 1 3 2 1 1 1 3 4 2 4 3 3 7 1 6 0 10 6 2 4 1 8 7 7 5 1 2 1 1 1 2 1 2 1 5 0 8 7 7 1 5 4 6 4 1 1 1 1 1 3 1 5 0 7 1 1 8 7 4 8 9 1 1 2 1 3 1 2 5 2 1 1 2 3 3 6 1 5 5 3 3 7 1 7 0 10 2 9 9 7 1 8 6 8 7 5 3 3 2 1 1 3 3 1 8 0 7 8 8 8 1 3 2 7 3 1 2 1 1 2 3 2 1 8 0 9 1 2 1 4 7 7 6 2 1 1 1 2 1 2 1 1 2 2 5 4 5 1 2 1 3 4 1 6 0 6 2 3 4 1 7 7 1 2 1 3 1 3 1 7 0 6 5 1 1 4 1 4 1 2 2 3 3 2 3 1 6 0 8 3 4 1 9 6 3 5 2 2 1 3 2 2 1 3 3 4 1 3 7 1 8 0 7 8 7 3 1 6 4 6 3 1 3 2 1 2 1 2 1 8 0 10 7 1 2 7 9 8 2 8 9 8 1 1 1 2 2 3 1 1 1 6 0 8 4 1 8 3 5 1 8 2 1 1 1 3 1 2 2 4 5 4 3 5 2 3 6 1 5 0 6 6 8 5 1 9 5 3 1 2 2 3 1 6 0 11 7 4 6 5 9 2 9 9 9 6 1 2 3 1 1 2 3 1 8 0 8 8 6 9 5 4 6 1 3 2 1 1 1 3 3 3 2 4 3 1 3 4 2 3 4 1 8 0 8 9 6 6 9 1 2 3 9 2 1 2 2 2 2 2 1 1 9 0 11 5 4 3 1 1 6 6 4 8 5 3 1 2 1 1 2 1 2 2 1 1 5 0 11 8 8 4 6 7 8 7 5 2 9 1 1 1 2 1 2 4 2 3 1 2 5 3 5 3 3 7 1 7 0 11 6 4 3 6 1 9 2 1 3 4 2 1 1 1 3 1 3 3 1 7 0 8 2 2 8 5 1 1 6 3 1 3 1 2 1 3 2 1 7 0 6 1 4 3 8 3 6 3 1 3 1 3 3 2 3 1 1 3 5 4 5 3 4 1 7 0 11 9 1 7 9 7 9 6 1 9 1 8 2 2 3 1 3 3 2 1 5 0 9 1 2 2 1 3 2 5 9 7 1 1 3 1 1 1 5 0 9 3 8 4 6 9 7 5 1 1 1 1 3 1 1 3 2 3 2 3 4 1 9 0 9 1 9 1 8 2 2 4 1 7 2 1 3 1 2 2 2 1 2 1 7 0 7 1 1 5 6 1 8 2 1 1 3 3 3 1 2 1 8 0 10 1 7 1 2 5 4 3 9 6 2 1 3 1 3 3 2 1 3 5 2 5 3 3 5 1 8 0 9 4 1 7 3 2 1 5 5 4 2 1 1 3 3 1 3 3 1 7 0 11 7 9 5 1 1 9 3 8 6 9 4 2 1 1 1 1 1 3 1 6 0 7 1 1 4 5 6 3 3 2 1 3 2 1 1 5 3 3 1 2 3 5 1 8 0 10 8 7 3 6 1 5 9 2 3 4 2 3 1 2 1 3 1 1 1 5 0 9 6 1 5 1 7 1 7 9 5 1 2 1 3 2 1 8 0 6 2 9 4 1 4 5 3 3 3 2 2 3 1 1 3 3 4 1 1 4 3 7 5 5 3 4 1 7 0 7 5 5 6 2 8 1 8 1 2 3 1 1 1 1 1 6 0 11 7 5 4 1 1 3 3 5 3 3 4 1 1 1 3 2 2 1 6 0 6 8 1 8 1 6 5 1 2 2 2 1 1 2 3 5 2 3 6 1 9 0 6 4 1 1 1 9 2 3 2 2 3 1 1 2 2 2 1 6 0 7 4 1 7 1 4 2 5 2 1 2 2 1 3 1 5 0 8 3 5 1 2 1 3 1 7 2 1 1 1 1 2 2 1 2 1 1 3 4 1 5 0 7 5 1 2 7 4 6 6 3 3 1 3 2 1 5 0 7 1 1 2 8 8 6 6 1 2 1 3 1 1 5 0 11 7 2 1 3 8 5 4 9 7 7 8 2 3 2 3 1 3 1 2 1 3 5 1 6 0 10 8 3 1 4 7 8 8 8 9 8 3 1 1 3 3 3 1 6 0 8 3 2 9 5 1 6 1 8 3 3 2 1 2 1 1 5 0 11 6 6 7 7 1 4 1 1 7 1 1 1 2 1 2 3 5 1 1 2 1 3 6 1 8 0 11 2 1 6 6 1 6 2 8 4 9 4 3 1 2 2 2 2 3 1 1 6 0 11 9 7 5 4 6 1 4 6 5 4 6 3 2 3 1 2 1 1 8 0 9 3 7 7 3 1 8 8 8 8 2 3 1 2 3 2 3 3 3 5 1 2 5 2 1 3 5 7 1 5 4 3 5 1 7 0 10 1 6 8 9 7 7 1 9 6 6 3 1 3 2 1 3 3 1 6 0 8 6 9 2 3 4 6 1 2 1 1 3 1 2 3 1 9 0 11 8 6 5 2 6 5 4 7 3 1 3 1 1 1 2 3 2 1 1 1 1 3 3 4 3 3 4 1 7 0 11 8 1 5 7 1 1 3 7 6 7 2 1 3 3 1 2 1 2 1 7 0 8 1 1 1 8 4 5 8 7 2 3 2 1 3 1 3 1 6 0 6 1 6 5 7 6 1 2 1 3 3 2 3 1 1 5 3 3 4 1 5 0 8 2 1 5 1 8 5 8 7 1 1 1 1 3 1 8 0 7 8 4 4 4 1 7 3 2 3 1 2 3 3 2 2 1 5 0 6 5 1 4 6 3 9 1 2 3 3 3 5 4 1 5 3 5 1 7 0 10 7 5 9 2 4 4 9 1 5 1 3 3 1 2 3 2 2 1 6 0 11 1 2 1 5 5 6 1 1 6 3 8 2 1 1 2 2 1 1 9 0 10 5 1 1 7 1 7 4 1 9 8 1 3 1 3 3 1 3 1 2 4 2 4 2 3 3 6 1 9 0 7 1 5 1 6 1 8 7 1 1 3 3 2 1 2 2 1 1 6 0 11 9 1 9 1 6 3 8 7 6 7 1 1 2 2 1 1 1 1 8 0 9 1 7 8 2 8 7 4 1 6 1 3 1 1 3 1 3 3 4 1 2 4 2 2 5 2 3 5 5 4 3 5 1 9 0 8 5 7 9 2 1 7 7 7 2 3 1 1 3 1 3 1 3 1 8 0 11 6 5 1 1 8 8 8 3 9 6 6 1 3 2 1 1 1 1 1 1 5 0 11 5 1 9 5 1 6 9 2 1 9 1 1 2 1 1 2 2 4 1 4 1 3 4 1 6 0 7 8 5 5 4 8 1 1 1 1 2 1 3 1 1 8 0 9 1 7 9 1 2 4 1 5 3 2 1 3 3 3 2 3 1 1 5 0 11 6 9 8 3 2 6 3 8 3 3 1 1 2 3 3 3 5 3 4 4 3 4 1 6 0 9 1 6 5 9 9 8 5 1 5 1 2 1 3 2 1 1 8 0 6 7 2 1 6 5 1 2 2 1 3 1 2 1 2 1 6 0 6 1 8 9 7 8 3 2 1 2 1 1 1 2 1 2 1 3 5 1 7 0 7 6 1 1 8 7 9 2 1 1 1 2 2 3 2 1 8 0 10 8 9 5 2 3 7 3 7 1 9 1 2 2 1 3 1 2 3 1 5 0 6 4 1 9 8 1 9 1 3 3 3 1 3 2 1 2 3 3 4 1 6 0 10 8 7 9 5 1 4 8 1 1 7 2 3 2 2 1 2 1 9 0 6 8 5 1 8 2 1 3 2 2 1 3 2 3 1 1 1 5 0 10 4 3 7 2 4 7 1 5 1 6 3 2 2 1 3 1 1 3 5 1 4 2 1 7 8 2 7 2 5 3 3 5 1 7 0 7 8 3 1 8 1 3 6 2 1 2 3 1 1 3 1 6 0 9 8 1 7 4 1 1 1 3 2 1 3 3 3 3 1 1 9 0 9 2 1 5 3 4 6 1 8 3 3 1 3 1 1 3 2 1 3 2 3 1 1 1 3 7 1 8 0 10 2 4 8 4 1 7 6 8 6 5 3 2 3 3 1 2 3 3 1 5 0 7 6 1 8 8 5 3 3 3 3 3 1 1 1 5 0 10 4 5 3 6 1 2 7 4 6 4 3 1 1 3 2 3 2 3 3 3 3 3 3 5 1 9 0 10 1 8 3 2 7 3 1 1 3 5 3 1 1 2 1 1 1 2 2 1 5 0 11 8 4 1 4 3 5 9 8 2 5 1 1 3 2 1 1 1 5 0 7 4 9 5 4 4 1 9 1 2 2 3 2 2 4 1 2 3 3 4 1 8 0 10 3 4 9 7 1 1 4 4 3 1 1 1 2 2 2 2 1 3 1 6 0 11 7 8 3 1 2 9 4 3 1 7 7 3 3 1 3 2 2 1 9 0 8 1 4 2 3 7 5 8 4 3 2 3 1 1 3 1 3 3 1 4 5 3 3 4 1 6 0 10 1 8 4 5 6 3 9 7 5 4 1 3 3 1 2 1 1 7 0 9 3 7 8 8 6 7 7 1 4 3 2 2 1 2 3 3 1 5 0 11 7 8 1 8 1 1 5 9 6 1 2 1 3 1 3 3 4 5 3 5 4 3 1 5 5 3 7 1 6 0 9 1 4 2 1 8 1 4 6 1 1 3 3 1 1 2 1 8 0 9 5 6 2 9 4 1 6 1 3 3 1 3 1 2 1 3 3 1 6 0 9 5 1 6 9 3 2 9 4 3 1 3 3 2 1 3 3 1 3 3 4 2 1 3 7 1 9 0 7 3 1 3 9 4 6 2 1 3 2 2 3 1 1 1 1 1 9 0 7 1 6 2 3 7 3 2 3 3 3 1 1 3 3 1 1 1 7 0 11 9 8 8 6 7 8 8 1 3 7 8 2 2 2 3 1 1 3 2 5 2 1 5 1 3 3 4 1 8 0 9 8 1 8 3 1 8 7 2 1 3 2 2 3 3 1 1 1 1 8 0 6 3 3 7 7 3 1 3 1 3 1 3 1 2 3 1 5 0 11 2 5 6 1 2 5 7 4 1 8 2 2 3 1 1 3 3 2 1 5 3 5 1 8 0 10 1 8 3 2 2 6 4 6 8 4 3 2 1 3 3 2 2 2 1 5 0 11 3 6 4 8 3 3 7 9 7 1 4 2 2 1 2 2 1 9 0 8 6 9 3 3 3 1 2 5 2 1 2 3 2 1 1 3 1 3 1 3 4 1 3 7 1 9 0 9 3 4 3 5 2 1 8 6 5 2 2 1 1 3 2 1 2 2 1 5 0 8 1 9 2 4 4 3 7 2 1 1 1 1 2 1 5 0 11 5 5 2 9 7 5 6 3 8 1 8 1 3 3 2 3 1 4 3 3 1 1 3 5 2 5 6 2 5 3 3 7 1 8 0 7 2 3 9 3 2 1 5 1 2 1 2 1 2 2 3 1 6 0 6 1 1 4 7 5 6 2 1 2 1 3 1 1 5 0 6 2 2 7 2 2 1 3 2 1 1 3 1 4 1 2 2 1 2 3 5 1 6 0 11 5 1 2 8 5 2 8 4 3 9 1 3 1 1 1 1 1 1 6 0 6 5 1 6 4 8 1 2 3 3 1 3 1 1 6 0 8 7 4 8 4 1 9 7 5 3 3 3 2 1 1 5 5 2 1 3 3 5 1 7 0 8 9 1 7 8 7 3 8 3 2 1 2 3 3 2 1 1 5 0 9 1 1 7 9 2 6 1 7 6 1 1 2 2 2 1 9 0 11 3 9 6 8 8 1 1 1 6 4 1 2 3 2 2 3 2 1 3 3 3 5 1 2 5 3 4 1 9 0 8 7 1 8 8 6 6 9 3 3 2 2 1 3 2 3 3 1 1 6 0 6 2 4 7 9 3 1 1 3 1 3 2 2 1 7 0 6 2 5 7 9 1 7 1 2 1 3 1 1 1 3 3 1 1 3 4 1 7 0 10 7 8 5 6 1 7 9 3 7 1 2 2 3 1 2 3 1 1 9 0 9 4 6 6 1 5 5 7 1 1 1 3 1 2 2 2 2 3 3 1 6 0 8 8 3 1 5 2 1 4 2 1 1 3 3 1 1 1 3 3 1 2 3 5 5 5 3 6 1 6 0 11 7 5 5 6 1 7 1 4 3 5 4 2 3 1 3 3 2 1 6 0 8 3 5 2 9 4 8 1 9 1 2 3 1 1 1 1 8 0 6 7 7 9 1 5 2 1 2 2 2 3 3 1 1 4 1 2 1 3 2 3 6 1 7 0 11 6 4 7 6 8 6 8 6 4 1 4 2 3 3 3 3 1 1 1 7 0 6 1 2 2 1 6 3 2 1 2 3 1 1 1 1 5 0 8 2 1 3 1 1 7 4 5 1 1 1 3 1 3 2 2 3 3 4 3 7 1 8 0 9 9 2 1 1 8 8 9 4 8 2 2 1 2 1 3 3 1 1 6 0 8 9 3 1 9 7 4 1 9 3 3 1 3 2 3 1 8 0 9 5 5 1 7 7 3 7 1 7 2 1 1 1 2 3 3 3 1 3 4 3 3 5 4 3 5 1 8 0 7 5 1 8 3 6 7 5 1 2 1 2 2 2 3 3 1 9 0 8 6 7 9 1 5 4 1 1 3 3 2 1 3 1 1 1 3 1 9 0 6 7 9 1 1 2 2 2 1 3 1 3 2 1 1 1 3 4 2 2 3 3 4 1 5 0 9 2 3 6 7 1 4 8 1 8 2 1 2 1 2 1 9 0 9 1 6 5 5 9 2 1 2 7 1 1 3 1 2 2 3 1 1 1 5 0 9 2 1 1 9 4 1 5 3 5 1 3 1 1 2 3 1 4 2 1 7 6 4 2 5 3 3 5 1 6 0 7 4 9 4 3 1 8 3 2 1 3 3 2 1 1 7 0 9 7 4 9 1 7 1 4 5 2 1 2 1 2 3 1 2 1 5 0 7 1 8 9 3 9 2 1 3 2 3 2 1 2 3 5 3 5 3 6 1 8 0 9 3 2 9 2 1 9 4 5 8 2 3 2 1 2 3 3 3 1 8 0 9 9 9 7 6 1 2 3 9 8 1 1 2 3 3 2 1 1 1 9 0 8 6 3 5 5 7 9 1 9 3 1 3 3 2 3 2 1 1 4 4 3 5 3 3 3 6 1 8 0 6 5 1 3 9 7 1 1 2 3 3 1 3 3 3 1 9 0 9 5 3 2 1 1 7 6 2 9 2 1 1 3 2 1 3 1 3 1 8 0 9 1 9 4 3 4 7 2 2 5 2 1 2 3 2 3 2 2 2 2 5 4 1 5 3 7 1 6 0 8 2 1 3 7 9 2 1 7 2 1 1 1 2 2 1 8 0 10 4 1 1 6 7 7 8 1 9 8 3 3 3 1 2 1 3 1 1 5 0 8 6 1 9 9 3 8 1 3 3 1 1 1 1 5 1 3 3 5 4 1 3 6 1 8 0 9 2 6 9 1 4 6 1 7 7 3 1 1 1 3 1 2 1 1 6 0 9 6 2 9 3 1 7 3 8 4 2 3 1 3 3 1 1 5 0 7 1 7 7 7 1 5 6 1 2 2 1 1 1 3 3 3 3 2 1 2 4 4 5 3 6 1 9 0 9 3 2 8 7 1 8 4 6 3 3 1 1 2 3 1 3 2 1 1 5 0 11 1 5 8 1 1 1 8 2 3 9 3 2 3 2 2 1 1 8 0 10 1 1 2 8 7 1 9 9 9 7 1 1 1 3 1 2 2 2 3 3 3 2 4 2 3 4 1 5 0 10 1 6 5 2 2 6 9 6 9 2 1 2 2 3 2 1 7 0 11 1 4 9 7 5 2 3 4 4 5 1 3 1 1 2 1 1 3 1 9 0 6 4 5 5 9 1 4 1 1 3 1 3 2 2 2 2 5 4 1 2 3 4 1 8 0 8 7 3 6 1 5 5 1 6 2 1 2 1 2 1 1 3 1 5 0 9 9 9 3 9 7 7 9 7 1 1 1 1 1 3 1 8 0 9 5 1 1 8 2 8 1 9 9 3 2 3 1 3 1 1 3 4 1 4 2 3 6 1 8 0 9 3 2 4 2 2 1 1 6 8 2 3 1 1 1 1 3 3 1 8 0 11 3 5 3 1 6 8 9 6 7 3 5 3 1 3 2 1 2 1 2 1 5 0 6 6 3 1 6 6 5 2 2 1 3 2 3 1 5 4 4 1 3 3 5 6 4 5 3 3 4 1 5 0 10 2 6 5 9 7 9 2 1 3 3 3 1 1 1 1 1 6 0 11 8 1 9 8 7 9 6 8 4 7 5 2 2 1 1 3 1 1 9 0 6 1 1 9 2 2 1 3 3 2 1 1 1 2 3 3 4 1 2 4 3 7 1 7 0 7 9 1 1 1 1 3 1 1 2 2 2 3 3 1 1 8 0 10 3 1 1 7 9 8 1 1 2 8 1 1 2 1 1 2 2 3 1 7 0 8 2 6 6 4 1 7 7 1 1 3 3 2 2 1 1 4 1 1 3 1 2 3 3 5 1 6 0 10 1 8 5 9 3 6 1 3 5 6 1 3 3 2 1 2 1 7 0 11 6 8 2 9 4 7 2 3 8 5 1 2 1 3 3 3 3 3 1 5 0 7 5 6 7 1 8 9 1 3 2 2 1 3 5 5 2 2 2 3 5 1 5 0 8 3 5 8 5 1 3 1 8 1 3 2 2 3 1 5 0 10 4 7 1 1 2 3 7 9 8 8 1 1 1 1 2 1 8 0 9 2 7 3 2 7 2 1 9 6 3 1 1 1 1 3 2 2 5 4 4 5 3 3 7 1 5 0 9 4 9 9 4 7 1 6 8 1 3 2 1 2 3 1 9 0 8 3 7 9 3 4 1 8 3 1 3 1 1 2 3 2 2 3 1 8 0 11 4 2 1 8 6 4 5 6 5 7 2 1 2 2 1 1 1 3 2 1 2 3 1 2 3 2 4 5 1 4 7 6 3 5 4 3 7 1 9 0 10 2 5 5 1 2 5 1 1 5 6 2 3 1 1 1 1 3 3 3 1 9 0 10 1 2 3 1 6 1 2 4 4 6 3 1 2 3 1 3 1 2 1 1 8 0 10 2 9 5 1 9 9 4 7 1 7 2 3 1 1 3 1 3 1 2 1 1 4 2 2 3 3 6 1 5 0 10 6 6 4 5 1 6 2 8 7 1 1 2 3 2 1 1 9 0 11 2 4 1 8 9 4 3 4 1 6 8 2 3 3 2 3 1 2 2 2 1 5 0 6 4 1 1 5 8 6 3 2 1 2 2 3 2 1 2 4 3 3 5 1 7 0 10 6 2 3 8 7 1 1 3 8 8 3 1 1 2 1 1 3 1 5 0 11 6 9 7 5 4 8 7 7 1 1 6 2 1 1 3 2 1 9 0 10 5 9 4 8 4 7 7 9 1 3 3 1 2 2 1 1 1 1 3 2 5 3 1 2 3 4 1 5 0 8 4 2 6 6 1 9 7 3 3 1 2 1 1 1 5 0 11 4 4 9 7 1 1 1 3 7 7 9 1 1 3 3 2 1 5 0 10 3 3 1 3 1 1 2 7 6 9 1 1 1 2 2 3 3 3 2 3 6 1 9 0 8 5 9 9 2 3 1 5 3 1 2 3 2 3 3 2 3 2 1 5 0 8 6 2 1 2 1 8 5 4 1 1 1 1 2 1 9 0 7 2 2 1 9 8 6 8 2 1 2 1 2 3 2 1 2 2 1 2 1 4 2 2 3 4 6 4 3 3 6 1 7 0 9 5 4 4 1 3 5 1 1 1 3 1 2 3 1 3 1 1 9 0 6 4 9 1 4 4 1 2 1 2 1 1 3 3 3 2 1 5 0 6 6 9 1 9 1 8 3 3 1 3 2 4 5 3 2 3 2 3 7 1 5 0 7 6 8 6 4 6 1 5 1 3 1 1 2 1 9 0 9 5 1 4 3 1 8 3 6 1 3 1 1 3 1 2 3 2 3 1 6 0 7 1 6 1 4 8 2 3 3 3 2 1 1 3 5 2 1 2 3 4 2 3 5 1 5 0 11 3 3 2 3 5 6 4 3 9 9 1 1 1 2 1 3 1 5 0 8 3 1 1 4 6 9 1 1 1 3 2 1 1 1 6 0 11 8 9 9 4 7 6 4 2 1 7 8 3 1 2 2 3 2 1 1 5 3 5 3 7 1 9 0 7 9 8 1 9 5 1 5 1 3 2 2 1 1 3 1 3 1 6 0 9 3 7 3 6 6 7 1 7 8 1 1 1 1 2 1 1 9 0 6 2 1 7 6 3 9 1 2 3 1 3 3 2 3 3 4 2 5 2 2 2 1 2 2 4 5 3 3 5 1 8 0 9 6 1 1 6 1 3 6 4 3 1 1 3 1 3 2 3 1 1 9 0 10 8 7 6 7 1 9 5 2 1 4 1 2 1 3 3 2 3 2 1 1 9 0 6 4 6 1 8 2 6 2 2 1 1 3 2 2 1 3 1 3 4 3 2 3 4 1 7 0 6 1 2 9 5 2 1 2 3 2 1 1 3 1 1 9 0 10 4 8 7 2 7 1 1 6 6 3 1 1 2 3 1 2 1 1 1 1 8 0 10 6 6 6 9 3 8 3 2 1 9 1 1 2 3 3 2 1 1 3 1 4 3 3 6 1 9 0 6 8 2 2 8 1 2 1 3 2 1 3 2 2 1 1 1 5 0 7 9 1 9 8 9 3 9 3 1 1 3 1 1 9 0 6 9 8 3 1 3 4 1 2 2 1 2 1 2 2 3 5 4 2 1 1 4 3 5 1 8 0 7 6 1 3 4 8 1 1 2 1 2 3 2 1 3 1 1 5 0 9 6 5 5 3 4 1 4 2 2 2 3 1 3 1 1 5 0 10 1 3 8 9 2 1 6 3 2 5 2 1 3 2 3 3 5 1 2 2 3 5 1 6 0 6 3 1 3 2 5 3 2 1 2 2 3 1 1 7 0 10 7 7 3 1 4 1 2 2 4 6 1 3 1 3 1 3 2 1 8 0 6 3 3 7 7 1 4 2 1 1 3 1 1 3 2 4 2 4 3 5 3 6 1 4 4 3 5 1 9 0 9 9 4 9 7 1 5 4 2 9 1 2 1 1 3 2 1 1 1 1 8 0 9 1 8 4 9 8 3 8 5 1 3 1 1 2 3 2 1 3 1 8 0 10 2 6 1 7 8 9 9 7 4 4 2 2 1 1 3 2 2 1 1 5 3 5 1 3 5 1 8 0 7 1 5 8 9 9 8 4 1 2 1 1 2 2 2 3 1 5 0 6 5 5 8 6 5 1 2 1 1 2 2 1 6 0 8 7 9 1 4 3 1 1 9 2 1 3 2 2 3 5 3 5 4 3 3 6 1 9 0 6 7 1 6 3 9 3 3 3 3 1 2 1 2 1 1 1 9 0 7 1 1 8 6 3 2 8 1 1 3 1 3 3 3 3 3 1 7 0 7 1 1 9 9 1 5 1 2 1 3 1 3 1 3 1 4 2 3 5 5 3 4 1 5 0 7 5 1 9 1 1 4 7 1 1 2 3 1 1 5 0 7 9 3 1 7 5 4 7 2 1 1 3 3 1 7 0 8 6 3 7 4 2 7 1 6 1 1 1 1 1 1 1 2 3 1 2 1 4 2 5 4 5 3 5 1 8 0 6 2 7 1 1 7 4 1 1 3 2 1 1 1 1 1 5 0 6 4 3 1 1 4 3 1 2 3 1 1 1 5 0 9 5 9 1 5 5 1 6 4 1 3 2 3 3 1 1 4 5 3 5 3 5 1 6 0 7 4 3 4 8 1 6 1 1 1 3 2 2 3 1 5 0 8 1 3 7 8 5 9 1 5 2 1 1 2 3 1 6 0 6 9 7 1 4 4 7 3 3 1 1 1 2 1 4 2 1 1 3 4 1 8 0 7 6 1 7 1 7 9 5 2 1 3 2 2 1 3 3 1 6 0 8 3 7 2 9 1 2 5 2 1 2 1 1 1 2 1 5 0 7 1 1 4 2 5 2 4 1 2 3 3 3 2 4 3 1 3 5 1 6 0 11 8 8 1 7 2 8 1 9 6 6 9 1 1 1 2 2 2 1 8 0 9 1 3 8 7 8 3 7 6 7 2 1 3 2 1 3 2 3 1 6 0 10 1 1 6 1 8 9 1 3 8 5 3 3 3 3 1 2 5 2 1 2 1 2 1 3 2 6 5 4 3 6 1 8 0 11 8 7 1 4 4 5 6 9 5 7 8 3 3 2 2 3 3 1 1 1 7 0 7 1 9 8 1 8 7 7 2 1 2 1 3 3 2 1 6 0 8 6 5 3 1 8 5 6 2 1 3 3 2 1 2 2 3 2 3 2 5 3 5 1 7 0 9 3 4 9 5 6 1 2 3 7 3 2 1 2 2 1 1 1 7 0 6 3 2 8 6 1 9 3 1 2 3 1 3 3 1 7 0 8 8 9 1 3 1 3 3 3 2 1 2 3 1 2 2 2 5 3 4 5 3 7 1 9 0 7 5 4 9 1 1 3 9 1 3 1 2 2 2 3 3 1 1 8 0 11 3 1 4 6 1 4 2 6 6 3 1 3 3 2 1 1 2 3 3 1 7 0 6 6 6 6 5 8 1 3 3 1 3 2 1 3 5 3 4 1 3 1 1 3 5 1 8 0 9 3 7 2 9 2 6 3 1 2 1 2 2 1 1 3 1 2 1 9 0 8 2 7 6 1 4 5 1 3 1 1 2 2 2 1 2 1 3 1 7 0 10 2 3 7 3 3 8 3 1 1 1 3 1 2 2 3 1 1 4 2 1 1 2 3 4 1 5 0 6 2 4 5 1 5 1 2 2 1 2 2 1 7 0 10 1 3 1 9 1 7 8 4 7 8 2 1 1 3 3 1 1 1 9 0 6 5 1 1 8 4 1 1 3 1 1 2 3 1 1 2 4 3 5 2 1 6 6 2 3 2 6 6 2 5 5 3 5 1 5 0 11 1 2 9 5 6 8 2 2 7 6 2 2 1 3 2 3 1 6 0 9 4 3 8 6 4 1 9 3 3 1 1 1 2 2 3 1 6 0 11 4 8 6 2 9 9 4 1 4 7 8 3 1 3 3 2 2 3 3 3 1 2 3 5 1 8 0 8 8 5 6 1 4 8 2 5 1 2 2 1 3 3 2 1 1 7 0 6 1 2 1 4 3 6 2 3 2 3 1 3 3 1 6 0 11 4 7 1 6 5 1 7 9 9 5 5 1 3 2 3 1 1 3 2 3 3 4 3 5 1 7 0 11 2 5 7 2 2 8 3 7 5 1 7 3 1 3 2 1 1 1 1 5 0 8 8 1 4 9 9 8 2 9 3 1 3 1 1 1 6 0 8 7 4 1 8 7 6 7 7 3 3 3 2 2 1 2 3 3 3 4 3 6 1 5 0 8 5 6 1 5 9 7 8 5 1 3 2 3 1 1 9 0 10 1 8 2 6 7 1 2 3 8 1 3 1 1 2 3 3 1 1 1 1 7 0 8 8 2 2 7 1 3 5 1 2 3 1 2 1 3 2 3 4 5 5 3 1 3 5 1 5 0 9 1 5 8 1 3 7 5 1 9 1 2 2 3 2 1 7 0 7 4 6 1 9 1 3 7 3 3 1 3 3 1 1 1 5 0 6 8 1 1 7 1 7 3 1 1 1 1 2 1 2 2 5 4 5 4 7 6 4 5 3 6 1 5 0 7 1 1 6 8 3 1 4 2 2 1 1 2 1 8 0 9 4 5 2 7 1 1 1 1 6 2 3 3 3 2 1 3 1 1 9 0 10 4 8 1 3 2 5 4 4 1 8 3 2 1 3 2 2 1 2 3 5 1 5 1 5 1 3 5 1 7 0 8 4 9 8 8 1 4 8 6 2 3 2 3 1 3 1 1 9 0 8 5 6 9 5 9 3 3 1 1 1 2 1 2 2 1 1 1 1 7 0 6 8 4 3 1 9 7 3 2 3 2 1 3 3 5 4 4 2 3 3 6 1 8 0 6 6 7 1 2 3 6 1 1 2 2 1 2 1 2 1 5 0 8 4 7 2 5 4 1 9 1 1 3 3 1 2 1 6 0 11 3 4 4 1 8 9 3 4 9 4 4 2 1 3 1 1 3 5 3 2 2 2 3 3 5 1 6 0 9 9 9 7 6 7 8 8 1 1 1 1 1 2 3 2 1 5 0 9 1 5 6 6 6 9 7 9 1 2 2 3 1 1 1 7 0 9 3 3 1 5 2 9 7 3 4 3 3 2 1 1 2 1 2 1 3 5 1 6 1 5 4 3 5 3 3 4 1 7 0 9 1 1 4 5 2 3 9 2 3 3 1 3 2 1 1 1 1 8 0 7 1 1 1 3 2 4 9 2 1 2 1 2 3 2 3 1 9 0 7 5 1 2 5 8 9 9 3 3 1 3 1 2 1 2 1 3 4 5 1 3 4 1 7 0 11 3 2 2 3 5 7 1 4 2 6 9 1 3 1 1 3 1 1 1 5 0 7 6 4 8 2 9 3 1 2 1 3 3 1 1 7 0 11 3 9 6 9 9 5 9 7 1 3 4 2 1 1 1 1 2 1 2 2 5 2 3 6 1 5 0 11 4 9 6 8 8 1 9 1 8 8 3 1 3 2 1 3 1 6 0 8 9 9 5 8 9 1 3 1 3 1 1 1 1 3 1 9 0 6 8 4 2 6 1 3 2 2 2 1 2 1 1 1 1 2 5 4 4 1 3 3 6 1 8 0 6 9 1 5 2 4 9 2 1 2 3 1 1 3 3 1 6 0 10 1 2 5 6 8 9 2 1 3 4 2 1 1 1 2 2 1 7 0 11 4 6 4 6 9 1 8 6 9 5 9 2 3 1 2 1 1 3 3 1 5 1 1 4 3 6 1 8 0 8 3 6 1 7 5 9 5 2 2 3 3 1 2 2 2 1 1 9 0 10 8 5 9 4 1 9 1 8 9 8 1 2 2 2 3 1 1 3 3 1 8 0 6 1 4 8 7 1 1 3 1 1 3 2 3 1 1 1 3 2 1 2 2 2 4 4 5 3 3 6 1 6 0 9 1 2 9 4 6 6 8 5 5 1 2 1 3 1 3 1 8 0 8 8 9 4 1 6 7 3 6 3 2 1 3 1 2 1 1 1 5 0 8 1 6 9 6 1 1 1 1 3 3 3 1 3 1 2 1 3 3 4 3 6 1 5 0 10 7 5 5 6 8 1 4 1 8 9 2 1 1 3 1 1 5 0 6 7 1 3 8 4 8 1 1 1 1 3 1 5 0 10 5 8 4 1 4 2 7 1 6 3 3 1 1 2 3 1 4 3 3 3 1 3 4 1 8 0 10 3 3 8 8 4 1 4 5 5 1 1 2 1 1 2 3 2 1 1 8 0 10 9 6 6 7 6 1 9 8 2 4 1 2 2 2 2 2 3 1 1 8 0 6 1 5 9 2 1 4 3 2 1 2 1 1 2 3 2 2 5 5 3 5 1 5 0 9 2 6 5 7 6 1 7 7 3 1 2 1 1 1 1 7 0 7 6 1 1 3 1 1 4 3 3 1 1 1 2 3 1 7 0 10 7 2 6 9 1 7 1 4 5 4 1 1 1 1 2 3 1 3 3 4 5 4 3 7 1 7 0 9 5 9 2 6 9 2 5 1 5 1 1 1 1 2 2 2 1 9 0 6 8 7 3 9 1 9 1 1 2 3 2 3 3 1 3 1 8 0 11 1 1 9 3 8 9 7 7 7 5 6 2 3 1 2 1 1 1 3 1 3 5 5 2 5 2 2 1 5 4 3 3 4 1 6 0 6 5 1 7 8 9 6 1 2 2 2 3 2 1 5 0 7 2 3 1 6 3 1 1 2 2 1 1 2 1 8 0 11 8 9 8 5 6 5 1 1 8 8 5 2 1 1 2 2 3 3 1 3 4 2 2 3 7 1 5 0 11 6 8 3 3 4 6 8 2 7 1 9 1 3 1 2 1 1 9 0 11 6 5 7 1 1 7 1 4 5 6 7 3 1 1 3 2 2 1 1 1 1 5 0 6 6 2 1 9 6 9 3 2 1 1 2 2 2 3 3 1 2 1 3 6 1 6 0 6 7 2 2 1 5 9 1 2 1 3 3 3 1 7 0 9 6 2 4 3 6 9 4 1 5 3 1 1 1 2 2 3 1 5 0 7 4 4 7 4 1 1 9 2 3 1 3 1 5 1 5 3 2 3 3 7 1 6 0 6 1 2 9 4 4 3 1 2 1 1 1 3 1 5 0 7 1 7 6 1 9 6 6 3 3 2 1 1 1 5 0 10 9 1 5 8 6 4 8 1 1 1 1 2 1 1 3 5 2 2 4 3 1 5 5 6 1 5 4 3 6 1 8 0 6 2 8 2 3 4 1 1 1 1 1 1 2 3 2 1 7 0 11 1 4 5 1 1 7 5 3 6 5 4 1 2 1 2 3 3 3 1 8 0 10 5 6 1 1 6 8 1 9 7 3 1 1 3 1 3 1 2 2 5 2 2 2 3 1 3 4 1 6 0 9 2 8 3 5 4 2 6 5 1 1 1 2 1 3 2 1 9 0 11 7 9 9 8 8 6 6 6 2 1 5 2 3 1 3 2 3 1 2 3 1 7 0 10 7 1 5 1 5 1 7 6 1 9 1 2 2 2 3 2 1 1 4 3 3 3 5 1 5 0 6 2 6 1 8 6 8 2 2 1 3 2 1 7 0 7 1 9 8 5 8 2 7 3 3 2 1 3 2 1 1 5 0 10 5 5 4 1 1 3 8 4 4 8 2 2 1 1 1 4 2 1 1 2 3 6 1 5 0 9 3 9 1 3 7 2 2 8 3 2 1 3 2 1 1 5 0 11 1 5 9 1 4 1 5 1 4 1 8 2 2 3 1 1 1 6 0 7 9 5 8 1 1 5 3 2 2 1 1 3 3 5 3 1 3 5 2 3 7 1 5 0 9 1 9 7 9 8 9 8 6 3 2 2 2 1 1 1 5 0 10 1 6 6 3 4 7 2 3 9 3 2 2 2 2 1 1 8 0 11 4 6 5 5 1 6 2 1 3 8 9 1 1 3 1 3 1 2 2 2 5 3 2 5 2 3 2 6 3 1 4 7 7 2 5 3 3 4 1 7 0 9 9 8 6 1 9 1 1 5 2 2 3 1 2 3 2 1 1 7 0 7 2 5 9 1 3 1 1 1 2 1 1 2 3 2 1 9 0 7 9 5 2 1 7 4 4 2 2 1 3 2 1 1 3 1 2 3 5 4 3 7 1 8 0 10 3 4 1 9 9 1 5 7 9 7 3 2 3 3 1 3 3 2 1 5 0 11 2 7 3 1 3 3 6 9 9 1 8 1 1 1 1 2 1 5 0 8 5 7 1 5 9 2 3 5 3 1 1 2 1 5 3 1 1 1 3 3 3 5 1 7 0 9 7 1 2 4 1 9 4 1 6 3 1 1 2 3 1 1 1 5 0 7 1 4 9 7 2 2 9 1 2 3 1 1 1 6 0 6 3 8 3 1 5 2 1 2 3 2 2 1 2 3 2 5 1 3 5 1 6 0 7 1 2 7 7 5 6 7 3 1 3 1 2 3 1 7 0 11 1 4 1 2 8 5 4 1 5 6 3 1 2 1 1 2 3 1 1 6 0 7 1 3 6 4 7 2 6 1 3 2 1 1 3 1 3 4 1 3 3 5 1 6 0 8 5 1 9 1 1 8 2 3 1 1 3 1 2 1 1 5 0 6 1 9 1 1 5 7 1 3 1 2 2 1 7 0 7 2 6 1 5 1 9 5 2 1 1 2 1 1 2 2 5 2 2 5 1 4 1 4 4 3 4 1 7 0 9 5 1 5 5 2 2 4 7 9 3 1 1 2 3 3 3 1 6 0 7 9 5 1 3 9 9 7 1 2 1 1 3 3 1 9 0 8 1 6 1 1 4 4 1 5 1 1 3 3 3 3 1 2 3 2 5 3 2 3 5 1 6 0 11 8 9 4 1 1 8 6 2 9 7 3 2 2 3 2 1 3 1 7 0 9 1 5 8 5 9 1 4 1 6 1 2 2 3 1 1 2 1 6 0 6 6 9 3 8 1 2 3 2 1 1 2 1 4 5 3 5 5 3 7 1 8 0 6 1 4 2 3 7 4 2 1 2 1 1 2 2 2 1 9 0 7 1 1 1 6 8 1 2 1 1 3 1 1 1 1 1 2 1 5 0 8 5 1 3 5 8 1 7 8 3 1 2 3 2 4 3 1 3 5 5 1 3 5 1 5 0 7 4 8 7 1 5 1 1 3 1 3 2 2 1 7 0 7 8 1 1 4 7 1 8 3 1 3 3 1 3 2 1 6 0 11 7 8 4 2 8 8 6 7 6 1 1 2 1 1 1 1 2 5 3 3 2 1 3 3 3 4 4 5 3 5 1 5 0 10 4 7 3 6 4 1 5 6 4 5 3 1 1 1 1 1 6 0 7 2 7 7 4 4 9 1 2 2 1 1 2 2 1 9 0 8 2 7 1 3 9 9 1 2 3 2 3 1 1 2 1 3 3 4 3 3 3 2 3 4 1 5 0 10 5 1 1 6 3 9 5 5 7 3 1 3 3 2 2 1 6 0 7 2 4 9 2 1 4 7 1 3 1 1 2 2 1 6 0 11 8 2 9 6 7 6 1 1 3 6 5 3 2 1 1 1 3 1 5 2 3 3 6 1 7 0 9 3 7 4 1 8 6 5 3 4 2 2 2 1 1 1 1 1 8 0 8 9 2 4 1 3 8 4 9 1 2 2 1 3 2 1 3 1 6 0 11 4 1 1 6 5 5 7 1 8 3 6 1 1 1 1 3 3 5 2 4 4 5 2 3 5 1 6 0 11 4 7 6 1 2 6 6 2 7 8 3 2 2 1 1 1 1 1 8 0 7 1 4 5 8 2 3 4 2 3 3 2 2 1 2 2 1 6 0 11 4 1 9 6 3 3 1 9 3 6 4 3 1 2 1 1 1 2 3 4 4 3 3 5 2 1 2 4 4 3 7 1 6 0 11 5 5 3 1 6 6 7 3 8 1 8 2 2 3 3 3 1 1 5 0 6 9 1 1 5 4 1 2 3 1 3 2 1 7 0 10 5 1 5 3 2 7 6 7 7 7 2 3 2 2 1 1 2 1 4 1 5 1 3 1 3 7 1 5 0 11 2 5 7 8 4 7 9 1 5 3 9 1 1 2 1 2 1 7 0 11 8 1 1 9 5 1 2 7 5 1 2 3 2 1 1 1 1 1 1 8 0 7 5 9 4 3 7 8 1 1 3 2 3 3 1 3 1 2 3 1 3 4 3 4 3 6 1 6 0 6 6 2 4 6 1 3 2 1 1 3 3 1 1 5 0 9 6 8 7 7 1 7 1 2 5 1 1 2 3 1 1 8 0 7 4 5 6 1 3 6 8 2 2 2 2 1 2 2 1 1 4 3 5 3 5 3 7 1 8 0 9 9 2 1 4 1 9 9 7 5 3 2 2 3 2 1 3 1 1 7 0 10 8 1 1 3 7 5 1 7 9 4 2 1 3 2 2 3 2 1 7 0 11 9 1 4 7 3 2 3 8 8 8 1 2 2 1 1 3 2 1 1 3 2 4 5 4 1 2 5 4 5 4 4 3 6 1 9 0 11 5 3 7 6 3 1 3 8 5 5 4 1 2 3 3 2 1 1 1 3 1 8 0 10 4 5 7 7 8 9 6 1 7 3 1 1 1 3 3 2 1 3 1 6 0 6 1 6 6 6 7 3 3 3 2 1 3 3 3 5 3 5 5 4 3 6 1 5 0 7 3 8 5 7 2 1 1 3 2 1 3 2 1 7 0 10 3 9 5 1 3 9 5 8 6 6 1 1 2 1 2 1 1 1 9 0 7 2 1 3 2 4 8 7 2 2 3 1 3 3 3 2 1 4 3 3 1 2 5 3 7 1 7 0 8 6 7 2 1 4 7 8 4 3 3 2 2 1 1 2 1 9 0 6 9 4 7 1 6 1 3 2 3 1 3 3 2 2 1 1 7 0 6 6 2 1 9 2 9 3 3 1 1 3 2 3 3 1 5 1 3 1 3 3 6 1 7 0 7 7 5 8 3 5 1 2 1 2 1 1 3 1 1 1 9 0 6 5 1 1 8 4 8 1 1 1 1 2 2 3 2 3 1 9 0 11 9 9 5 5 1 4 1 1 6 7 2 3 3 1 2 2 2 1 3 1 2 4 1 1 2 2 3 4 3 1 5 3 3 6 1 9 0 11 6 4 6 9 4 1 5 6 2 6 4 1 1 2 3 1 3 3 2 3 1 7 0 9 6 7 1 6 8 2 5 9 2 2 2 1 3 1 1 3 1 8 0 7 1 3 3 4 5 7 1 2 3 1 1 1 1 1 3 5 3 4 5 3 1 3 7 1 9 0 9 6 5 7 1 3 1 7 1 6 1 2 1 1 1 2 3 1 1 1 5 0 9 4 7 4 3 2 1 6 4 5 1 3 2 1 2 1 5 0 7 2 8 2 8 1 5 2 1 3 1 1 1 3 3 4 3 1 3 4 3 6 1 7 0 7 1 9 8 8 7 5 4 1 2 2 3 1 2 1 1 7 0 6 8 1 3 4 6 1 1 3 3 1 1 2 1 1 5 0 9 4 1 1 7 3 4 1 6 5 1 2 3 2 1 2 1 5 3 4 2 3 4 1 7 0 10 8 2 1 7 8 9 2 1 6 9 2 2 1 1 2 1 2 1 7 0 6 1 6 3 6 8 1 2 2 1 1 2 1 1 1 6 0 10 9 1 1 1 7 4 9 6 2 5 2 3 1 2 1 3 3 2 1 1 3 6 1 7 0 7 1 5 5 3 6 3 9 2 1 2 2 3 1 1 1 7 0 10 4 6 8 3 1 8 9 3 1 4 2 3 2 2 1 1 3 1 8 0 10 9 6 8 5 4 1 2 3 1 4 3 1 1 1 1 3 3 3 1 2 5 2 2 2 7 1 2 4 5 3 7 1 6 0 6 9 9 9 1 3 9 3 3 2 2 2 1 1 6 0 11 9 7 9 9 7 9 1 1 1 1 1 3 1 3 1 2 1 1 7 0 6 3 7 9 5 4 1 2 3 1 3 3 1 1 1 3 3 5 3 5 5 3 5 1 8 0 11 1 2 5 7 1 3 6 6 2 3 8 3 2 1 1 3 2 3 1 1 5 0 11 1 5 3 3 8 2 5 1 6 7 3 3 3 2 1 1 1 8 0 10 1 8 2 9 7 9 1 1 2 7 1 3 3 1 1 1 3 3 2 2 4 1 3 3 4 1 9 0 9 1 9 3 9 1 5 3 8 6 1 1 2 3 2 3 1 3 3 1 9 0 7 7 2 2 2 6 1 6 1 2 1 1 1 2 1 2 1 1 9 0 6 6 1 8 3 4 2 3 1 2 3 2 1 3 2 2 3 1 3 3 3 7 1 5 0 10 3 3 3 3 3 1 6 7 9 4 3 1 3 3 1 1 8 0 6 5 6 1 1 3 1 2 3 2 2 1 1 3 3 1 6 0 8 1 2 7 2 1 9 3 1 1 2 2 3 1 1 3 4 2 3 4 4 4 3 3 3 3 2 9 6 6 3 5 5 3 6 1 9 0 10 8 4 3 1 2 4 3 3 8 3 2 2 2 3 1 2 1 3 3 1 5 0 6 1 7 9 2 9 1 3 1 2 2 1 1 9 0 10 4 1 2 8 2 5 5 2 7 9 1 3 2 2 2 3 1 2 2 4 3 1 3 3 4 3 7 1 9 0 8 2 3 7 7 1 3 9 5 1 2 1 1 2 3 3 1 2 1 5 0 9 7 1 6 1 5 2 2 1 3 3 1 3 2 1 1 9 0 8 1 4 5 9 1 1 3 1 1 1 1 2 3 1 3 2 1 2 4 1 2 4 4 2 3 5 1 9 0 11 8 1 5 5 4 8 1 2 6 1 9 1 3 3 3 3 1 2 3 1 1 9 0 7 9 7 2 4 5 1 4 3 1 2 1 3 2 3 1 1 1 5 0 9 1 2 4 2 5 1 9 7 5 1 2 1 1 2 4 4 5 2 3 3 5 1 6 0 8 2 4 1 1 8 2 6 8 1 2 1 2 1 2 1 7 0 9 8 1 5 8 1 4 5 4 5 1 2 3 3 2 1 2 1 8 0 10 5 9 1 3 1 1 6 9 8 4 3 1 1 3 3 2 1 3 1 2 5 2 2 3 4 1 9 0 11 4 4 2 1 8 1 7 5 8 2 7 1 1 1 2 1 1 3 2 1 1 5 0 11 8 2 9 1 5 2 9 2 8 1 7 3 1 1 1 2 1 9 0 11 9 3 3 3 1 6 2 7 4 8 3 3 1 2 2 1 1 2 2 2 2 2 1 3 2 1 5 2 5 4 3 3 7 1 5 0 6 5 2 1 2 1 7 1 2 2 1 1 1 5 0 8 8 3 5 9 1 1 9 1 3 3 1 1 1 1 9 0 6 1 4 1 9 3 3 2 3 3 1 3 3 3 1 2 3 2 5 2 1 1 4 3 6 1 7 0 9 2 1 4 7 7 5 1 2 1 2 1 1 3 2 3 3 1 8 0 7 1 4 8 8 1 2 3 1 1 3 1 1 1 3 1 1 8 0 9 1 4 6 3 9 9 3 3 7 1 1 3 1 1 3 3 2 1 3 2 4 2 5 3 6 1 8 0 11 6 9 1 3 3 2 1 7 1 8 2 3 3 1 3 2 2 2 1 1 6 0 10 5 4 6 4 6 9 2 2 1 2 3 1 1 2 2 2 1 6 0 9 1 5 2 2 8 2 6 4 1 1 1 1 1 3 1 1 2 5 2 5 1 3 6 1 9 0 8 3 9 9 2 1 6 2 7 2 1 1 1 2 3 1 3 2 1 6 0 10 2 9 9 6 9 5 8 1 6 8 1 1 3 3 1 2 1 7 0 11 4 2 2 8 1 1 3 7 1 8 7 1 1 3 3 3 2 2 1 1 4 4 1 3 6 2 6 4 5 3 6 1 7 0 9 5 6 7 1 5 6 3 2 6 3 1 3 2 1 3 2 1 8 0 10 4 3 4 3 8 2 2 4 1 1 2 2 3 1 2 3 1 1 1 6 0 6 7 4 1 9 3 6 3 3 2 3 1 2 2 4 4 5 2 4 3 6 1 8 0 11 8 8 7 2 3 5 1 7 3 1 3 2 2 2 1 2 3 3 3 1 8 0 7 4 6 9 3 6 1 2 2 1 2 3 2 2 3 1 1 9 0 9 6 8 1 3 1 1 5 5 3 1 1 1 3 3 1 3 3 1 5 3 5 4 4 3 3 5 1 8 0 10 2 6 6 5 1 3 4 6 6 6 1 3 1 2 2 3 3 2 1 5 0 8 2 6 6 5 1 9 4 7 1 1 1 3 3 1 8 0 9 1 5 2 4 3 3 1 5 2 2 3 2 2 1 2 3 1 2 4 5 2 3 3 7 1 9 0 8 8 1 5 4 1 3 5 8 1 3 1 2 2 2 1 3 1 1 9 0 8 6 4 4 3 1 9 1 7 2 1 2 3 1 1 2 2 3 1 5 0 6 4 3 1 7 1 3 2 3 1 2 3 2 5 1 3 4 1 3 5 3 3 4 2 5 5 3 7 1 8 0 9 3 8 3 3 8 7 2 3 1 1 3 1 3 1 1 3 2 1 6 0 7 3 1 3 5 9 4 2 3 3 2 1 2 1 1 6 0 6 3 2 8 1 3 5 2 1 1 3 2 1 3 2 4 5 3 1 5 3 4 1 7 0 6 2 1 3 9 6 8 2 1 3 2 1 3 3 1 9 0 6 9 9 8 6 1 6 1 1 2 1 2 3 1 1 3 1 6 0 9 5 4 1 2 7 2 1 2 1 1 3 1 1 1 3 4 5 1 4 3 5 1 9 0 7 3 4 3 8 1 1 5 2 1 1 1 1 3 2 3 1 1 9 0 7 4 4 1 8 3 1 2 3 3 1 2 1 3 1 1 1 1 7 0 11 5 4 5 4 7 2 8 1 1 2 4 3 3 1 2 3 2 2 3 5 3 5 2 3 4 1 6 0 6 3 1 2 6 9 1 1 2 2 1 2 3 1 5 0 9 8 2 6 7 8 3 1 7 1 2 2 1 3 2 1 5 0 10 3 1 1 8 4 5 1 4 5 2 1 1 1 3 2 3 1 2 5 3 5 1 5 0 11 4 6 1 8 8 1 6 5 3 8 2 1 1 3 1 1 1 5 0 10 1 5 1 1 5 1 1 7 7 9 3 3 1 1 1 1 6 0 7 9 4 6 1 9 8 9 2 3 2 3 1 3 2 1 1 1 4 1 7 6 5 6 5 5 3 7 1 8 0 7 1 9 6 1 4 6 7 1 3 2 3 2 2 3 2 1 7 0 6 9 6 5 6 1 1 1 1 2 3 3 2 1 1 6 0 11 1 7 1 9 8 4 2 4 3 9 9 3 3 3 1 2 3 3 3 2 3 5 1 4 3 4 1 7 0 8 9 1 7 2 5 8 9 5 1 2 2 2 1 2 3 1 9 0 9 6 1 9 4 7 2 5 4 2 3 2 3 1 3 1 2 1 3 1 5 0 10 4 7 7 4 2 1 4 1 9 9 1 3 2 1 2 3 1 3 4 3 5 1 8 0 8 4 1 7 6 2 8 9 3 1 1 1 1 1 1 2 3 1 6 0 8 8 2 9 9 4 1 1 1 1 2 1 1 1 1 1 8 0 6 4 7 1 8 1 8 1 3 2 3 1 2 1 1 3 2 3 4 2 3 4 1 6 0 10 7 1 4 2 3 1 1 8 4 4 1 1 3 2 1 1 1 8 0 10 7 9 4 7 7 1 8 8 1 2 3 1 1 3 3 2 3 1 1 5 0 9 4 1 9 1 6 9 9 2 6 2 3 3 1 1 1 3 1 4 3 5 1 7 0 9 9 3 8 3 8 1 1 1 6 1 1 1 3 1 1 1 1 7 0 11 3 6 5 3 1 4 6 9 9 6 1 2 1 3 2 3 1 1 1 9 0 6 1 3 3 9 6 1 2 2 1 3 1 3 2 2 3 5 2 1 2 3 3 1 1 5 3 5 5 3 4 1 5 0 11 7 1 8 3 8 4 1 4 3 1 1 3 2 1 3 3 1 8 0 10 4 5 4 9 1 6 4 5 1 1 1 2 2 1 1 1 2 3 1 5 0 10 3 1 4 9 3 7 6 7 1 3 3 1 1 1 1 2 2 3 4 3 5 1 6 0 10 1 4 4 4 7 4 8 5 1 9 1 2 1 2 1 1 1 9 0 11 4 3 4 1 5 6 1 1 5 1 7 1 3 2 1 3 2 1 3 3 1 6 0 8 1 3 3 5 6 1 4 3 1 2 1 1 1 3 3 4 4 4 4 3 6 1 9 0 10 1 4 2 5 2 6 8 3 3 8 3 1 2 1 2 1 2 2 2 1 9 0 7 1 1 9 3 3 1 2 2 3 1 2 3 2 3 1 3 1 9 0 8 3 3 5 1 5 7 3 8 1 2 1 1 3 2 2 2 1 4 1 5 4 5 3 3 5 1 5 0 6 9 1 6 5 1 7 1 1 3 2 1 1 9 0 11 1 9 8 5 3 7 2 3 4 6 4 1 2 1 1 2 2 3 3 2 1 7 0 7 1 9 7 6 1 3 6 1 1 1 1 1 3 3 4 3 4 2 2 3 4 1 9 0 10 3 5 2 3 6 7 8 9 1 7 2 1 2 3 3 2 3 1 2 1 8 0 8 4 1 2 4 5 1 2 5 1 1 3 2 1 1 3 2 1 8 0 6 1 3 3 5 1 1 3 1 1 3 3 1 2 2 5 4 2 1 5 5 2 5 6 6 4 2 7 2 4 5 3 7 1 6 0 8 1 1 4 1 1 9 2 8 1 1 2 2 1 3 1 6 0 7 1 7 7 6 8 5 9 2 3 1 2 1 1 1 6 0 8 2 6 5 4 1 4 2 1 1 1 2 1 3 1 4 1 2 2 1 1 1 3 6 1 8 0 9 1 9 5 7 6 4 3 2 1 3 2 1 1 2 2 1 1 1 9 0 6 6 5 3 9 1 1 1 3 1 3 3 1 2 1 3 1 6 0 10 6 8 1 9 5 8 4 4 2 1 2 1 1 1 3 2 3 1 1 3 4 2 3 5 1 8 0 11 5 2 8 1 5 4 8 1 3 1 3 3 2 1 2 2 1 3 3 1 6 0 6 1 2 7 6 1 6 2 2 1 1 1 3 1 9 0 9 4 8 5 3 1 8 6 1 7 1 3 3 2 3 2 1 3 1 3 2 1 4 1 3 5 1 7 0 10 7 5 6 5 4 2 1 9 9 5 1 1 3 1 3 3 1 1 9 0 7 3 5 6 9 1 4 1 1 1 2 1 2 3 2 1 3 1 8 0 6 7 5 1 1 9 9 1 2 2 1 2 2 2 1 2 4 5 1 4 2 5 4 1 3 4 3 3 5 1 7 0 6 1 4 7 8 2 2 1 1 3 2 2 3 3 1 6 0 8 1 6 5 3 6 4 1 8 1 1 3 2 3 1 1 7 0 10 3 1 7 5 6 1 1 2 2 6 3 1 3 1 1 2 2 3 3 5 5 5 3 7 1 7 0 11 2 1 7 5 6 1 1 3 2 3 5 1 2 2 1 2 3 2 1 5 0 10 5 8 5 9 3 6 1 3 5 1 3 1 1 3 2 1 8 0 8 1 9 5 2 4 7 1 5 1 2 1 2 3 1 2 2 4 5 2 5 4 2 2 3 4 1 9 0 11 2 1 1 9 8 1 1 1 9 1 1 2 1 1 3 1 3 1 1 2 1 9 0 8 9 8 2 1 2 6 5 2 3 3 3 1 1 3 2 3 1 1 5 0 10 9 4 9 2 6 1 7 6 9 8 3 1 1 3 1 1 5 2 3 3 4 1 8 0 8 8 7 3 7 1 3 1 7 1 3 3 1 3 1 3 1 1 7 0 11 3 5 9 8 1 3 1 1 8 3 6 2 2 3 1 2 1 1 1 5 0 10 9 2 3 8 3 3 1 4 3 1 2 1 1 2 3 3 5 1 1 3 4 4 4 3 3 4 1 8 0 9 6 1 9 2 2 7 2 5 9 3 3 1 3 1 3 2 2 1 6 0 11 7 1 6 2 5 4 6 3 5 3 3 3 3 3 2 2 1 1 7 0 9 7 3 8 2 1 7 2 7 6 1 2 2 3 2 3 2 3 2 4 3 3 6 1 8 0 11 9 1 8 4 7 9 5 4 6 2 4 1 2 1 2 2 2 2 1 1 5 0 9 6 7 6 9 2 2 1 6 9 3 1 3 2 2 1 9 0 8 3 1 5 5 1 6 4 9 3 1 2 1 1 2 1 2 1 2 2 2 5 2 1 3 5 1 5 0 9 1 2 2 6 6 8 5 1 2 1 2 3 3 1 1 8 0 6 4 8 1 7 1 8 2 1 1 3 2 2 1 2 1 8 0 9 9 8 3 4 2 6 8 1 8 1 3 3 1 2 2 3 1 1 2 1 4 5 3 4 1 6 0 11 1 3 4 1 5 8 5 8 8 1 8 3 1 3 1 2 2 1 7 0 8 3 8 1 8 7 7 6 7 1 1 2 1 1 2 3 1 7 0 10 3 5 6 1 5 9 3 9 8 1 1 1 3 3 2 3 1 1 5 5 2 3 1 1 5 5 3 5 1 5 0 9 7 5 1 4 1 1 7 1 1 1 2 1 3 3 1 9 0 7 1 3 2 5 4 3 7 1 2 2 3 2 1 3 1 3 1 5 0 9 1 1 3 9 8 8 1 5 1 1 1 3 1 2 1 2 4 3 5 3 4 1 5 0 7 3 1 1 5 3 9 6 1 1 1 1 1 1 5 0 7 1 7 4 4 1 8 5 3 1 3 2 2 1 8 0 11 8 1 8 6 7 6 2 1 9 1 1 2 1 3 1 1 1 3 1 4 2 1 2 3 6 1 6 0 8 7 3 8 3 7 7 1 9 2 1 2 1 3 1 1 8 0 8 4 5 4 8 2 1 6 8 3 1 1 2 3 2 1 1 1 6 0 8 7 5 9 1 6 9 3 7 2 3 3 2 1 1 3 3 3 1 2 2 3 7 1 7 0 10 2 3 5 3 4 1 1 5 3 1 1 2 3 3 3 2 1 1 8 0 7 8 1 4 7 3 1 4 3 2 3 1 1 2 1 3 1 7 0 9 6 3 1 9 8 1 2 2 7 3 1 3 2 1 1 2 3 3 4 5 2 2 1 3 6 1 5 0 7 6 9 1 3 3 3 1 2 1 1 3 3 1 5 0 7 4 1 4 3 8 4 3 3 2 1 3 1 1 8 0 9 9 9 1 7 6 7 4 3 7 1 2 2 2 1 1 3 1 3 5 4 4 1 3 5 3 7 6 7 5 5 3 5 1 7 0 8 5 3 1 3 2 6 9 6 1 2 3 3 3 3 1 1 5 0 9 6 7 2 9 1 6 7 6 9 2 2 1 1 3 1 5 0 6 9 4 9 1 4 6 3 2 3 1 1 3 4 4 1 3 3 5 1 5 0 11 1 5 4 1 9 9 4 2 6 8 1 3 1 2 3 1 1 5 0 10 1 2 4 7 2 3 7 8 2 1 1 3 3 1 1 1 5 0 10 3 5 4 1 8 1 3 1 4 7 1 3 1 1 1 2 2 5 5 2 3 7 1 8 0 11 3 7 9 1 5 1 1 4 6 7 6 3 2 2 3 1 1 3 2 1 8 0 9 7 5 3 9 2 7 6 1 2 2 3 2 3 3 3 1 1 1 9 0 10 7 1 1 1 9 1 5 4 8 1 1 1 1 3 2 1 1 1 3 2 2 2 3 2 1 1 3 5 1 6 0 7 8 1 8 1 2 6 2 2 3 1 3 1 1 1 6 0 6 9 8 2 1 3 5 1 3 3 2 3 2 1 5 0 10 4 4 6 1 7 5 8 1 4 5 2 1 1 3 1 5 1 2 3 3 3 4 1 9 0 11 9 8 6 3 1 9 9 2 4 2 1 2 1 2 3 3 3 2 2 1 1 9 0 6 8 4 7 1 2 9 3 3 2 2 1 2 3 3 3 1 7 0 10 5 4 6 7 7 4 2 1 8 1 3 1 3 2 1 3 1 4 2 3 3 2 3 5 5 7 4 4 3 4 1 5 0 8 5 2 6 8 7 2 6 1 3 1 2 1 3 1 8 0 8 6 5 2 4 1 6 9 3 3 2 3 2 3 3 2 1 1 8 0 10 6 5 6 1 3 6 7 8 2 6 3 1 2 1 3 3 2 1 3 3 1 2 3 5 1 5 0 11 7 5 2 7 1 9 1 1 7 2 6 1 2 2 1 2 1 6 0 8 9 7 6 1 7 8 8 8 1 2 1 3 1 3 1 7 0 7 3 6 1 7 5 6 5 1 1 2 1 3 3 3 3 4 1 2 1 3 5 1 9 0 6 1 6 4 1 3 9 1 1 1 2 3 1 2 1 1 1 7 0 6 2 6 1 1 5 5 3 3 1 3 3 2 2 1 8 0 11 2 7 4 8 4 6 4 5 5 5 1 3 3 3 3 1 2 3 3 1 3 5 1 4 3 5 1 5 0 8 9 6 1 5 5 7 9 9 3 1 3 2 1 1 9 0 9 1 1 2 6 1 5 6 2 5 2 1 3 1 2 1 3 2 1 1 8 0 10 7 1 9 3 8 4 3 4 1 5 1 1 1 1 1 1 3 3 4 2 3 1 1 3 3 5 4 4 3 3 7 1 6 0 10 3 1 4 4 3 5 1 1 1 6 3 2 2 1 1 1 1 8 0 6 1 6 8 3 1 7 1 2 3 3 1 1 1 1 1 5 0 9 9 4 7 1 3 6 8 5 8 3 1 2 3 3 3 4 4 1 2 1 3 3 7 1 5 0 8 8 5 6 8 5 1 4 4 1 3 2 1 3 1 9 0 10 9 6 6 2 1 1 1 3 6 3 3 1 3 1 2 1 1 1 1 1 5 0 8 9 5 1 3 2 4 7 9 1 3 1 2 1 5 5 2 4 2 3 1 3 5 1 5 0 6 7 9 5 1 2 4 1 3 1 2 2 1 6 0 11 3 5 8 7 1 1 7 2 8 7 8 1 1 2 2 2 1 1 7 0 7 1 9 9 5 9 4 4 3 2 2 1 2 1 1 2 5 4 1 3 3 4 1 5 0 10 3 2 2 3 1 5 2 5 3 5 3 2 1 2 1 1 7 0 11 1 9 2 2 8 3 3 1 5 6 7 3 1 1 1 2 1 3 1 8 0 6 1 1 3 1 1 4 2 3 3 1 3 2 3 3 3 2 2 4 4 2 3 6 4 4 6 4 5 9 9 6 8 3 1 3 diff --git a/08/part1.js b/08/part1.js new file mode 100644 index 0000000..7b374aa --- /dev/null +++ b/08/part1.js @@ -0,0 +1,28 @@ +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])); diff --git a/08/part2.js b/08/part2.js new file mode 100644 index 0000000..fec4599 --- /dev/null +++ b/08/part2.js @@ -0,0 +1,29 @@ +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 nodeValue(node){ + var total = 0; + if(node.children.length){ + return node.meta.map(a=>(a-1)).map(a=>(node.children[a])).filter(a=>(a)).map(n=>(nodeValue(n))).reduce((a,b)=>(a+b), 0); + } + else{ + return node.meta.reduce((a,b)=>(a+b)); + } +} + +console.log(nodeValue(parseTree(nums)[0]));