Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Day 11 - year 2023
- const input = require("fs").readFileSync("input.txt", "utf8").split("\n");
- const is_empty_col = Array(input[0].length).fill(true);
- const is_empty_row = Array(input.length).fill(true);
- const galaxies = [];
- input.forEach((row, y) => {
- row.split("").forEach((ch, x) => {
- if (ch === '#') {
- galaxies.push({ x, y });
- is_empty_col[x] = false;
- is_empty_row[y] = false;
- }
- });
- });
- const insert_cols = [];
- const insert_rows = [];
- is_empty_col.forEach((v, col) => { if (v) insert_cols.push(col) });
- is_empty_row.forEach((v, row) => { if (v) insert_rows.push(row) });
- console.log("part 1:", sum_distances(expand(galaxies, 1)));
- console.log("part 2:", sum_distances(expand(galaxies, 999999)));
- function expand(galaxies, displace) {
- for (galaxy of galaxies) {
- let displace_x = insert_cols.filter(v => v < galaxy.x).length;
- let displace_y = insert_rows.filter(v => v < galaxy.y).length;
- galaxy.x += displace_x * displace;
- galaxy.y += displace_y * displace;
- }
- return galaxies;
- }
- function sum_distances(galaxies) {
- let sum = 0;
- for (let i = 0; i < galaxies.length - 1; i++) {
- for (let j = i + 1; j < galaxies.length; j++) {
- let dist = Math.abs(galaxies[i].x - galaxies[j].x) + Math.abs(galaxies[i].y - galaxies[j].y);
- sum += dist;
- }
- }
- return sum;
- }
Advertisement
Add Comment
Please, Sign In to add comment