From f5e0a130cae7ce3c7c303838bbc0d738142c1486 Mon Sep 17 00:00:00 2001 From: Ben Kyd Date: Mon, 5 Dec 2022 12:04:41 +0000 Subject: [PATCH] day5 --- 2022/5.input | 511 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2022/5.js | 53 ++++++ 2 files changed, 564 insertions(+) create mode 100644 2022/5.input create mode 100644 2022/5.js diff --git a/2022/5.input b/2022/5.input new file mode 100644 index 0000000..9cca2c8 --- /dev/null +++ b/2022/5.input @@ -0,0 +1,511 @@ + [J] [B] [W] + [T] [W] [F] [R] [Z] + [Q] [M] [J] [R] [W] [H] + [F] [L] [P] [R] [N] [Z] [G] +[F] [M] [S] [Q] [M] [P] [S] [C] +[L] [V] [R] [V] [W] [P] [C] [P] [J] +[M] [Z] [V] [S] [S] [V] [Q] [H] [M] +[W] [B] [H] [F] [L] [F] [J] [V] [B] + 1 2 3 4 5 6 7 8 9 + +move 3 from 5 to 7 +move 2 from 8 to 9 +move 4 from 3 to 5 +move 2 from 1 to 7 +move 1 from 3 to 6 +move 2 from 1 to 7 +move 1 from 8 to 7 +move 4 from 2 to 8 +move 10 from 9 to 1 +move 6 from 6 to 2 +move 1 from 6 to 7 +move 9 from 8 to 6 +move 4 from 2 to 4 +move 2 from 4 to 1 +move 6 from 1 to 6 +move 1 from 3 to 2 +move 2 from 1 to 4 +move 2 from 4 to 3 +move 2 from 1 to 3 +move 4 from 3 to 1 +move 15 from 7 to 9 +move 4 from 5 to 9 +move 13 from 9 to 4 +move 10 from 4 to 8 +move 1 from 7 to 4 +move 6 from 9 to 5 +move 11 from 6 to 7 +move 4 from 5 to 7 +move 3 from 8 to 7 +move 4 from 2 to 4 +move 1 from 5 to 1 +move 5 from 8 to 4 +move 1 from 5 to 4 +move 10 from 7 to 1 +move 8 from 7 to 9 +move 12 from 1 to 9 +move 8 from 9 to 1 +move 2 from 6 to 9 +move 2 from 8 to 4 +move 1 from 6 to 9 +move 13 from 4 to 2 +move 13 from 4 to 2 +move 1 from 6 to 1 +move 1 from 6 to 4 +move 1 from 4 to 5 +move 14 from 1 to 8 +move 1 from 5 to 4 +move 13 from 9 to 5 +move 9 from 8 to 2 +move 8 from 2 to 1 +move 5 from 8 to 2 +move 5 from 1 to 6 +move 3 from 1 to 3 +move 1 from 4 to 8 +move 9 from 5 to 9 +move 18 from 2 to 8 +move 3 from 3 to 5 +move 2 from 6 to 4 +move 14 from 2 to 7 +move 1 from 4 to 2 +move 1 from 6 to 9 +move 1 from 2 to 5 +move 1 from 6 to 2 +move 1 from 4 to 6 +move 6 from 8 to 1 +move 2 from 6 to 9 +move 5 from 5 to 3 +move 1 from 7 to 8 +move 10 from 9 to 7 +move 13 from 8 to 5 +move 5 from 5 to 2 +move 6 from 5 to 7 +move 1 from 8 to 5 +move 5 from 5 to 9 +move 5 from 9 to 7 +move 4 from 3 to 8 +move 6 from 1 to 6 +move 4 from 2 to 4 +move 3 from 7 to 5 +move 2 from 2 to 9 +move 1 from 3 to 7 +move 29 from 7 to 9 +move 4 from 5 to 2 +move 5 from 6 to 4 +move 3 from 7 to 9 +move 3 from 8 to 6 +move 1 from 2 to 6 +move 3 from 2 to 5 +move 1 from 8 to 4 +move 1 from 5 to 9 +move 8 from 4 to 9 +move 15 from 9 to 2 +move 1 from 5 to 1 +move 10 from 9 to 4 +move 5 from 4 to 5 +move 5 from 5 to 4 +move 1 from 1 to 9 +move 1 from 4 to 3 +move 8 from 2 to 4 +move 7 from 2 to 7 +move 1 from 3 to 8 +move 1 from 5 to 6 +move 4 from 7 to 3 +move 1 from 8 to 2 +move 7 from 4 to 7 +move 11 from 9 to 7 +move 5 from 4 to 2 +move 3 from 9 to 6 +move 3 from 3 to 8 +move 4 from 2 to 4 +move 5 from 9 to 5 +move 1 from 2 to 1 +move 3 from 8 to 5 +move 2 from 9 to 1 +move 1 from 2 to 5 +move 2 from 9 to 6 +move 3 from 7 to 5 +move 7 from 4 to 1 +move 4 from 4 to 9 +move 3 from 7 to 2 +move 3 from 1 to 9 +move 1 from 2 to 3 +move 2 from 7 to 9 +move 6 from 5 to 4 +move 6 from 4 to 3 +move 5 from 5 to 1 +move 6 from 7 to 8 +move 1 from 5 to 1 +move 2 from 9 to 4 +move 1 from 4 to 3 +move 10 from 6 to 4 +move 2 from 2 to 1 +move 6 from 4 to 1 +move 5 from 8 to 3 +move 1 from 8 to 2 +move 7 from 3 to 9 +move 1 from 6 to 9 +move 2 from 7 to 3 +move 20 from 1 to 6 +move 7 from 3 to 8 +move 2 from 9 to 6 +move 1 from 2 to 3 +move 2 from 3 to 6 +move 1 from 1 to 4 +move 6 from 4 to 7 +move 5 from 8 to 3 +move 22 from 6 to 4 +move 2 from 9 to 7 +move 3 from 3 to 4 +move 6 from 4 to 2 +move 11 from 9 to 3 +move 9 from 3 to 7 +move 5 from 4 to 2 +move 5 from 7 to 2 +move 5 from 7 to 6 +move 10 from 2 to 4 +move 3 from 2 to 1 +move 1 from 6 to 3 +move 1 from 1 to 7 +move 17 from 4 to 1 +move 1 from 8 to 4 +move 2 from 7 to 5 +move 3 from 2 to 5 +move 3 from 3 to 8 +move 4 from 5 to 1 +move 3 from 3 to 7 +move 1 from 4 to 5 +move 21 from 1 to 5 +move 3 from 8 to 3 +move 4 from 7 to 5 +move 1 from 1 to 7 +move 1 from 6 to 3 +move 4 from 4 to 1 +move 1 from 8 to 1 +move 3 from 4 to 9 +move 5 from 1 to 8 +move 3 from 9 to 3 +move 5 from 6 to 1 +move 5 from 1 to 4 +move 6 from 3 to 2 +move 1 from 3 to 2 +move 3 from 8 to 1 +move 7 from 2 to 1 +move 10 from 5 to 2 +move 12 from 5 to 7 +move 2 from 8 to 3 +move 5 from 5 to 8 +move 8 from 1 to 6 +move 5 from 4 to 5 +move 3 from 8 to 6 +move 1 from 8 to 3 +move 6 from 6 to 7 +move 2 from 3 to 8 +move 3 from 2 to 1 +move 6 from 2 to 9 +move 2 from 8 to 4 +move 1 from 3 to 9 +move 1 from 8 to 6 +move 1 from 6 to 9 +move 7 from 9 to 5 +move 1 from 9 to 7 +move 1 from 4 to 6 +move 2 from 6 to 5 +move 1 from 4 to 1 +move 1 from 2 to 7 +move 5 from 1 to 2 +move 10 from 7 to 4 +move 12 from 5 to 7 +move 6 from 4 to 8 +move 2 from 5 to 6 +move 1 from 8 to 9 +move 1 from 9 to 5 +move 30 from 7 to 9 +move 4 from 8 to 4 +move 1 from 8 to 7 +move 2 from 1 to 4 +move 6 from 6 to 3 +move 1 from 4 to 1 +move 1 from 1 to 2 +move 8 from 4 to 8 +move 1 from 4 to 5 +move 2 from 5 to 6 +move 2 from 9 to 8 +move 3 from 2 to 1 +move 4 from 3 to 2 +move 1 from 6 to 4 +move 1 from 7 to 1 +move 2 from 8 to 2 +move 1 from 9 to 2 +move 2 from 3 to 2 +move 1 from 4 to 2 +move 4 from 9 to 6 +move 3 from 6 to 4 +move 21 from 9 to 8 +move 13 from 2 to 7 +move 9 from 8 to 5 +move 3 from 1 to 4 +move 14 from 7 to 2 +move 5 from 8 to 9 +move 1 from 1 to 2 +move 7 from 8 to 6 +move 2 from 8 to 2 +move 8 from 6 to 9 +move 1 from 4 to 5 +move 5 from 8 to 2 +move 4 from 5 to 9 +move 9 from 9 to 6 +move 2 from 7 to 6 +move 1 from 8 to 7 +move 9 from 6 to 4 +move 1 from 6 to 5 +move 1 from 7 to 3 +move 1 from 4 to 7 +move 1 from 7 to 2 +move 9 from 2 to 3 +move 8 from 4 to 1 +move 8 from 9 to 2 +move 2 from 6 to 5 +move 4 from 5 to 2 +move 2 from 9 to 5 +move 1 from 4 to 9 +move 10 from 3 to 7 +move 1 from 9 to 2 +move 1 from 5 to 3 +move 7 from 2 to 8 +move 7 from 1 to 5 +move 1 from 1 to 2 +move 2 from 8 to 2 +move 1 from 3 to 5 +move 2 from 8 to 6 +move 2 from 8 to 9 +move 2 from 4 to 6 +move 3 from 2 to 8 +move 3 from 6 to 7 +move 7 from 5 to 8 +move 7 from 2 to 7 +move 1 from 6 to 8 +move 5 from 2 to 7 +move 6 from 8 to 3 +move 2 from 7 to 1 +move 7 from 2 to 5 +move 1 from 3 to 5 +move 1 from 1 to 5 +move 2 from 9 to 7 +move 4 from 3 to 7 +move 2 from 4 to 6 +move 1 from 1 to 6 +move 1 from 2 to 4 +move 16 from 5 to 6 +move 1 from 4 to 9 +move 19 from 6 to 1 +move 1 from 3 to 5 +move 1 from 9 to 1 +move 1 from 8 to 5 +move 5 from 8 to 3 +move 5 from 7 to 2 +move 3 from 2 to 9 +move 5 from 1 to 7 +move 2 from 5 to 1 +move 3 from 9 to 4 +move 4 from 1 to 9 +move 2 from 2 to 8 +move 2 from 8 to 6 +move 1 from 6 to 9 +move 4 from 3 to 8 +move 4 from 8 to 3 +move 2 from 3 to 8 +move 1 from 8 to 2 +move 1 from 9 to 7 +move 10 from 1 to 7 +move 26 from 7 to 6 +move 3 from 9 to 3 +move 1 from 4 to 6 +move 2 from 1 to 4 +move 1 from 1 to 6 +move 1 from 9 to 3 +move 1 from 2 to 3 +move 4 from 4 to 9 +move 10 from 7 to 8 +move 3 from 7 to 4 +move 4 from 9 to 4 +move 4 from 4 to 7 +move 4 from 3 to 9 +move 5 from 7 to 5 +move 3 from 5 to 1 +move 3 from 9 to 8 +move 3 from 1 to 5 +move 2 from 3 to 5 +move 7 from 8 to 1 +move 7 from 8 to 9 +move 4 from 6 to 3 +move 3 from 3 to 6 +move 1 from 3 to 4 +move 2 from 4 to 1 +move 1 from 9 to 6 +move 4 from 1 to 3 +move 3 from 5 to 1 +move 1 from 5 to 2 +move 6 from 1 to 2 +move 6 from 2 to 7 +move 2 from 7 to 4 +move 1 from 2 to 6 +move 1 from 1 to 4 +move 3 from 5 to 7 +move 6 from 7 to 4 +move 1 from 9 to 3 +move 1 from 3 to 6 +move 4 from 4 to 3 +move 9 from 6 to 1 +move 10 from 1 to 6 +move 7 from 4 to 5 +move 28 from 6 to 4 +move 3 from 6 to 7 +move 3 from 3 to 8 +move 4 from 5 to 7 +move 1 from 8 to 4 +move 18 from 4 to 7 +move 8 from 7 to 6 +move 6 from 4 to 1 +move 2 from 5 to 4 +move 8 from 6 to 1 +move 2 from 8 to 9 +move 1 from 5 to 3 +move 1 from 9 to 1 +move 5 from 9 to 2 +move 2 from 9 to 3 +move 1 from 2 to 5 +move 2 from 1 to 5 +move 6 from 7 to 5 +move 1 from 6 to 4 +move 6 from 5 to 9 +move 2 from 4 to 1 +move 8 from 1 to 8 +move 4 from 9 to 7 +move 1 from 5 to 6 +move 1 from 1 to 6 +move 2 from 1 to 2 +move 1 from 9 to 7 +move 3 from 2 to 4 +move 2 from 8 to 3 +move 5 from 8 to 2 +move 4 from 2 to 5 +move 1 from 8 to 9 +move 12 from 3 to 2 +move 2 from 6 to 2 +move 12 from 2 to 4 +move 6 from 2 to 3 +move 4 from 1 to 9 +move 8 from 4 to 7 +move 3 from 3 to 4 +move 1 from 5 to 4 +move 5 from 9 to 6 +move 3 from 5 to 8 +move 1 from 9 to 1 +move 2 from 8 to 5 +move 3 from 5 to 6 +move 1 from 8 to 4 +move 4 from 7 to 8 +move 1 from 1 to 3 +move 2 from 8 to 3 +move 7 from 6 to 7 +move 1 from 3 to 7 +move 2 from 8 to 6 +move 22 from 7 to 8 +move 6 from 4 to 8 +move 5 from 8 to 6 +move 5 from 6 to 2 +move 4 from 2 to 3 +move 6 from 8 to 5 +move 4 from 4 to 7 +move 1 from 3 to 7 +move 4 from 4 to 5 +move 1 from 5 to 4 +move 2 from 6 to 5 +move 9 from 5 to 6 +move 10 from 6 to 7 +move 1 from 2 to 1 +move 3 from 4 to 8 +move 16 from 7 to 9 +move 1 from 7 to 8 +move 1 from 1 to 8 +move 1 from 8 to 3 +move 2 from 7 to 4 +move 15 from 8 to 1 +move 1 from 8 to 1 +move 4 from 8 to 4 +move 7 from 9 to 7 +move 3 from 5 to 9 +move 10 from 9 to 6 +move 2 from 9 to 2 +move 7 from 7 to 4 +move 9 from 3 to 2 +move 8 from 2 to 7 +move 1 from 8 to 4 +move 3 from 2 to 1 +move 9 from 7 to 1 +move 9 from 4 to 1 +move 2 from 7 to 5 +move 1 from 5 to 4 +move 1 from 5 to 2 +move 6 from 1 to 3 +move 16 from 1 to 2 +move 9 from 2 to 1 +move 5 from 6 to 9 +move 2 from 1 to 9 +move 1 from 2 to 5 +move 4 from 4 to 8 +move 2 from 8 to 2 +move 2 from 2 to 3 +move 17 from 1 to 2 +move 2 from 1 to 9 +move 13 from 2 to 8 +move 1 from 2 to 4 +move 11 from 8 to 3 +move 3 from 3 to 4 +move 3 from 9 to 2 +move 1 from 5 to 2 +move 1 from 9 to 3 +move 3 from 4 to 3 +move 1 from 4 to 9 +move 3 from 3 to 4 +move 1 from 8 to 7 +move 7 from 2 to 9 +move 3 from 1 to 7 +move 3 from 2 to 8 +move 3 from 7 to 9 +move 10 from 3 to 5 +move 3 from 6 to 9 +move 8 from 9 to 4 +move 1 from 2 to 1 +move 1 from 7 to 9 +move 2 from 2 to 3 +move 4 from 4 to 8 +move 1 from 6 to 2 +move 7 from 5 to 3 +move 1 from 5 to 2 +move 9 from 8 to 9 +move 12 from 3 to 8 +move 1 from 1 to 9 +move 9 from 8 to 6 +move 1 from 5 to 7 +move 1 from 5 to 4 +move 2 from 2 to 9 +move 1 from 2 to 6 +move 2 from 4 to 3 +move 9 from 4 to 8 +move 6 from 3 to 6 +move 12 from 6 to 2 +move 2 from 6 to 7 +move 8 from 8 to 3 +move 5 from 8 to 7 +move 3 from 6 to 5 +move 6 from 3 to 7 +move 6 from 7 to 6 +move 1 from 4 to 9 +move 4 from 6 to 5 +move 20 from 9 to 6 +move 4 from 9 to 8 +move 2 from 8 to 7 +move 4 from 6 to 4 +move 10 from 6 to 1 \ No newline at end of file diff --git a/2022/5.js b/2022/5.js new file mode 100644 index 0000000..a2960ec --- /dev/null +++ b/2022/5.js @@ -0,0 +1,53 @@ +const fs = require('fs'); + +const lines = fs.readFileSync('5.input').toString().split('\n'); +const setup = lines.slice(0, 9); +const challenge = lines.slice(10, lines.length); + +const parseTowers = (inputLines) => { + // iterrate over down the Y, down each tower + let towers = []; + let currentTower = -1; + for (let x = 0; x < inputLines[0].length; x++) + for (let y = 8; y >= 0; y--) { + const active = inputLines[y][x]; + if (active == '' || active == ' ') continue; + if (active == '[' || active == ']') continue; + if (!isNaN(parseInt(inputLines[y][x]))) { + towers.push([]); + currentTower++; + } else { + towers[currentTower].push(inputLines[y][x]); + } + } + return towers; +} + +// part 1 +const resultingTowers1 = parseTowers(setup); +for (const instruction of challenge) { + const order = instruction.split(' ').filter(e => !isNaN(parseInt(e))).map(e => parseInt(e)); + for (let n = 0; n < order[0]; n++) + resultingTowers1[order[2]-1].push(resultingTowers1[order[1]-1].pop()); +} + +// collate part 1 +let part1 = ''; +for (const tower of resultingTowers1) + part1 += tower.pop(); + +console.log(`Part 1: ${part1}`) + +const resultingTowers2 = parseTowers(setup); +console.log(resultingTowers2) +for (const instruction of challenge) { + const order = instruction.split(' ').filter(e => !isNaN(parseInt(e))).map(e => parseInt(e)); + resultingTowers1[order[2]-1].push(...resultingTowers1[order[1]-1].splice(-1, order[0])); +} + +// collate part 2 +let part2 = ''; +for (const tower of resultingTowers2) + part2 += tower.pop(); + +console.log(`Part 2: ${part2}`)