|
|
@@ -0,0 +1,68 @@
|
|
|
+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());
|
|
|
+
|