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