Untitled
unknown
plain_text
3 years ago
8.7 kB
3
Indexable
let input = `forward 2 down 8 down 1 up 7 forward 4 down 4 down 3 forward 2 forward 5 forward 2 forward 7 forward 8 down 7 forward 6 forward 1 down 8 down 8 up 9 down 9 forward 1 up 1 forward 6 forward 7 down 7 forward 4 forward 2 forward 1 forward 3 forward 8 forward 4 up 6 down 2 forward 4 down 3 up 3 up 2 up 3 forward 8 down 5 down 8 down 5 down 4 down 2 up 1 forward 6 forward 6 forward 8 up 5 down 5 forward 8 forward 7 down 9 down 7 down 6 down 3 forward 3 up 7 forward 2 up 6 forward 7 forward 9 down 9 forward 3 down 2 down 2 down 7 down 7 forward 8 down 7 forward 9 up 7 down 4 down 8 forward 2 forward 2 up 1 forward 8 down 5 forward 8 forward 4 up 1 forward 2 forward 2 forward 2 down 9 down 7 down 9 forward 9 forward 4 up 7 down 4 forward 9 forward 8 up 5 up 1 down 1 down 9 down 6 up 8 forward 2 forward 7 up 7 forward 7 forward 6 down 6 forward 8 up 6 forward 7 down 7 forward 4 forward 9 up 9 up 8 forward 8 forward 3 up 1 up 4 down 4 up 9 up 8 forward 6 down 2 down 2 up 4 forward 4 forward 1 down 8 forward 6 down 5 forward 6 down 8 up 1 forward 1 up 9 down 8 up 3 up 9 forward 9 forward 2 down 2 up 6 up 6 forward 8 up 3 down 3 forward 5 up 2 forward 1 forward 1 forward 8 down 4 forward 8 forward 7 down 8 forward 7 down 7 down 2 down 1 down 7 up 9 down 5 up 1 forward 7 down 5 down 9 down 2 down 8 down 4 forward 2 forward 2 forward 1 down 6 up 7 forward 2 down 1 down 5 forward 3 forward 8 down 4 up 2 up 9 up 7 forward 7 forward 4 up 8 up 3 up 4 forward 6 down 7 forward 7 up 6 down 9 up 6 forward 4 up 3 down 3 up 6 down 9 down 6 forward 7 forward 9 forward 2 down 6 up 3 up 9 forward 9 forward 8 up 4 up 5 forward 6 down 5 up 4 up 9 down 8 forward 5 up 5 forward 7 forward 6 down 8 down 5 down 2 up 5 down 8 forward 7 forward 7 up 6 forward 3 down 8 forward 5 forward 8 down 7 forward 6 down 2 forward 2 forward 8 down 4 forward 5 forward 7 forward 5 forward 8 forward 9 forward 6 down 6 up 7 down 9 forward 7 forward 1 up 2 forward 8 down 1 up 9 forward 7 down 2 up 2 forward 5 down 4 down 3 up 8 up 6 forward 3 up 4 forward 3 forward 1 forward 1 up 9 down 2 down 9 up 4 forward 4 forward 4 forward 2 forward 5 forward 9 forward 7 up 4 up 5 down 5 forward 9 down 1 forward 2 down 6 forward 9 down 4 down 2 forward 2 up 7 forward 7 forward 8 up 9 forward 3 up 1 down 5 forward 5 down 1 up 5 forward 4 forward 5 up 3 down 4 up 6 up 1 down 2 forward 6 down 8 up 9 down 7 forward 9 down 8 forward 3 forward 8 down 1 down 7 forward 6 up 6 down 1 down 5 forward 6 down 7 down 2 forward 6 forward 2 forward 8 forward 7 forward 2 down 7 up 2 down 7 forward 8 forward 8 forward 2 forward 4 down 1 down 6 down 1 down 4 down 4 down 2 down 7 up 5 up 5 down 1 forward 3 up 1 down 3 forward 9 forward 4 forward 7 down 4 down 4 down 2 forward 2 forward 1 forward 9 down 1 down 4 down 1 forward 4 up 8 forward 3 down 6 forward 5 forward 9 forward 1 up 8 down 7 down 8 forward 4 down 4 up 5 down 3 forward 3 down 6 down 1 down 9 forward 8 up 5 down 7 up 7 forward 3 up 5 up 7 down 4 up 2 down 2 down 8 up 6 down 4 up 1 down 8 down 4 forward 7 down 4 up 3 down 9 forward 3 up 4 up 1 up 5 down 4 forward 4 forward 4 down 2 down 3 down 4 forward 2 down 9 down 9 down 6 forward 5 forward 7 down 3 forward 2 up 8 down 6 down 8 down 2 up 9 down 1 forward 8 forward 1 forward 8 up 4 up 1 down 8 up 2 forward 5 down 3 forward 5 forward 4 forward 1 down 9 forward 2 forward 5 forward 4 forward 3 down 7 up 9 forward 7 up 8 forward 3 forward 3 down 5 forward 7 forward 5 down 4 forward 6 down 6 up 3 down 3 forward 7 forward 8 up 3 up 8 forward 8 up 4 forward 5 up 4 down 7 forward 4 down 8 down 6 forward 7 down 4 up 7 down 6 up 5 down 2 forward 7 down 7 up 3 up 3 down 3 down 5 forward 3 forward 5 forward 8 down 3 down 8 forward 3 down 1 forward 4 up 5 forward 8 up 1 up 4 down 4 forward 1 forward 6 up 7 up 1 up 7 down 5 forward 8 down 1 forward 1 forward 6 up 9 up 6 down 4 forward 5 down 1 forward 7 down 8 up 3 down 9 down 1 up 7 up 6 forward 8 down 9 down 4 forward 4 up 7 down 3 forward 5 forward 8 up 5 down 7 up 2 forward 3 forward 3 forward 4 down 1 forward 5 forward 7 up 7 forward 7 forward 1 forward 3 forward 9 down 3 forward 5 down 9 down 7 down 4 down 8 up 3 down 1 up 5 down 5 forward 2 down 6 down 5 forward 2 forward 6 down 6 up 6 down 8 up 1 forward 4 forward 2 forward 1 up 1 forward 5 forward 3 forward 7 down 9 forward 3 down 9 up 5 down 7 down 2 down 3 up 5 up 3 down 2 forward 4 forward 1 down 3 up 4 down 8 down 1 forward 6 down 3 forward 9 down 7 down 3 down 4 down 5 up 1 forward 8 forward 2 up 3 up 7 up 1 forward 3 forward 9 up 5 forward 6 down 8 down 9 down 5 forward 6 forward 3 forward 8 forward 7 forward 9 forward 2 up 9 forward 8 down 2 down 6 down 9 down 5 forward 1 down 7 forward 2 down 4 down 1 up 1 down 2 forward 5 forward 8 down 9 up 6 forward 8 forward 3 up 6 up 2 forward 8 down 8 up 1 down 6 down 2 down 6 forward 5 forward 6 down 4 forward 1 down 4 up 7 forward 4 up 1 forward 9 forward 7 up 3 down 7 down 4 forward 3 forward 8 forward 6 forward 6 up 1 up 2 up 8 down 7 forward 8 down 5 forward 6 down 1 down 9 down 2 forward 6 up 3 down 5 down 6 forward 1 forward 2 down 3 forward 8 forward 1 up 5 down 8 down 4 up 9 up 2 forward 7 forward 9 up 8 up 6 forward 1 down 7 up 1 down 3 forward 2 forward 3 down 3 down 2 forward 3 down 7 forward 3 forward 7 forward 7 down 8 down 4 forward 3 forward 4 down 7 down 9 down 4 down 2 forward 7 up 8 down 4 down 3 forward 9 down 5 up 6 up 2 down 5 down 6 forward 2 forward 8 down 1 forward 6 up 7 down 6 forward 4 down 2 down 5 down 9 forward 7 up 4 forward 9 up 7 down 4 down 6 up 9 forward 1 up 7 down 5 forward 3 forward 3 down 7 down 1 down 7 down 7 down 1 forward 8 forward 9 forward 8 down 9 down 8 down 5 down 3 forward 4 forward 1 down 1 forward 1 down 7 forward 7 forward 3 down 8 forward 3 forward 9 forward 8 down 7 forward 8 down 2 up 5 forward 7 forward 4 down 2 up 6 up 8 forward 7 down 9 up 3 forward 4 up 9 up 5 up 5 up 6 down 4 down 5 up 5 forward 7 forward 6 down 4 forward 5 forward 4 up 7 forward 8 down 2 forward 1 down 9 down 8 forward 7 down 7 down 1 forward 9 down 7 forward 6 down 2 up 9 forward 1 up 9 down 3 up 9 down 1 forward 1 down 1 up 6 down 8 up 2 down 3 forward 1 down 4 up 5 down 5 down 4 forward 5 forward 4 down 9 up 7 down 7 forward 7 forward 6 forward 8 down 8 forward 8 down 1 down 1 down 8 down 2 up 2 up 1 forward 5 down 1 up 5 up 2 down 6 up 8 forward 5 down 8 down 1 up 5 down 1 forward 4 down 6 down 4 forward 2 forward 2 down 1 up 4 up 8 down 6 down 2 forward 5 forward 8 forward 7 down 5 down 7 down 3 forward 6 down 3 down 3 forward 6 forward 6 forward 6 up 7 forward 1 down 5 down 2 up 8 forward 6 down 7 down 6 forward 1 up 5 down 4 up 9 forward 3 up 3 forward 9 forward 9 forward 7 forward 5 down 9 forward 1 forward 6 up 8 down 7 forward 9 forward 5 up 4 down 8 forward 8 forward 4 down 9 up 2 forward 5 forward 8 down 8 down 9 down 9 forward 4 forward 8 down 5 down 5 forward 5 forward 5 up 9 up 7 forward 3 up 4 down 8 up 6 up 6 down 4 down 3 forward 2 forward 9 down 4 down 2 forward 4 up 9 forward 1 down 8 down 9 down 9 down 3 forward 1 down 5 up 9 forward 6 up 4 forward 2 forward 2 forward 4 down 9 up 5 up 1 down 6 forward 7 down 8 forward 4 forward 9 up 9 up 4 down 5 down 3 forward 2 down 8 down 6 forward 3 down 2 forward 6 up 2 forward 6 down 7 up 4 forward 1 forward 4 up 4 forward 6 forward 8 down 7 down 6 up 7 down 2 down 4 down 5 forward 1 up 4 forward 8 forward 6 down 8 up 5 up 2 up 9 up 5 forward 6 down 4 up 3 down 8 down 6 down 2 up 3 up 5 down 1 forward 9 up 8 up 2 down 3 forward 6 down 1 forward 5 down 3 up 1 up 2 down 5 down 7 forward 8 down 8 up 9 forward 3 down 8 down 8 forward 1 down 4 down 4 forward 3 up 6 down 3 down 7 down 7 up 1 forward 3 forward 2` .split(/\n/) .map((line) => { let [direction, distance] = line.split(" "); return { direction, distance: parseInt(distance) }; }); let smallInput = `forward 5 down 5 forward 8 up 3 down 8 forward 2 ` .split(/\n/) .map((line) => { let [direction, distance] = line.split(" "); return { direction, distance: parseInt(distance) }; }); let { depth, horizontal } = input.reduce( (acc, move) => { let change; switch (move.direction) { case "down": change = { aim: acc.aim + move.distance }; break; case "up": change = { aim: acc.aim - move.distance }; break; case "forward": change = { horizontal: acc.horizontal + move.distance, depth: acc.depth + acc.aim * move.distance, }; break; } return { ...acc, ...change }; }, { horizontal: 0, depth: 0, aim: 0 } ); console.log(depth * horizontal);
Editor is loading...