const fs = require('fs'); const inputArray = fs.readFileSync('input.txt').toString().split("\n"); // Part One let totalScore = 0; for (i in inputArray) { const value = (inputArray[i]); const throws = value.split(" "); const result = getResult(throws[0], throws[1]); const score = getScore(result, throws[1]); totalScore += score; } console.log(totalScore); // Part Two totalScore = 0; for (i in inputArray) { const value = (inputArray[i]); const throws = value.split(" "); const result = getThrownResult(throws[1]); const thrownThrow = getThrownThrow(throws[0], throws[1]); const score = result + thrownThrow; totalScore += score; } console.log(totalScore); // functions function getResult(them, me) { let result; if (them === "A") { if (me === "X") { result = 1; } else { result = me === "Y" ? 2 : 0; } } if (them === "B") { if (me === "Y") { result = 1; } else { result = me === "Z" ? 2 : 0; } } if (them === "C") { if (me === "Z") { result = 1; } else { result = me === "X" ? 2 : 0; } } return result * 3; } function getScore(result, me) { const options = ["X", "Y", "Z"]; const value = options.indexOf(me) + 1; return value + result; } function getThrownResult(thrown) { const results = ["X", "Y", "Z"]; return results.indexOf(thrown) * 3; } function getThrownThrow(them, me) { let result; if (them === "A") { if (me === "Y") { result = 1; } else { result = me === "X" ? 3 : 2; } } if (them === "B") { if (me === "Y") { result = 2; } else { result = me === "X" ? 1 : 3; } } if (them === "C") { if (me === "Y") { result = 3; } else { result = me === "X" ? 2 : 1; } } return result; }