Day 14. Forgot to keep the solution for part 1
This commit is contained in:
parent
d547c86c17
commit
c1e0aa3c9a
3 changed files with 223 additions and 0 deletions
2
2022/14/example.txt
Normal file
2
2022/14/example.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
498,4 -> 498,6 -> 496,6
|
||||||
|
503,4 -> 502,4 -> 502,9 -> 494,9
|
92
2022/14/index.js
Normal file
92
2022/14/index.js
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
const fs = require('fs/promises');
|
||||||
|
|
||||||
|
const sum = (arr) => arr.reduce((total, num) => total+num, 0);
|
||||||
|
const arrayOfLength = n => Array.from(Array(n).keys()).map(() => {});
|
||||||
|
|
||||||
|
const main = async () => {
|
||||||
|
const input = (await fs.readFile("./input.txt", 'utf8')).split("\n");
|
||||||
|
|
||||||
|
const coord = ([x, y]) => {
|
||||||
|
|
||||||
|
if(isNaN(x) || typeof y === "undefined") {
|
||||||
|
throw new Error("");
|
||||||
|
}
|
||||||
|
return `${x}-${y}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
let sandUnitCount = 0;
|
||||||
|
|
||||||
|
|
||||||
|
const fillPath = ([x1, y1], [x2, y2]) => {
|
||||||
|
const fillIns = [];
|
||||||
|
if(x1 === x2) {
|
||||||
|
const yDiff = y2 - y1;
|
||||||
|
for(let y = y1; y !== y2; y = y + (Math.abs(yDiff)/yDiff)) {
|
||||||
|
fillIns.push(coord([x1, y]));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const xDiff = x2 - x1;
|
||||||
|
|
||||||
|
for(let x = x1; x !== x2; x = x + (xDiff/Math.abs(xDiff))) {
|
||||||
|
fillIns.push(coord([x, y1]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return fillIns;
|
||||||
|
|
||||||
|
};
|
||||||
|
const grid = input.reduce((obj, row, i) => {
|
||||||
|
if(row === "" ) {
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
const path = row.split(" -> ");
|
||||||
|
for(let i = 0; i < path.length - 1; i++) {
|
||||||
|
const start = path[i].split(",").map(x => parseInt(x));
|
||||||
|
const end = path[i + 1].split(",").map(x => parseInt(x));
|
||||||
|
|
||||||
|
const filledIn = fillPath(start, end);
|
||||||
|
filledIn.forEach(x => obj[x] = "#")
|
||||||
|
}
|
||||||
|
const lastRock = path[path.length - 1].split(",").map(x => parseInt(x))
|
||||||
|
obj[coord(lastRock)] = "#";
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
}, {})
|
||||||
|
|
||||||
|
const sandFall = (x, y) => {
|
||||||
|
if(y === 174) {
|
||||||
|
return [x, y];
|
||||||
|
}
|
||||||
|
if(!grid[coord([x, y + 1])]) {
|
||||||
|
return sandFall(x, y + 1);
|
||||||
|
}
|
||||||
|
if(!grid[coord([x - 1, y + 1])]) {
|
||||||
|
return sandFall(x - 1, y + 1);
|
||||||
|
}
|
||||||
|
if(!grid[coord([x + 1, y + 1])]) {
|
||||||
|
return sandFall(x + 1, y + 1);
|
||||||
|
}
|
||||||
|
return [x, y];
|
||||||
|
};
|
||||||
|
|
||||||
|
const print = () => {
|
||||||
|
for(let y = 0; y < 175; ++y) {
|
||||||
|
console.log(arrayOfLength(100).map((_, i) => grid[coord([i + 450, y])] || ".").join(""));
|
||||||
|
}
|
||||||
|
console.log("\n\n\n")
|
||||||
|
console.log("Sand count: ", sandUnitCount);
|
||||||
|
};
|
||||||
|
|
||||||
|
while(true) {
|
||||||
|
const loc = sandFall(500, 0);
|
||||||
|
sandUnitCount++;
|
||||||
|
grid[coord(loc)] = "o";
|
||||||
|
console.log("Location of sand: ", loc);
|
||||||
|
if(loc[0] === 500 && loc[1] === 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log("Answer: ", sandUnitCount);
|
||||||
|
print();
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
129
2022/14/input.txt
Normal file
129
2022/14/input.txt
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
484,41 -> 484,42 -> 495,42 -> 495,41
|
||||||
|
494,51 -> 498,51
|
||||||
|
470,158 -> 475,158
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
468,123 -> 468,127 -> 460,127 -> 460,132 -> 474,132 -> 474,127 -> 473,127 -> 473,123
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
458,171 -> 462,171
|
||||||
|
473,73 -> 473,77 -> 466,77 -> 466,82 -> 485,82 -> 485,77 -> 477,77 -> 477,73
|
||||||
|
492,162 -> 497,162
|
||||||
|
494,27 -> 498,27
|
||||||
|
471,162 -> 476,162
|
||||||
|
480,156 -> 485,156
|
||||||
|
498,13 -> 498,17 -> 497,17 -> 497,24 -> 505,24 -> 505,17 -> 502,17 -> 502,13
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
461,165 -> 465,165
|
||||||
|
477,70 -> 487,70 -> 487,69
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
473,73 -> 473,77 -> 466,77 -> 466,82 -> 485,82 -> 485,77 -> 477,77 -> 477,73
|
||||||
|
462,85 -> 462,88 -> 454,88 -> 454,94 -> 470,94 -> 470,88 -> 466,88 -> 466,85
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
482,37 -> 488,37 -> 488,36
|
||||||
|
473,73 -> 473,77 -> 466,77 -> 466,82 -> 485,82 -> 485,77 -> 477,77 -> 477,73
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
464,162 -> 469,162
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
473,173 -> 477,173
|
||||||
|
462,85 -> 462,88 -> 454,88 -> 454,94 -> 470,94 -> 470,88 -> 466,88 -> 466,85
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
473,73 -> 473,77 -> 466,77 -> 466,82 -> 485,82 -> 485,77 -> 477,77 -> 477,73
|
||||||
|
498,13 -> 498,17 -> 497,17 -> 497,24 -> 505,24 -> 505,17 -> 502,17 -> 502,13
|
||||||
|
464,167 -> 468,167
|
||||||
|
468,107 -> 468,100 -> 468,107 -> 470,107 -> 470,104 -> 470,107 -> 472,107 -> 472,97 -> 472,107
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
476,154 -> 481,154
|
||||||
|
461,173 -> 465,173
|
||||||
|
468,123 -> 468,127 -> 460,127 -> 460,132 -> 474,132 -> 474,127 -> 473,127 -> 473,123
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
468,107 -> 468,100 -> 468,107 -> 470,107 -> 470,104 -> 470,107 -> 472,107 -> 472,97 -> 472,107
|
||||||
|
494,33 -> 498,33
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
477,70 -> 487,70 -> 487,69
|
||||||
|
473,156 -> 478,156
|
||||||
|
455,173 -> 459,173
|
||||||
|
478,162 -> 483,162
|
||||||
|
462,85 -> 462,88 -> 454,88 -> 454,94 -> 470,94 -> 470,88 -> 466,88 -> 466,85
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
467,173 -> 471,173
|
||||||
|
498,13 -> 498,17 -> 497,17 -> 497,24 -> 505,24 -> 505,17 -> 502,17 -> 502,13
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
484,41 -> 484,42 -> 495,42 -> 495,41
|
||||||
|
497,30 -> 501,30
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
498,13 -> 498,17 -> 497,17 -> 497,24 -> 505,24 -> 505,17 -> 502,17 -> 502,13
|
||||||
|
498,13 -> 498,17 -> 497,17 -> 497,24 -> 505,24 -> 505,17 -> 502,17 -> 502,13
|
||||||
|
468,123 -> 468,127 -> 460,127 -> 460,132 -> 474,132 -> 474,127 -> 473,127 -> 473,123
|
||||||
|
485,162 -> 490,162
|
||||||
|
482,37 -> 488,37 -> 488,36
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
491,30 -> 495,30
|
||||||
|
468,107 -> 468,100 -> 468,107 -> 470,107 -> 470,104 -> 470,107 -> 472,107 -> 472,97 -> 472,107
|
||||||
|
467,169 -> 471,169
|
||||||
|
452,171 -> 456,171
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
464,171 -> 468,171
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
484,41 -> 484,42 -> 495,42 -> 495,41
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
468,123 -> 468,127 -> 460,127 -> 460,132 -> 474,132 -> 474,127 -> 473,127 -> 473,123
|
||||||
|
474,160 -> 479,160
|
||||||
|
500,51 -> 504,51
|
||||||
|
494,45 -> 498,45
|
||||||
|
461,169 -> 465,169
|
||||||
|
468,123 -> 468,127 -> 460,127 -> 460,132 -> 474,132 -> 474,127 -> 473,127 -> 473,123
|
||||||
|
488,51 -> 492,51
|
||||||
|
458,167 -> 462,167
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
468,107 -> 468,100 -> 468,107 -> 470,107 -> 470,104 -> 470,107 -> 472,107 -> 472,97 -> 472,107
|
||||||
|
498,13 -> 498,17 -> 497,17 -> 497,24 -> 505,24 -> 505,17 -> 502,17 -> 502,13
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
466,137 -> 466,138 -> 484,138
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
468,107 -> 468,100 -> 468,107 -> 470,107 -> 470,104 -> 470,107 -> 472,107 -> 472,97 -> 472,107
|
||||||
|
468,107 -> 468,100 -> 468,107 -> 470,107 -> 470,104 -> 470,107 -> 472,107 -> 472,97 -> 472,107
|
||||||
|
468,107 -> 468,100 -> 468,107 -> 470,107 -> 470,104 -> 470,107 -> 472,107 -> 472,97 -> 472,107
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
468,123 -> 468,127 -> 460,127 -> 460,132 -> 474,132 -> 474,127 -> 473,127 -> 473,123
|
||||||
|
498,13 -> 498,17 -> 497,17 -> 497,24 -> 505,24 -> 505,17 -> 502,17 -> 502,13
|
||||||
|
467,160 -> 472,160
|
||||||
|
468,107 -> 468,100 -> 468,107 -> 470,107 -> 470,104 -> 470,107 -> 472,107 -> 472,97 -> 472,107
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
481,160 -> 486,160
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
497,48 -> 501,48
|
||||||
|
491,48 -> 495,48
|
||||||
|
455,169 -> 459,169
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
500,33 -> 504,33
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
449,173 -> 453,173
|
||||||
|
473,73 -> 473,77 -> 466,77 -> 466,82 -> 485,82 -> 485,77 -> 477,77 -> 477,73
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
470,171 -> 474,171
|
||||||
|
477,158 -> 482,158
|
||||||
|
468,123 -> 468,127 -> 460,127 -> 460,132 -> 474,132 -> 474,127 -> 473,127 -> 473,123
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
462,120 -> 462,112 -> 462,120 -> 464,120 -> 464,114 -> 464,120 -> 466,120 -> 466,119 -> 466,120 -> 468,120 -> 468,118 -> 468,120 -> 470,120 -> 470,119 -> 470,120
|
||||||
|
473,73 -> 473,77 -> 466,77 -> 466,82 -> 485,82 -> 485,77 -> 477,77 -> 477,73
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
473,73 -> 473,77 -> 466,77 -> 466,82 -> 485,82 -> 485,77 -> 477,77 -> 477,73
|
||||||
|
466,137 -> 466,138 -> 484,138
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
484,158 -> 489,158
|
||||||
|
462,85 -> 462,88 -> 454,88 -> 454,94 -> 470,94 -> 470,88 -> 466,88 -> 466,85
|
||||||
|
462,85 -> 462,88 -> 454,88 -> 454,94 -> 470,94 -> 470,88 -> 466,88 -> 466,85
|
||||||
|
488,33 -> 492,33
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
462,85 -> 462,88 -> 454,88 -> 454,94 -> 470,94 -> 470,88 -> 466,88 -> 466,85
|
||||||
|
480,151 -> 480,145 -> 480,151 -> 482,151 -> 482,150 -> 482,151 -> 484,151 -> 484,144 -> 484,151 -> 486,151 -> 486,148 -> 486,151 -> 488,151 -> 488,142 -> 488,151
|
||||||
|
482,64 -> 482,59 -> 482,64 -> 484,64 -> 484,55 -> 484,64 -> 486,64 -> 486,58 -> 486,64 -> 488,64 -> 488,54 -> 488,64 -> 490,64 -> 490,55 -> 490,64
|
||||||
|
488,160 -> 493,160
|
||||||
|
462,85 -> 462,88 -> 454,88 -> 454,94 -> 470,94 -> 470,88 -> 466,88 -> 466,85
|
Loading…
Reference in a new issue