const util = require("util"); const Vector3 = require("./Vector3"); const Moon = require("./Moon"); const input = parseInput([ "", "", "", "", ]); const tests = parseInput([ "", "", "", "", ]); /** * Find the gravitational influence two moons have on each other * * @param {Vector3} moonA The first moon to consider * @param {Vector3} moonB The second moon to consider * * @returns {void} */ function calculateGravity(moonA, moonB) { // The gravitational pull on Moon A caused by Moon B const gravityA = new Vector3( // eslint-disable-next-line no-nested-ternary moonB.x > moonA.x ? 1 : (moonB.x < moonA.x ? -1 : 0), // eslint-disable-next-line no-nested-ternary moonB.y > moonA.y ? 1 : (moonB.y < moonA.y ? -1 : 0), // eslint-disable-next-line no-nested-ternary moonB.z > moonA.z ? 1 : (moonB.z < moonA.z ? -1 : 0), ); } /** * @param {string[]} inputs The day's input * @returns {Moon[]} An array of Moon objects */ function parseInput(inputs) { const moons = []; const parseRegex = new RegExp(/x=(-?\d+), y=(-?\d+), z=(-?\d+)/); for (const position of inputs) { // eslint-disable-next-line no-shadow-restricted-names const [undefined, x, y, z] = position.match(parseRegex); moons.push(new Moon(new Vector3(parseInt(x, 10), parseInt(y, 10), parseInt(z, 10)))); } return moons; } // console.log(util.inspect(parseInput(input)));