summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreug-vs <eugene@eug-vs.xyz>2022-12-02 16:50:41 +0300
committereug-vs <eugene@eug-vs.xyz>2022-12-02 16:51:52 +0300
commitc3f76aa0ca9badbadfa567f438857d5fbd3511bf (patch)
tree145380368ca767f257352ffc41574063987ad547
parentea2449a171230bf5bb79d4cc010aa72e720daf31 (diff)
downloadaoc-2022-c3f76aa0ca9badbadfa567f438857d5fbd3511bf.tar.gz
feat(day-2): even more dumb part 2
-rw-r--r--day-2/index.js27
1 files changed, 18 insertions, 9 deletions
diff --git a/day-2/index.js b/day-2/index.js
index 3671a9b..245acb7 100644
--- a/day-2/index.js
+++ b/day-2/index.js
@@ -12,14 +12,21 @@ const defeatMap = { // What defeats what
[PAPER]: ROCK,
}
-const shapeMap = {
+// This is dumb
+const suckMap = { // What loses to what
+ [ROCK]: PAPER,
+ [SCISSORS]: ROCK,
+ [PAPER]: SCISSORS,
+}
+
+const inputMap = {
A: ROCK,
B: PAPER,
C: SCISSORS,
- X: ROCK,
- Y: PAPER,
- Z: SCISSORS,
+ X: LOSS,
+ Y: DRAW,
+ Z: WIN,
}
const shapeScores = {
@@ -35,12 +42,14 @@ const outcomeScores = {
};
const result = lines.reduce((acc, line) => {
- const [opponentShape, shape] = line.split(' ').map(code => shapeMap[code]);
- if (!shape || !opponentShape) return acc;
+ const [opponentShape, outcome] = line.split(' ').map(code => inputMap[code]);
+ if (!outcome || !opponentShape) return acc;
+
+ let shape;
- let outcome = LOSS;
- if (shape === opponentShape) outcome = DRAW;
- else if (defeatMap[shape] === opponentShape) outcome = WIN;
+ if (outcome === DRAW) shape = opponentShape;
+ else if (outcome === LOSS) shape = defeatMap[opponentShape];
+ else if (outcome === WIN) shape = suckMap[opponentShape];
return acc + shapeScores[shape] + outcomeScores[outcome];
}, 0)