Created
December 15, 2024 22:50
-
-
Save hyunwoona/44e306cdd6d55c169d5500f09d445297 to your computer and use it in GitHub Desktop.
Advent of code 12/14/24
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const map = | |
| [ | |
| [44,70,-47,36], | |
| [56,4,69,91], | |
| [6,30,-52,-60], | |
| [64,4,35,44], | |
| [57,22,-56,48], | |
| [5,22,18,37], | |
| [2,48,88,-65], | |
| [80,54,28,-40], | |
| [76,0,98,4], | |
| [7,89,33,-33], | |
| [25,30,-15,70], | |
| [92,41,35,80], | |
| [39,6,-47,-20], | |
| [30,82,97,8], | |
| [8,67,-44,-59], | |
| [87,24,-51,83], | |
| [83,33,43,73], | |
| [95,59,50,90], | |
| [10,69,-47,-44], | |
| [15,15,91,98], | |
| [73,21,-24,77], | |
| [11,22,2,-82], | |
| [87,95,65,-42], | |
| [26,47,33,-20], | |
| [50,58,69,-62], | |
| [88,60,12,68], | |
| [82,15,-97,10], | |
| [47,83,81,-93], | |
| [96,92,47,-61], | |
| [1,30,18,84], | |
| [21,51,49,50], | |
| [49,18,-70,-88], | |
| [52,0,54,39], | |
| [46,30,61,97], | |
| [13,17,10,-51], | |
| [72,85,21,-45], | |
| [99,57,42,49], | |
| [96,26,74,8], | |
| [79,31,-66,55], | |
| [0,80,-3,29], | |
| [19,89,56,-45], | |
| [13,85,-58,-59], | |
| [34,51,-84,-38], | |
| [67,96,-10,-42], | |
| [75,1,-11,23], | |
| [30,54,85,25], | |
| [95,66,81,79], | |
| [19,77,87,82], | |
| [32,29,-85,-22], | |
| [52,73,14,52], | |
| [82,84,43,93], | |
| [74,88,66,-99], | |
| [47,18,-71,-31], | |
| [98,71,2,36], | |
| [28,70,24,-83], | |
| [91,42,-90,46], | |
| [54,101,69,-53], | |
| [33,77,-34,70], | |
| [0,64,95,98], | |
| [56,63,-17,-37], | |
| [43,88,-94,47], | |
| [31,67,43,72], | |
| [72,26,-96,-14], | |
| [52,6,-56,-96], | |
| [41,67,39,6], | |
| [15,18,-14,-63], | |
| [73,60,23,-79], | |
| [20,54,95,97], | |
| [66,41,96,-36], | |
| [80,0,56,-71], | |
| [83,41,-11,43], | |
| [59,0,44,-64], | |
| [92,20,-35,-6], | |
| [85,102,44,-73], | |
| [24,20,-87,-6], | |
| [99,52,24,-66], | |
| [40,54,-32,84], | |
| [86,53,-10,-5], | |
| [69,43,-80,32], | |
| [81,95,98,15], | |
| [55,76,-76,36], | |
| [93,68,28,85], | |
| [52,6,38,-96], | |
| [76,22,-74,-17], | |
| [7,93,63,67], | |
| [83,12,18,51], | |
| [42,100,-38,37], | |
| [47,22,-39,10], | |
| [85,7,-19,-12], | |
| [39,5,26,-67], | |
| [26,38,-38,-63], | |
| [95,34,35,-33], | |
| [67,78,-96,-17], | |
| [51,52,92,-19], | |
| [14,91,-6,-83], | |
| [22,83,17,-42], | |
| [26,38,-55,-73], | |
| [84,76,-50,-48], | |
| [15,42,72,3], | |
| [68,32,-19,-63], | |
| [40,39,32,49], | |
| [35,87,48,17], | |
| [32,81,43,5], | |
| [66,71,93,40], | |
| [1,59,80,68], | |
| [99,60,38,71], | |
| [66,29,44,32], | |
| [13,18,-29,59], | |
| [27,39,-84,5], | |
| [21,96,-53,-64], | |
| [49,30,-55,-79], | |
| [36,51,-81,53], | |
| [38,6,-31,-4], | |
| [4,79,-84,-34], | |
| [1,1,25,-85], | |
| [28,46,-89,62], | |
| [79,38,-8,-8], | |
| [24,84,-45,-75], | |
| [55,23,-71,-69], | |
| [55,7,90,69], | |
| [37,34,39,16], | |
| [62,70,83,-32], | |
| [99,84,-84,45], | |
| [75,83,28,9], | |
| [15,41,55,92], | |
| [73,99,-64,56], | |
| [65,3,4,16], | |
| [17,30,-15,-9], | |
| [4,73,81,-51], | |
| [13,41,-91,54], | |
| [49,47,-32,38], | |
| [92,82,98,63], | |
| [67,27,40,-39], | |
| [49,52,-1,19], | |
| [73,83,-62,-56], | |
| [8,89,92,9], | |
| [97,43,18,-81], | |
| [59,30,60,78], | |
| [4,43,-99,-81], | |
| [36,78,47,-14], | |
| [9,79,-52,-15], | |
| [36,97,39,-83], | |
| [62,15,-41,-47], | |
| [50,2,-93,-4], | |
| [95,10,-65,-87], | |
| [63,69,68,71], | |
| [0,96,65,80], | |
| [44,74,29,46], | |
| [100,77,-63,44], | |
| [29,0,-46,53], | |
| [58,63,-18,93], | |
| [48,7,-55,-85], | |
| [2,71,-45,-29], | |
| [67,26,97,73], | |
| [76,50,84,-31], | |
| [68,0,-18,-58], | |
| [4,45,57,38], | |
| [23,94,-30,31], | |
| [41,26,-68,5], | |
| [36,52,-55,-3], | |
| [33,96,7,96], | |
| [61,25,99,-1], | |
| [86,52,-68,23], | |
| [7,43,59,-71], | |
| [52,17,53,75], | |
| [27,84,-75,-16], | |
| [12,54,64,89], | |
| [5,37,88,89], | |
| [8,51,84,-82], | |
| [97,30,-4,84], | |
| [68,8,-81,78], | |
| [93,79,-36,88], | |
| [55,14,-17,58], | |
| [9,65,-29,22], | |
| [4,81,97,-21], | |
| [99,81,89,55], | |
| [18,30,-61,-60], | |
| [34,102,-15,-88], | |
| [96,42,-20,-76], | |
| [25,46,-79,41], | |
| [56,44,-96,56], | |
| [66,8,-57,72], | |
| [36,87,79,82], | |
| [64,9,59,-23], | |
| [1,49,21,6], | |
| [38,59,-40,-73], | |
| [41,102,5,94], | |
| [19,87,57,-83], | |
| [30,75,24,85], | |
| [67,83,-18,58], | |
| [68,3,61,-7], | |
| [43,49,48,-16], | |
| [8,99,-67,-46], | |
| [42,58,68,-62], | |
| [70,35,-10,24], | |
| [34,32,39,29], | |
| [19,9,46,78], | |
| [1,52,4,-49], | |
| [41,57,77,82], | |
| [32,97,-70,-26], | |
| [57,19,61,75], | |
| [83,15,97,5], | |
| [1,9,87,65], | |
| [18,31,-61,51], | |
| [76,27,85,-29], | |
| [68,29,21,21], | |
| [93,29,89,-30], | |
| [37,10,70,34], | |
| [75,1,-96,47], | |
| [92,40,-42,-35], | |
| [21,20,-61,2], | |
| [84,13,16,42], | |
| [60,16,68,78], | |
| [33,87,94,34], | |
| [53,51,45,27], | |
| [24,90,71,91], | |
| [30,36,68,-46], | |
| [59,32,68,-79], | |
| [95,54,-90,25], | |
| [51,71,-40,14], | |
| [57,100,-40,-82], | |
| [31,4,-69,80], | |
| [84,38,8,41], | |
| [76,5,-49,15], | |
| [29,95,-7,23], | |
| [31,48,46,41], | |
| [71,46,-41,27], | |
| [8,54,-25,-37], | |
| [12,65,-22,-65], | |
| [28,54,29,-27], | |
| [81,26,-76,-75], | |
| [62,4,-17,15], | |
| [54,12,-96,56], | |
| [80,42,-96,17], | |
| [3,44,-13,11], | |
| [35,95,69,26], | |
| [30,32,-8,29], | |
| [76,85,49,-84], | |
| [77,102,67,-88], | |
| [1,37,-28,-32], | |
| [25,88,-77,39], | |
| [83,3,-58,-20], | |
| [96,10,-20,45], | |
| [61,7,94,6], | |
| [84,100,-58,-23], | |
| [26,76,55,-33], | |
| [20,91,-37,20], | |
| [51,22,14,-93], | |
| [53,84,23,90], | |
| [75,68,-25,82], | |
| [45,57,-25,46], | |
| [20,97,-43,26], | |
| [11,70,58,-57], | |
| [11,5,-27,57], | |
| [25,81,9,-56], | |
| [94,87,42,34], | |
| [18,3,-45,18], | |
| [59,87,84,12], | |
| [88,64,75,11], | |
| [12,83,-9,-68], | |
| [33,52,72,-71], | |
| [29,17,-38,53], | |
| [95,5,19,-64], | |
| [32,32,-11,-9], | |
| [87,96,-62,59], | |
| [57,3,-78,-91], | |
| [60,88,29,39], | |
| [98,27,43,-66], | |
| [74,8,-77,-14], | |
| [72,98,91,-72], | |
| [63,64,26,1], | |
| [11,49,-90,11], | |
| [24,72,-22,44], | |
| [69,72,-51,-25], | |
| [61,12,52,26], | |
| [24,82,-70,71], | |
| [42,16,-93,27], | |
| [63,95,45,93], | |
| [10,88,64,20], | |
| [90,32,-89,13], | |
| [69,81,44,-57], | |
| [33,37,-94,-52], | |
| [27,50,49,53], | |
| [80,32,28,13], | |
| [76,68,5,-86], | |
| [23,51,-21,-19], | |
| [22,41,-14,73], | |
| [73,54,91,68], | |
| [22,46,94,89], | |
| [7,73,95,71], | |
| [12,63,-37,14], | |
| [33,12,-56,-13], | |
| [88,67,89,79], | |
| [29,44,-85,-27], | |
| [63,16,91,18], | |
| [25,49,-24,33], | |
| [70,76,-93,45], | |
| [66,47,-96,-49], | |
| [52,33,-73,7], | |
| [5,39,10,84], | |
| [89,65,58,-16], | |
| [5,16,-91,34], | |
| [27,95,16,12], | |
| [27,0,-12,23], | |
| [4,20,-6,-3], | |
| [91,25,20,17], | |
| [51,99,46,12], | |
| [34,73,-15,55], | |
| [100,23,-82,-49], | |
| [19,80,-53,96], | |
| [80,5,-19,64], | |
| [50,100,-16,-80], | |
| [69,44,22,51], | |
| [26,76,91,93], | |
| [48,88,-24,55], | |
| [68,26,86,-23], | |
| [49,95,31,-64], | |
| [53,16,93,24], | |
| [0,45,-36,-8], | |
| [19,71,-78,-8], | |
| [62,98,42,7], | |
| [22,85,-99,6], | |
| [48,48,-54,57], | |
| [81,34,81,32], | |
| [23,73,71,-89], | |
| [57,64,-4,-47], | |
| [89,17,26,-60], | |
| [49,60,-45,47], | |
| [25,16,13,-46], | |
| [16,62,17,49], | |
| [70,83,44,47], | |
| [52,3,69,56], | |
| [53,3,7,-58], | |
| [59,28,-24,-4], | |
| [39,67,15,14], | |
| [59,71,-79,52], | |
| [81,90,-58,47], | |
| [87,6,51,50], | |
| [32,58,16,-5], | |
| [99,3,12,53], | |
| [71,13,-49,86], | |
| [93,25,4,59], | |
| [54,95,25,12], | |
| [66,76,45,-2], | |
| [78,102,-42,61], | |
| [47,54,37,-35], | |
| [91,76,74,-2], | |
| [98,87,73,-72], | |
| [62,99,-3,-58], | |
| [44,85,-24,-45], | |
| [2,57,-13,-16], | |
| [10,19,10,-1], | |
| [87,40,51,73], | |
| [77,27,67,81], | |
| [35,96,-32,61], | |
| [84,83,52,-2], | |
| [10,63,18,14], | |
| [57,101,-17,26], | |
| [100,54,-59,-24], | |
| [96,44,-20,54], | |
| [11,83,2,17], | |
| [17,87,9,-35], | |
| [35,54,-93,76], | |
| [66,2,36,23], | |
| [37,59,-31,-81], | |
| [67,36,-2,27], | |
| [100,34,40,-86], | |
| [52,81,-94,-2], | |
| [30,10,39,45], | |
| [7,74,80,90], | |
| [77,79,59,28], | |
| [40,33,96,98], | |
| [60,70,99,-59], | |
| [25,66,48,33], | |
| [87,50,97,-19], | |
| [86,6,35,99], | |
| [16,51,95,60], | |
| [72,31,84,27], | |
| [99,18,-28,-55], | |
| [95,38,-51,84], | |
| [71,40,-19,-25], | |
| [63,2,-2,37], | |
| [65,80,68,-48], | |
| [58,82,-40,3], | |
| [79,27,59,-36], | |
| [8,60,44,-30], | |
| [53,49,-40,27], | |
| [64,81,38,-91], | |
| [62,55,-87,-8], | |
| [46,43,7,-11], | |
| [69,37,-65,-79], | |
| [31,58,46,30], | |
| [61,17,-87,37], | |
| [56,98,-8,-15], | |
| [62,102,-24,-9], | |
| [46,28,54,59], | |
| [21,29,-69,-71], | |
| [83,65,67,38], | |
| [94,52,59,65], | |
| [32,47,31,5], | |
| [95,34,-80,-3], | |
| [32,37,-54,-76], | |
| [89,18,82,-66], | |
| [28,88,-47,9], | |
| [62,20,98,-90], | |
| [83,83,51,36], | |
| [21,89,-83,-7], | |
| [58,31,84,-79], | |
| [75,49,-11,92], | |
| [44,91,-39,12], | |
| [17,82,-93,-80], | |
| [94,56,-54,-82], | |
| [56,43,69,-42], | |
| [9,27,50,-41], | |
| [6,49,-29,76], | |
| [64,39,3,52], | |
| [8,73,26,6], | |
| [58,83,-64,-64], | |
| [26,94,-8,-15], | |
| [20,69,88,9], | |
| [7,82,-12,96], | |
| [33,25,-89,68], | |
| [61,40,-34,78], | |
| [25,39,56,49], | |
| [60,18,-20,-42], | |
| [91,30,-65,56], | |
| [80,21,44,-77], | |
| [74,102,67,-31], | |
| [98,76,-53,76], | |
| [21,23,87,29], | |
| [75,57,-25,-78], | |
| [13,11,-6,86], | |
| [84,1,-19,-61], | |
| [80,23,28,-93], | |
| [24,17,-92,-85], | |
| [4,55,70,61], | |
| [33,84,-29,-69], | |
| [30,82,24,-61], | |
| [58,30,6,-52], | |
| [1,71,3,-51], | |
| [53,69,-64,-24], | |
| [68,11,61,2], | |
| [22,8,-69,-12], | |
| [82,93,75,1], | |
| [45,21,44,-89], | |
| [11,81,-75,-29], | |
| [59,77,42,44], | |
| [11,34,10,-3], | |
| [25,98,-69,58], | |
| [37,55,30,-51], | |
| [0,69,55,-90], | |
| [89,12,35,82], | |
| [58,65,-25,-24], | |
| [29,102,-69,64], | |
| [36,0,12,17], | |
| [94,54,70,-56], | |
| [48,95,90,-68], | |
| [39,59,-94,34], | |
| [23,18,-21,21], | |
| [84,91,-81,-34], | |
| [70,44,21,-95], | |
| [87,73,4,-16], | |
| [66,40,86,35], | |
| [97,30,-82,-90], | |
| [86,46,-61,33], | |
| [90,73,-65,82], | |
| [49,24,7,-44], | |
| [76,77,-74,17], | |
| [89,3,-56,-59], | |
| [57,99,-25,42], | |
| [72,101,-65,94], | |
| [77,27,-81,-14], | |
| [18,57,-84,-70], | |
| [18,68,95,95], | |
| [47,4,-70,-23], | |
| [52,66,91,9], | |
| [40,89,-23,-21], | |
| [80,19,85,49], | |
| [75,8,5,56], | |
| [35,20,-32,-58], | |
| [47,100,35,-63], | |
| [66,60,60,25], | |
| [36,81,-7,-86], | |
| [17,55,-22,-84], | |
| [47,94,54,4], | |
| [75,22,-59,-96], | |
| [0,48,-51,73], | |
| [22,2,-22,64], | |
| [100,29,53,59], | |
| [68,5,-10,-31], | |
| [42,3,-54,-17], | |
| [97,31,58,-1], | |
| [79,34,99,-30], | |
| [95,66,-19,57], | |
| [40,52,47,46], | |
| [36,102,-67,-58], | |
| [75,98,-4,39], | |
| [89,90,-52,50], | |
| [54,50,30,57], | |
| [20,72,-84,-32], | |
| ] | |
| const w = 101; | |
| const h = 103; | |
| const midY = Math.floor(h / 2); | |
| const midX = Math.floor(w / 2); | |
| const getQuadrant = (px, py, map) => { | |
| return (midY === py || midX === px) ? '' : `${midY < py}_${midX < px}`; | |
| } | |
| const calculateNewPos = (p, v, len, seconds = 100) => (len + (p + v * seconds) % len) % len; | |
| // part 1 | |
| const res = Object.values(map.reduce((acc, [px, py, vx, vy]) => { | |
| const quad = getQuadrant(calculateNewPos(px, vx, w), calculateNewPos(py, vy, h)); | |
| if (quad) { acc[quad] = (acc[quad] || 0) + 1; } | |
| return acc; | |
| }, {})).reduce((acc, num) => acc * num, 1); | |
| // part 2 | |
| for (let seconds = 0; seconds < 10000; ++seconds) { | |
| const newMap = new Array(h).fill(null).map(() => new Array(w).fill(0)); | |
| map.forEach(([px, py, vx, vy]) => { | |
| newMap[calculateNewPos(py, vy, h, seconds)][calculateNewPos(px, vx, w, seconds)] += 1; | |
| }); | |
| if (newMap.every(row => row.every(x => x === 0 || x === 1))) { | |
| const picture = newMap.map(arr => arr.map(x => x === 0 ? ' ' : '*').join("")).join("\n"); | |
| console.log(seconds); | |
| console.table(picture); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment