diff --git a/2022/2.input b/2022/2.input index e69de29..9671db1 100644 --- a/2022/2.input +++ b/2022/2.input @@ -0,0 +1,2500 @@ +A Z +C Z +A X +B Z +C X +A X +A X +A Z +C Y +A X +C Z +C Y +B Z +B X +A X +B X +C X +C X +C Z +B Z +B Y +C X +C X +C Z +C X +C X +C X +A Y +B Y +C Y +C Z +B Y +B X +C Z +B Z +B Y +B Y +C Z +C X +C Y +B Z +B Z +A X +A X +C Z +C X +A X +B Z +C X +C X +B Z +B Z +C Z +A X +A X +A Z +C Z +C Z +C Z +A X +B Z +A X +B Y +C Z +C X +B Z +C X +C Y +B Z +A X +B Z +A Z +C X +B Z +C Z +C X +C Z +C X +C Z +C Y +C Z +C Y +C X +C Z +C Z +C Z +C Z +A X +B Z +B X +C X +C Z +C Z +A Y +C Z +C X +B Y +B Z +C Z +C X +B Z +A Z +C Z +C Z +C Z +C Z +C Z +B X +A X +B Z +B Y +B Z +C X +C Y +B Z +A X +A X +A Z +C X +C Z +B Z +C Z +C X +A X +A X +A X +C Z +B Z +A Z +C Z +C X +B Z +B Z +C X +B X +C X +C X +C X +B Z +C X +B Z +A X +A Z +A Z +C Z +C Y +C Z +B Y +C Z +C Z +C X +C X +A X +C Z +A Z +B Z +A X +C Z +C Z +B Z +A Z +C X +B Z +C Z +C X +C Y +C Y +B Y +B Z +C Y +C Z +B Z +C Z +B Z +C X +A X +B X +C Y +B Z +C Z +B X +A X +C Z +C Z +C Z +C X +B Y +A X +C Y +C Z +B X +A Z +C Z +C X +B Y +A Y +C Z +C Z +B Y +A X +A Z +B Y +C Z +B X +C Z +C Z +B X +C Z +C X +A X +C Z +A X +C X +B Z +C Y +C Z +A Z +B Z +A X +A X +C X +A Y +C Y +C X +C Z +C Z +C Z +C Z +C Z +B Y +A X +A Z +B Y +C Z +C X +C X +B Z +C X +A Z +A X +C Z +B X +B Z +A Z +B X +A X +A X +B Z +B Y +B Y +C X +C Z +C Z +C Y +C X +C Z +C Z +B X +A X +B X +C X +C X +B Z +B Z +C X +C X +B Z +B Z +A Z +B Z +B Z +C Z +A Z +A Z +C X +B Z +A X +C X +A X +C Z +A X +C Z +B X +C X +B Z +A Y +C Z +B X +C Y +C X +B Z +C Y +C Z +B X +B X +B Z +C X +C Z +B Z +C Z +C X +A X +A X +C Y +B X +A Z +B Y +C X +B Y +C Z +B Y +B Z +C Y +C Z +A Z +C X +C X +C X +C Z +A Y +A Z +C Z +C Z +B Z +B Z +B Z +A Z +C Z +C X +C Z +C Z +A X +C Z +C X +B X +C Z +C X +C Z +A X +B X +C Z +C X +B Z +C Y +A Y +A X +C X +A X +B X +C X +C Z +A Z +C Z +C Z +B Z +A X +C Z +C Z +C Z +B Z +A X +C Z +C Z +C Z +C Z +B Y +C X +B Z +C Z +B X +C Z +C X +C Y +B X +A Y +A Y +C Y +B Y +C X +B Y +C X +A X +C Z +C X +C X +B Z +C X +B Z +C Z +C Z +A X +B Y +C X +C Z +B X +C Z +C Y +B Z +A X +B Z +B Z +B X +A Z +A X +C Z +A Y +A X +A X +C Y +B Y +C X +B Y +B X +A X +C Y +A X +B Z +B Y +B Y +A X +A X +A Z +C X +A X +C Y +A X +A X +C Y +C Z +B Z +B Y +B X +A X +A X +B Z +C Z +B X +A Y +A Z +C Y +A X +C Z +C X +A Z +C Z +C Z +C Y +C X +C Z +A Z +C Y +C Z +C Z +C Z +C X +C Z +A X +C Y +B Y +C Y +B Y +A X +B Y +B Z +B Z +B X +B Z +C Z +B Z +C Z +B X +C Z +B Z +B Z +C Z +C Z +A Z +A Z +C X +B Y +B Y +C Z +C X +C Z +A Z +A X +C Y +C Z +B Z +C Z +A X +B Z +A X +A Z +A X +A X +C X +B Z +B Z +C Z +C X +A X +B X +A X +A X +A Z +C Y +B Y +B X +A X +C X +B Y +C Z +B X +C X +B Z +B Z +C Z +B Z +C Z +C Y +C Y +A X +A Z +C X +A X +C Z +A Z +B X +C X +A X +B Z +B Z +B Z +C Z +C Z +C Z +C Y +B Z +C X +C X +C X +B Z +B Z +B Z +A X +A X +A Z +C Z +C X +A X +B X +A Z +C X +A X +C Z +C Z +C Z +C Z +C Y +C Z +B Z +C X +C Z +A Z +A Z +B Z +C X +A X +A X +A X +C X +C X +C X +C X +B X +C X +B Y +C Z +C Z +C Z +B Z +B Z +C Z +B Y +C Y +C X +A Z +C Y +C Z +A X +C X +C Z +C Z +A X +C Y +B Y +C X +C Z +C X +B X +C Z +B Z +B Y +A X +C X +C Z +B Z +B X +A Z +C Y +C X +C Y +B Z +A Z +C X +C X +A X +A Y +B Y +C Y +C Z +C Z +C Z +C Y +A X +A X +B X +B Y +A Z +C Z +C Y +B Z +C Z +C X +C Z +A X +C Z +C X +C Y +C X +C X +C X +C Z +C Z +C Z +A X +C Z +C X +C X +B X +C X +B Y +A X +C X +A X +C Y +C X +C Z +C X +C Z +C X +B Z +A X +C Z +C X +C Z +C Y +C X +C X +C Z +B Z +C Z +C Z +C X +B Z +C Z +B X +C Z +B Z +C X +B X +C Z +C Y +B X +C Z +C Y +A X +B Z +B Z +C Y +B Y +B X +C Y +C X +C X +B Z +B Y +C X +C Z +B Z +C Y +C X +C Z +C Y +B Z +A Z +C Z +C Z +C Z +C Y +C Z +C Z +C Z +C X +B Z +B Z +C Z +C X +C X +C Z +C Z +C X +A Z +B Z +B X +C X +C Z +A Z +C X +C Z +B Z +A X +C Z +C Z +B Z +C Z +B Y +A X +A X +A Z +B Z +A Z +A X +B Z +C X +B Z +B Z +B Y +A X +B X +B Z +B Z +A X +C Z +B Z +C X +A X +B Z +B Z +C Z +B Y +C Z +B Z +B Y +C X +A Z +B Y +A X +A X +C X +C Z +A Z +C X +C Z +A Z +B Z +C Z +C Z +C X +C Y +C Z +A X +C X +C Z +B Y +B Z +A X +C X +B Z +C X +B Z +C Z +C Y +C Z +B Z +C X +A Z +C Z +C Z +B Z +B X +A Z +C Z +C Z +C Z +C Z +A Z +C X +B Z +C Y +B X +C Z +A X +B Y +C Z +B X +B X +C X +A Z +C X +C X +C Z +A Y +C Y +C Z +B Z +A X +B Z +C Z +A Z +C Y +B Z +B Z +C X +C Z +A Z +C X +C X +C Z +C Z +C Z +A X +C Z +A X +C Z +C X +C Z +C Z +C X +A Z +B Y +B Z +A X +C Y +C Z +B Z +B Z +A X +B Z +A Z +C Z +C Z +A X +C X +A Y +C Z +C X +C Z +B Y +C Y +B Z +B Z +A X +C Z +C Z +A Z +A X +C Z +C Z +C Y +C Z +A X +B Z +A X +B Y +C X +B Z +C X +B X +A X +B Y +A Y +C X +B Y +B Y +B Z +C Z +A Z +B Z +A X +C Z +C Z +A X +B Z +A X +A X +B Y +B Z +A Y +C Z +C X +A X +C Z +A Z +C Y +B Z +C X +C Y +B Z +B X +A X +C Z +C X +A Z +A Z +C Z +A Z +C Z +C Z +C Z +A Z +A Z +C Z +C Z +A X +B X +B Z +C X +A Y +C Z +C Z +B Z +C Z +C Z +C X +A X +A Z +C X +B Z +C X +C Z +C X +A X +B X +C X +B Z +C X +A Z +C Z +B X +C Z +B Y +A X +C Z +C X +C X +C Z +B Z +C X +C Z +A X +A X +C X +B Z +C Z +B Z +A Z +C Z +A Z +C Z +C Y +A Z +A X +B Y +A X +B X +C X +C Z +C Y +C X +C Z +C X +C X +B X +B Z +B Y +C Y +C Z +C X +C Y +C X +C X +C Z +C Y +C X +C X +C Z +C X +C Y +C Z +B X +A Y +C X +B X +A Z +C Z +C X +C Y +B X +C Z +A X +B Z +B Z +A X +A X +B Z +B Z +A Z +A X +B X +C Y +A Z +C Z +B Z +A X +B X +B Z +A X +A Z +C Y +B X +B Y +C Z +C X +A Z +C Z +C Z +C Z +B Y +B X +A Z +B Y +A X +A Z +B Z +C X +A X +C X +B Y +A Z +C X +C X +A X +A X +A X +C X +B Z +B Z +C Z +C Z +A X +B Z +C Z +B Z +C X +B Y +C Z +A X +C Z +A X +A Z +C Z +B Z +C Z +B Y +A X +C Z +B Z +C X +C Z +C Z +C Z +C Y +C X +C Y +B Y +B Z +C Z +B X +C Z +C X +A X +C Z +B Y +C Y +C Z +B Z +C X +C Z +C Z +C Z +C X +A Y +B Y +C Y +A X +A Z +C Z +B Z +C Z +B Z +A X +A X +C Z +C X +B Z +B Z +A Z +C Z +A Z +C Y +B X +C Z +A X +B Y +A X +C Z +C Z +A Z +A Z +A X +C Z +B Z +C Z +B Y +A X +C Z +B Z +B Z +A X +A X +C X +B X +B X +B Z +A Z +C Z +C X +C Y +B Z +C X +A X +C Z +C Z +C Z +C Z +B Y +C Z +B Z +C Z +B X +C Z +C X +A X +B Y +C Z +C Z +A X +B Y +B Y +B Y +B Z +A X +B Z +B Z +A X +C Z +C Z +C Z +B Z +B Z +A X +C Z +C Z +C X +C Z +C Z +C Z +C Y +A Z +C X +C Y +C X +B Z +A X +C Z +C X +A Z +A Z +C Z +B Z +B Z +C X +B Z +C X +B Z +C X +C X +B Y +C Z +C Y +B Z +C X +C Z +C X +C X +C X +A X +C Y +C X +A X +B Z +A Z +C Z +C X +C X +C Z +B Z +C X +C Z +A Z +B Z +C Z +C X +C Z +C Z +A Z +C Z +A X +C Z +A Z +C Z +A X +B Y +C X +A X +C Z +B Z +A X +B Y +A Z +C Z +C Z +B Y +A X +B Z +A X +B Z +C Z +C X +B Z +C Z +B Z +C X +B Y +B X +C Y +A Z +C Y +C X +C Y +C X +C X +A Z +B Z +A Z +A X +A X +A X +C X +C Z +A X +B X +A X +C X +B Z +C Z +C Y +A Z +C X +C Z +B Y +B Z +A X +A Z +C Z +C X +B Y +A X +B Y +C Y +A X +A Z +B Z +C Z +C Z +A Z +C Z +C X +C Y +C X +C X +C Y +A X +C Z +C X +C Z +C Z +A Z +C Z +C Z +C Y +C Z +B Y +C Z +C Z +C Z +C Z +C X +A X +C Z +C Z +C X +C Z +C X +C Z +A X +A Z +B Z +B Y +A X +C X +C Y +A X +B X +C X +C X +A Z +C X +C Y +B X +C Z +A Z +C X +A X +B Z +C Y +C Z +C X +A Y +C Z +C Y +C Z +C Z +B Z +B Z +B Z +C Z +C Z +A X +B X +A X +B Y +B Z +B Z +C X +C X +C Z +A Z +A X +B X +B Z +B Z +A X +C Z +B Z +B Z +C Z +C Z +C Z +B Z +C X +C X +B Z +C Y +B Z +C X +B X +C X +A Z +A X +C Z +C Z +B Y +A X +A Y +C Z +A Z +C X +B Y +C X +A Z +B Y +B X +C Z +C X +B Y +C Z +B Z +C X +C X +C Z +B Z +C Z +C Z +C X +C X +C Z +C X +C X +C Z +A X +C X +C X +B Z +C Z +A X +C X +C X +A Z +C Z +C Z +B Y +B Z +B X +C Z +A X +A X +B Y +C X +C X +B Y +C Z +A Z +B Y +B Y +C X +C X +C X +C X +A X +B Z +B Y +B Z +C X +C Z +B Z +B Y +C Z +B Z +A X +C X +C X +C Z +A X +C X +C X +C Z +C Y +B X +C X +C Y +B Z +C X +C Y +C Z +C Z +A Z +B X +C Z +B X +A Z +C Z +C X +C X +A Z +C X +B Z +A Z +C X +C X +B X +C Z +C X +A X +C Z +C Z +B Z +B Y +C X +C Y +C Z +C Z +A Z +C Z +C Y +C Y +A X +C Z +A X +B Z +B Z +C Z +B X +B Z +A Z +A Z +B Z +B Y +B Z +C X +B Y +B Z +A X +B X +C Y +A X +C Z +B Z +C X +A X +B X +C Y +B Z +C Z +A X +C X +B Z +C X +A Z +C X +C Z +C Z +B X +C X +A Z +C X +B Z +C Z +C Z +C X +B Z +C Z +B X +C X +C Z +B Z +B Z +A X +C X +C Z +C Z +C Z +A X +C X +C Z +B Z +C Y +C X +C X +C Z +C X +C Z +C X +C X +C Z +B Z +B Z +C Z +B Z +C Z +B X +C Z +A X +C Z +C X +C X +C Z +B Y +B Z +B Z +B Z +C Z +B X +C X +B Z +A X +C X +A X +C X +C X +A Z +B Y +B X +A X +C Z +B Y +C X +A X +B Z +B Z +C Z +B Z +C Z +A Y +A Z +C X +C Y +A Y +C X +B Y +C X +C Y +C Z +B Z +C Z +B Z +B X +C Z +B X +B X +C Z +A Z +B Z +C Z +B Z +C Z +C Z +B Z +C X +C Z +C Z +C Z +C Z +A Z +C Z +B Z +B Z +B Z +C Z +C Z +C Z +A X +B X +C Z +A X +C X +B Z +C X +C Z +B Y +C Z +C Z +A X +C Z +C X +C X +C X +B Z +C Y +C Z +B Z +A X +C X +C X +C X +C Z +A Z +A Z +B Y +B Z +B Z +C X +A X +C X +C X +A X +B X +B Z +B Z +C X +C Z +C Z +C X +B X +A X +A Z +C X +C Z +B Z +B Y +C Z +A X +B X +B Z +C Z +C Y +C Z +C X +C Z +C Z +B Z +C Y +C X +A X +B Z +C Y +A Z +C Z +B Y +A X +A Z +A X +C Z +C Y +C Z +C Y +A Z +B Z +B Z +C Z +C Z +C X +C Z +C Y +C Z +C Z +B Y +A X +B Z +C Z +C X +C X +A Z +B Z +B Z +B Y +B Z +C Y +B Z +C Z +A X +C X +C X +B X +C Z +A X +C Y +B X +C Z +C Z +B Y +C Z +B Y +C Z +A Z +C Z +B Y +A X +C X +C X +C Z +C X +C Z +B Y +B Z +C Z +B Z +C Z +A X +B Z +C X +C Y +A Z +B Z +C X +A Z +C Y +B Y +C Y +C Z +C Z +A Z +A Z +C X +B Y +C Z +B Z +A X +B Z +A X +C X +C Z +B Z +C X +B Z +C X +A Y +C Z +B Z +C X +C X +C X +B X +B Y +A Y +B Z +A X +C X +C Z +B Y +C Z +C Z +B X +B X +A Y +C X +C Z +C X +C Z +C X +C X +C Z +C Z +C X +A X +C Z +B Z +B X +A X +B X +A Z +B X +C Z +C Z +A Z +C X +C X +A X +C Z +C X +C Z +C X +C X +C Z +A Z +C Z +A Z +C Z +B Z +C Z +C Y +C X +C Z +B Z +B Z +C Y +B Y +C X +C Y +A Z +A X +A X +A Z +C X +C X +C Z +C Z +B Z +C Z +A X +C Z +C X +B Z +A X +C Z +C Z +B Z +B Z +B X +B Z +A X +C Z +B Z +A Z +C X +C X +A Z +C Y +B Y +C X +B Z +C X +C Z +B Y +A Y +B Y +A X +C Y +C X +C Z +A X +A Z +B Z +B Y +C Y +B Z +A Y +B X +C Z +C Z +C X +A X +C Z +C Y +A Z +B Z +C Z +A Z +C Y +C Z +B X +C X +A Z +C Z +B Z +A X +B Y +C X +A X +B Y +C Z +B Z +C Z +C Y +A Z +C Z +B Z +C Z +C Z +A X +C Z +C Z +A Z +C X +C Z +A X +C Z +C Z +C Z +C Y +A X +B Z +B Z +A X +C Z +B Y +C Z +A X +C Y +B Z +C Z +A X +C Y +A Z +C X +B Y +C X +B Z +C Y +A Z +C X +C X +C Y +C X +A X +B Z +C X +C X +C X +B Z +B Y +B Z +C X +B Y +C Z +A X +C Z +A Z +C Y +C X +C Z +A Z +B Z +B Z +C X +A Z +A X +C Z +B X +A X +A X +B X +C X +C X +A Z +B Z +C Z +C X +B Z +A Z +A Z +C Z +C X +B Y +C X +C X +C X +C Z +C X +A X +C X +C Y +C Z +A X +C Y +B Z +B Z +A X +C Z +B Z +B Y +C Y +C X +A Z +B Y +A X +A Z +B Z +C X +B Z +A Z +C Y +C X +C X +C Z +B X +A X +C Z +C Z +C X +B Y +C Z +A Z +C Z +C Z +B Z +C X +C X +C Z +B Z +C Z +B Y +B Z +A X +B Z +A X +B Z +B Z +C Z +A Z +A X +A X +B Y +C Z +A Y +B Z +C Z +A Z +A Y +C Z +C Z +A X +C Y +C Z +C Z +A Z +C Y +C Z +A X +B Y +C Z +A X +B X +C X +A Z +C Z +A Z +C Y +C Z +C Y +A X +C X +B Z +B X +C Z +C Z +B Z +C Z +C Y +C X +B Z +A X +C Y +B Z +A Z +C Z +C X +B X +C Z +C Z +C Z +A X +C X +B X +C Y +A X +A Z +C X +C Y +C X +C X +A Z +A Z +C X +C X +C X +A X +A X +C X +A X +A X +A X +C Z +B Z +C Y +C Z +C Z +C X +C Y +A X +B Z +C Y +B Y +A X +A X +A Z +A Z +C Y +C Y +C X +C Z +A X +A X +C Z +C Z +B Z +B Z +C Z +A X +C X +C X +C X +A Z +C Z +A Z +B Y +B Y +C X +B Z +B Z +C Z +C Z +B Z +C Y +B Z +B X +B Z +C Z +A Z +A X +C X +A Y +C Z +A X +C X +A X +B X +C X +B Z +A X +C Z +B Z +C X +B Z +C Z +C X +A X +C Z +B Z +C Z +A Z +A X +A Z +C Z +C Z +B X +C Z +A Z +B Y +C Z +B X +B Z +C X +B X +A Z +C Z +C X +A Y +A X +C X +B Z +C X +C Y +C Y +C X +C Y +C Y +B X +B Z +A X +B Y +B Z +C Z +B Z +C Z +C Z +B Z +C X +C X +B Z +B Z +C X +C X +A X +C X +B Y +B X +C Z +B Z +A X +A Z +A Y +C Z +A Z +B Z +A Z +C X +C X +A Y +C X +B Z +B Y +B Y +C Z +B X +B Z +A X +B Y +C Z +C Z +A X +B Y +A Z +C Z +C Z +B Z +A Z +C Z +B Z +C Y +C X +B Z +A Z +A X +A X +A X +C Z +A Z +A X +C Y +C Y +B Z +C Z +B Y +C X +B Z +C X +B Z +B Y +C Z +A X +A X +B Z +A Z +B Z +C Z +C Z +A X +C X +C Z +A Z +A X +C Z +C X +B Z +C Z +A Z +C Z +B X +B Z +A X +C Z +C Z +A X +C X +A Z +C Z +A X +C Z +A Z +C X +C X +B Z +C Z +C X +B X +A X +B Z +B Y +B X +C Z +B X +B Z +C X +C Z +B Z +A Z +C Z +B Z +C Z +B X +B Y +C Z +C Y +C Z +B Y +B Z +C Z +A X +C X +C X +B Z +B Z +A X +A Y +A Z +C X +B X +C Z +C X +B Z +C X +A X +A X +B Z +B Y +B Z +B Y +C Y +C Z +B Z +C Y +B Z +C X +A X +B Y +C Z +A X +A X +C X +C Z +B Z +C Y +C Z +C X +C X +C Z +C X +B Z +C Y +C Z +A X +C X +B X +A X +B X +C X +C Z +A Z +A X +A Z +A X +A X +A X +A Y +A X +B Z +B Y +A X +C Z +A Z +C X +C Z +A Z +A Y +C Z +B Z +B Z +B Z +C X +A X +A X +C Z +C X +A X +C Z +C X +A X +C Y +B Z +C Z +C X +C X +C X +C Z +C X +C Y +B Y +C X +B Y +B Z +C X +C Z +A X +B Z +C Z +C X +A Y \ No newline at end of file diff --git a/2022/2.js b/2022/2.js index e69de29..346b412 100644 --- a/2022/2.js +++ b/2022/2.js @@ -0,0 +1,43 @@ +const fs = require('fs'); + +const action = { A: 0, B: 1, C: 2 }; +const result = { L: 0, D: 3, W: 6 }; +const matrix = [[result.D, result.W, result.L], + [result.L, result.D, result.W], + [result.W, result.L, result.D]] + +const evalMove = (move) => { + const theirMove = action[move[0]]; + const myMove = action[String.fromCharCode(move[1].charCodeAt(0) - 23)]; + return matrix[theirMove][myMove]; +} + +const moves = fs.readFileSync('2.input').toString().split('\n').map(v => v.split(' ')); + +const scorePot = moves.reduce((p, c, i) => { + p += action[String.fromCharCode(c[1].charCodeAt(0) - 23)] + 1; + p += evalMove(c); + return p; +}, 0); + +console.log(`Part 1: ${scorePot}`); + +const expected = { X: 0, Y: 3, Z: 6 }; + +const evalTarget = (move) => { + const targetResult = expected[move[1]]; + for (let x = 0; x < 3; x++) { + const char = String.fromCharCode(88 + x); + if (evalMove([move[0], char]) == targetResult) { + return action[String.fromCharCode(65 + x)] + 1; + } + } +} + +const targetResolutionScorePot = moves.reduce((p, c, i) => { + p += expected[c[1]]; + p += evalTarget(c); + return p; +}, 0) + +console.log(`Part 2: ${targetResolutionScorePot}`);