const fs = require('fs'); const readline = require('readline'); const ROCK = 1; const PAPER = 2; const SCISSORS = 3; const LOSE = 0; const DRAW = 3; const WIN = 6; function isWin(input, output) { return ((input === ROCK && output == PAPER) || (input === PAPER && output === SCISSORS) || (input === SCISSORS && output === ROCK)); } function isLoss(input, output) { return input != output && !isWin(input, output); } function getSymbol(input, expected) { if (expected === DRAW) return input; if (expected === WIN) { if (isWin(input, ROCK)) return ROCK; if (isWin(input, PAPER)) return PAPER; if (isWin(input, SCISSORS)) return SCISSORS; } else { if (isLoss(input, ROCK)) return ROCK; if (isLoss(input, PAPER)) return PAPER; if (isLoss(input, SCISSORS)) return SCISSORS; } } async function main() { let part1 = 0; let part2 = 0; for await (let line of readline.createInterface({ input: process.stdin })) { let input; let output; let expectResult; if (!line || !line.length) continue; switch (line[0]) { case 'A': input = ROCK; break; case 'B': input = PAPER; break; case 'C': input = SCISSORS; break; } switch (line[2]) { case 'X': output = ROCK; expectResult = LOSE; break; case 'Y': output = PAPER; expectResult = DRAW; break; case 'Z': output = SCISSORS; expectResult = WIN; break; } part1 += output; part2 += expectResult + getSymbol(input, expectResult); if (isWin(input, output)) part1 += WIN; else if (input === output) part1 += DRAW; } console.log("Score part1: ", part1); console.log("Score part2: ", part2); }; (main());