| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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());
|