From 188dd149a78724bb694301e7a0fa25d0af464764 Mon Sep 17 00:00:00 2001 From: Luke Hubmayer-Werner Date: Fri, 2 Dec 2022 18:12:04 +1030 Subject: [PATCH] 2022 Day 2 Scala --- 2022/day2-input | 2500 +++++++++++++++++++++++++++++++++++++++++++++++ 2022/day2.scala | 50 + 2 files changed, 2550 insertions(+) create mode 100644 2022/day2-input create mode 100644 2022/day2.scala diff --git a/2022/day2-input b/2022/day2-input new file mode 100644 index 0000000..31248b3 --- /dev/null +++ b/2022/day2-input @@ -0,0 +1,2500 @@ +B Y +C Z +C Y +C Y +A X +C Y +C Y +C Y +A X +B X +B Y +B Y +B Z +C Z +C Z +C Z +B Y +A Z +C Y +C X +B Z +C Y +C Z +B Y +B Y +A X +B Y +A X +C Y +B Y +B X +A Y +C X +A Y +B Y +B Y +A Y +B Y +A Z +B Y +B X +C Z +B X +B Y +A Z +B X +C Y +C X +C Y +C Y +B Y +C Z +C Z +B Y +B Y +B Y +C X +B Y +B Z +B Y +B X +C X +B X +A Y +C Z +C X +B Y +B Y +C Z +B X +C X +C Y +C Y +C Y +B X +C Z +C Z +B Z +B Y +C Y +C Y +B Z +A Y +B Y +A X +B Y +A X +A X +B Y +B Z +A X +C Y +C Z +C Y +C Z +B X +C Y +A X +B Y +C Y +C Z +A Z +A Z +C Z +A Y +C Y +B Y +B Z +C X +A Z +A Y +C Z +B X +C Y +C Y +B Z +C X +B Y +C Y +A X +C X +B Y +C Y +B Y +C X +B Z +C Y +C Z +B Y +B Y +B Y +B Y +B Z +C Y +B Z +A Y +C Z +C Z +C Z +B Y +B X +C Z +C Z +C Z +C Z +C Z +B Y +C Y +A Z +B Y +C Y +A Y +B Y +C X +A X +A Y +C Z +C Y +B X +C Z +B Y +C Y +C Y +C X +B Z +B Z +C Z +A X +B Z +C Y +C X +C Z +A X +A X +C X +B Y +C Y +B Y +B Y +B X +C X +B Y +B Y +C Y +A Y +C Y +B Y +C Y +A Y +B Z +C Y +B Y +C Y +B Z +A X +C Z +C Y +B Y +C Y +C Y +A X +B Y +C Y +A Z +C X +A X +B Y +A X +A X +C Z +B Y +C Z +C Z +C Z +C Z +B Y +C Y +A Z +A X +B Y +C Z +B Z +C X +C X +B Y +C Y +B Y +B Z +B Z +C X +B Y +C X +C X +A Z +B Y +B X +A Z +A Y +A X +A Y +C Y +A X +A Y +C Y +C Z +B Y +A Y +C Y +B X +A Y +B Y +A Y +B Y +C Y +A Y +B Y +C Y +C Y +C Y +B Y +C Z +C Z +A Z +B Y +C X +B Z +C Y +A X +B X +B Z +A Y +C Z +A X +A Z +C Y +B Y +B Y +B X +B Y +B Y +B Z +A Y +B Y +A X +C Y +C Z +C Z +B Y +C Y +B Y +C X +C Y +A Y +B Y +C Z +B Y +C Y +C Y +B X +A Z +A Y +A Y +C Y +C Y +B Y +B Z +B Y +A Z +B Y +A X +C Y +A X +C Z +C Z +C Y +C Y +A Y +C Z +C Z +C Y +B Y +C Z +B Z +A X +C Z +A Y +B Y +A X +A X +A X +B Z +B Y +A Y +A X +B X +C Z +B Y +C X +C Z +A Z +C Y +A Z +A Y +A Z +C Y +A Z +C Y +B Y +B Y +A X +A Y +B Y +B X +A Y +C Z +B Y +C Y +C Z +B Y +C Y +A X +A X +B Y +B Y +C Z +A X +B Z +A X +C Y +B X +C Z +B Y +C Y +A Z +C Z +C Y +C Z +C Y +B X +B X +C Z +A Z +C X +C X +A X +B Z +A X +B X +A Y +B Y +C Y +C Z +C Y +C Z +C Z +B Y +C Y +B Z +C Z +C Z +C Y +B Y +C Y +A Y +B Y +C Z +B Y +A X +C Y +C X +C Z +B Y +B X +B Y +C Y +B Z +A Z +C Z +C Y +C Z +C Y +A X +B Y +A X +B Y +B Y +A X +C Y +B X +A X +C Z +C Z +A X +A Y +A Y +C X +B Y +A X +B Y +A Z +A X +C Y +A X +C Y +C Z +C Y +B Z +A X +B Z +B Z +A Z +C X +C Y +B Y +C X +C Y +C X +C X +B X +C X +C Z +A X +A Y +A X +B X +B Y +B Y +C Z +B Z +B Z +B Y +C Z +C Y +C Z +B X +C Y +C Y +C Z +B X +C Y +C Z +B Y +B Z +C X +B Z +C Y +A X +A X +A Z +B Y +C X +C Y +B X +A X +A Y +C Z +A Y +C Y +C Z +C X +C Z +C Z +A X +B Y +A X +A Z +B X +C X +B X +B Y +C Y +C Y +C Z +C Y +C Y +C X +C Z +C Y +B Z +C Y +B Y +A Y +B Y +C Y +A X +C Y +B Z +B Y +C X +C X +C Z +C Y +B Y +C Y +B Y +B Y +C X +C X +C Y +B Y +B Y +B X +C X +A Z +B X +C Y +B X +C Y +C Y +B X +B X +C Y +A X +B Y +A Y +B Y +B Y +B Y +A X +C Z +A Y +C X +A Y +C Y +A X +C Y +C Z +B Y +B Y +A Y +C Y +B Y +C Y +C Y +A Z +B Y +A X +C Z +C Y +A X +A X +C X +B Y +A X +A Z +C Y +C Z +B Y +A X +C Z +C Z +B Y +B X +C Y +B Y +B Y +C Z +B X +B Z +C Y +C Y +B X +C Z +C X +A Y +B X +C Y +B Y +C Z +C Y +B Y +C Z +C X +A Y +B Y +C Z +C Y +A Y +C Y +B Y +B Y +C Y +B Z +C Y +C Y +B Z +C Y +B Y +A X +C Z +C Y +C Z +C Y +A X +A Z +C Y +A Y +C X +B X +A X +C Y +C Z +A X +C Y +C Y +A Z +C X +B Z +C X +C Y +B Z +A X +A X +B Z +A X +A Y +B X +C Y +A Y +C Y +A Z +C Y +B X +B Y +A Y +C Y +C Y +C Y +C Z +B X +C Z +C Y +B Y +B Y +C Z +B Z +B Y +A X +C Y +C X +A Y +B Z +C X +A Z +B Z +C Z +C Z +C Y +C Y +B Y +B Y +B X +A Z +C Y +A Y +C Z +A Y +A X +C Z +C Y +A X +B Y +C Z +C Y +C Z +C Y +C X +B Z +B Y +B Y +A Z +B Z +B Y +C Z +B Y +B X +C Z +B Y +C Z +C Y +C Y +A X +B Y +B Z +A X +C X +A Y +B X +B Y +A Y +A X +A Z +A X +C Y +B Z +A Z +C Z +C X +A X +C X +A X +B Z +C Y +B Z +C Z +C Z +A X +A Z +C X +B Y +C Z +A X +C Y +A Y +B Y +C Y +B X +A X +B X +C Y +A Z +B X +B Y +C X +B Y +A Y +B Y +A Z +C Z +C Z +C Z +C Y +B Y +B Y +C Z +C Y +A Y +A Y +C Z +A Z +C Y +C Z +C Y +C Z +A X +C X +C Z +B Y +C Z +C Y +B Y +B Y +A Z +A Z +C Y +C Z +C Z +C Z +C X +B Z +C Y +A Z +C Y +B X +B Y +C Y +B Y +C Z +C Z +B Y +C Y +A Z +B Y +B Y +B Y +B Y +C Y +B Y +A X +C Y +A Y +C Y +C Z +A Y +A Z +C Y +C Y +C Y +C Z +B Y +A Y +B Y +C X +B Y +B Y +B Y +C Y +B X +C Z +A X +B Y +C Z +C Z +B Z +B Y +C Y +B Y +B Y +C X +B X +A Y +A Z +C Z +A Z +C Z +C Z +C Z +A Z +C Y +C X +A X +C X +A Z +C Y +C Z +C Z +B Y +C Y +A X +C X +C Y +C Z +A X +A Z +C X +A X +B Y +A X +C X +A X +C Y +B Y +C Z +B X +A Z +C Z +B Z +C Z +C Y +B Y +C Z +C Y +A Y +B X +B X +A Z +B Y +A X +C Y +C Y +B Y +A X +B Y +B Y +C Z +A Y +C Z +C Z +B Y +C Z +C Z +C Y +C Y +C X +C Y +A Z +C Y +A Z +C Z +B X +A X +C Z +C Z +B Y +C Y +C Y +A X +C Y +A X +C Y +C Z +B Y +B Z +A X +B Y +A Y +B X +C X +A Y +A X +C Y +C Z +A X +C Y +A Y +C Y +B Y +C X +C Z +C Y +A X +B Y +B Y +A X +C Y +B Y +C Y +A Y +B Y +B Z +B X +B Y +C Y +B Y +A Y +C Z +C Y +C Z +C Y +B Z +C X +C Z +C Y +C X +A X +C Y +C X +B Y +C Y +C Z +C Y +B Y +B Y +C Y +C Z +B Z +C Y +C Z +B Y +C Z +C X +C Y +C Y +C Z +A X +A Y +C X +C Y +C X +C Y +A X +C Y +A X +B Y +B Y +A X +B X +A Y +B Y +C Z +C Y +C Y +B Y +A Z +C Z +A Z +B Y +B Y +C Y +C Z +B Y +C Z +B Z +C Z +C Y +A X +C Z +B Y +A Z +C Y +C Z +A Y +C Y +B Y +C Z +B Z +B Y +B Z +B Y +C Y +C Y +C Z +B Y +A X +B Y +B Y +C Y +B Z +B Y +C Y +C X +C Z +C Z +B Y +C Y +C Z +B Z +C Z +C Z +B Y +C X +C X +B Y +C Z +B Y +B Y +C X +A Z +B Z +B X +B X +C Z +C Z +B Z +A Y +C Y +B Y +C X +C Z +A Z +B Z +C Y +B Y +B Z +C Z +A X +C Z +B Y +A Y +B Y +B Z +A X +C Y +A Z +C Z +C Y +B Y +A Y +B Y +B Y +C Y +A X +B Y +C Z +C Z +C Y +B Z +B Y +B Z +B X +C Y +A X +B Y +C Z +C Y +C Z +C Z +C X +C Y +C Z +B Y +A X +C Y +C Y +C Y +A Y +A Y +A Y +C X +B Y +B Y +A Y +C Z +C Z +B Z +C Y +B Y +A X +C X +B Y +C Y +B Y +B Z +C Z +A Y +B Z +C X +B Y +C Z +C Z +C Y +B Y +B Z +B Y +B X +B X +C Z +A Y +B Y +C Z +C Y +A Z +A Z +C Z +C Y +B Y +A Y +B Y +B Y +A X +C Y +A X +C Z +B Y +B Y +B Y +A Y +C Y +C Z +B Y +C Y +C Y +B Y +A X +C Y +C Y +B Y +B Y +C Z +A X +C Y +C Y +C Y +B Y +C Y +A Z +B Y +C Y +A Z +A Z +C Z +C Z +B Y +A Y +B Z +C Z +B Y +B Z +A Y +C X +A X +C Y +B X +B Y +A Y +B Y +C Z +A Z +B Y +C Z +B Y +C Z +C Z +A X +C Y +A Z +B Y +B Y +B Y +B Z +A Y +C Z +A Y +B Y +B Y +B Y +B X +A Y +C Y +A X +C Y +A X +A X +B Y +B Z +B Y +B Y +C Y +C Y +B Y +C Z +A X +A Z +A Y +C Y +C X +B Z +A X +A Y +C Y +C Z +B Y +C X +B Y +B X +B Y +A Y +A Z +B Z +A X +A Z +B Y +B Z +C Y +C Y +C Y +A Y +B Y +B Y +B Y +A Z +B Y +C Y +B Y +A Y +A X +B Y +C Y +A Y +C Y +C Y +A Z +C X +C Y +C Y +B X +A Y +B Z +A Z +B Y +C Z +C Z +C Z +B Y +A Y +B Z +C Y +A X +B Y +A Y +B Y +B Y +C Y +B X +C X +C Y +C Z +B Y +C Z +A Y +A X +C Y +B Y +C X +A X +C Z +C Y +C Z +C Y +A X +C Y +C X +C Z +B Y +B Y +A Z +A Y +B Z +C Z +C Z +C Z +C Y +A Z +B Y +A X +C Y +A X +B Z +B Y +B Y +B Y +A X +B Y +C X +A X +A X +B X +B Y +C Y +A X +B Y +B X +B Z +B Y +B Y +C Y +B Y +C Z +A Z +C Y +C Y +A X +A X +C Y +B Y +C Z +C Y +B Y +B Z +B Z +A X +C Y +C Y +B Y +A Y +C Z +A Z +C X +B Y +B Y +C Z +A Z +B Y +B Y +C Y +C Z +A X +B Y +B Y +C Y +B Y +C Y +C Y +C Y +A X +C Y +B Y +B Y +A X +A Y +B Y +B Y +C Z +C X +C Z +A X +A X +C Y +C X +B Z +B X +C Z +C Z +B Y +B Y +C Y +C Y +C Z +C Y +A X +B Z +B Y +C Z +C X +C Y +B Y +B Y +B Y +C Z +B Y +A X +C Z +B X +B Z +A Y +A Z +B Y +B X +A X +B Y +B Y +A Z +A X +C X +A Z +A X +A Z +C Z +A X +C Y +B Y +B Y +C Y +B Z +B X +C Y +B Y +A Z +C X +C Y +B Y +A Z +C Y +C Y +A X +C X +C Y +C X +A Y +B Z +A Z +C Z +B Y +C Z +C Y +A Z +B Y +A Z +C Y +A X +A Z +B Y +B Y +B Z +B Y +A X +C Y +B Y +C Y +B Y +A X +C Z +B Y +C Y +A X +C Y +B Y +B X +C X +A X +B Y +C Y +B Y +B Y +C Z +B X +C Z +A X +C Z +A X +A Z +C Y +C Y +B Y +B Y +A Z +A X +C Z +B Y +B Y +A Y +C Y +C Z +C X +C Y +A Y +B Z +C Z +A Z +C Y +C X +C X +B Z +A X +C Y +A X +C Z +B Y +C Y +A Z +A X +B Y +B Y +B X +C Z +C X +B Y +C X +A Y +A Y +C Z +C Z +C Z +B Z +C Z +A Y +C Z +A X +A Y +C Z +B Y +C Y +C X +C Z +B Y +A X +B X +B Y +B X +C Y +A X +B Y +C Y +C Y +B Y +B Y +A X +A Y +C X +C Y +B Y +C Z +A X +C Z +B Z +C Z +C Y +C X +C Y +A X +B Y +C X +A X +C Y +C X +C Y +A Z +C Y +B Y +C X +C Z +C Y +B Y +C Y +A Y +A X +C Y +C Y +C Z +A X +B Y +C Y +B Z +C Y +B Y +A X +B Z +C Z +C Z +C Y +C X +B Z +C Z +C Z +B Y +B X +A Z +A X +C Y +A X +B X +A X +A Z +C Z +C Y +C Z +C Z +B Z +C Z +B Y +C Y +B Y +A Z +C Y +B Y +C Z +A Y +B Z +B X +B Y +B Y +C Y +C Y +B Y +B X +B X +A X +C Z +B Y +C Z +C Y +B Y +A X +C X +C Z +B Z +C Y +C Y +B Y +B Y +C Z +A X +B Y +C Z +C Y +C Z +C Y +B Y +C Y +C X +C X +A X +A X +B Z +B Y +B Y +C Z +A X +B Y +A Y +B Y +A Z +C Z +C Y +A Y +A X +B Y +B Y +C X +A X +C Z +C Y +A Z +B Y +C Z +C X +B Z +C Z +B Y +A Y +B Y +B Y +A X +B Z +B Y +C Z +C Y +B X +A Z +C Z +B Y +C Y +A Z +B Y +A Y +B Y +B Z +A Z +B Y +C Y +C Y +C Y +A X +B Y +C X +C Y +A X +B Z +A Y +C Z +B Y +B Z +B Y +C Y +B Z +B Y +B Z +C Y +B Z +B Y +B Z +C Y +A Y +C Z +C Y +C Y +B Y +A Y +A Z +A X +C Z +B Z +C X +B Y +B Y +C Z +A X +C Z +C Y +B Z +A Z +B Y +C Y +C Y +A X +B Y +C X +A X +B Y +A Y +A X +B Z +C Z +C X +A Z +C Y +A Y +C Y +A X +C Z +B Y +A X +B Y +B Y +A Z +C Z +A X +A X +A X +A X +C Y +B Y +C Y +C X +C Y +A Y +C Z +A X +B X +B Y +C Z +B Y +B Z +A X +C Y +B Y +C Y +B Y +C Z +C Y +C X +A Y +A Y +C Y +A Z +B Y +A Y +B Z +B Y +C Y +A Y +B Y +C X +C Y +C Z +C Z +A X +C Z +B Y +B X +B X +A Y +C Z +A Y +C X +A X +C Z +C Y +C X +C X +C Z +A Z +C Z +B Y +B Z +C Z +C Y +A X +A X +C X +B X +C Y +B Y +B Z +C Z +C Z +B Y +B Y +B Z +A X +B Y +A X +B Y +C Y +B X +C Z +C Z +C Y +A Y +B Y +B Y +B Y +C Z +A Z +A Z +A Y +A Y +B Y +C Z +C Z +A Z +A Z +B Y +A Z +A Y +C Y +B Y +B Y +A X +C Z +C Z +B Y +A X +B Y +A Z +B Y +A X +A X +C Z +C Y +B Y +C Y +B X +B Y +A Y +B Y +B X +C Y +B Y +C Y +C Y +B Y +C X +C Y +A X +B Y +C Y +A Y +B Y +A X +C Z +B Y +C Y +B Y +C X +A Y +C Z +B Y +B Y +B Z +B Z +C Z +C Z +C Z +A Y +B Y +A Z +A X +C Z +B Y +A X +B Y +B X +C Z +B Y +C Y +B X +C X +C X +A Z +C X +A Z +C Z +B X +C Y +A X +C Y +B Y +C Y +B Y +C Z +C Z +C Z +C Z +C Z +C Y +A X +B X +B X +B Z +A X +C Y +A X +C Z +C Z +C Y +A X +C Z +A X +A X +A X +C Z +C X +B Y +C Y +B Z +C Y +B Y +A X +A Y +C Z +B Y +B Y +B X +C Z +C Z +A Y +A X +C Y +A X +C Y +C Y +B Z +B Y +B X +C Y +A Y +A X +B Y +B Y +C Y +A Y +B Y +B Y +B X +A Z +C Y +C Y +B Z +C Y +B Z +B Y +C Y +A Y +B Y +A X +C Y +C Z +C Y +A X +C Z +B Y +B Z +A X +C Y +C Y +C Y +C Z +B Y +B Y +A X +C Y +B Y +A Y +C Z +C X +C Y +A X +C Y +C Z +A X +C Y +A Z +B Y +B X +B Y +B Z +B Y +B Y +B Y +C X +A X +B Y +A X +A Y +C Z +C Y +C Z +C Y +B Y +B X +B X +C X +B Y +A X +A X +C Y +C X +B X +C X +C Z +C Z +B Z +C Z +C X +B Y +B X +B Y +C Y +A Y +A Y +C Z +B X +B Y +B Z +A X +C Y +A Y +C Y +C Z +C X +B Z +A X +A X +A Y +A Y +A Z +B Y +C X +C Z +C Z +B Y +B Z +C Y +B Y +C Y +B Y +B Y +B Y +C Y +C Y +C Y +A X +B X +C Z +C Y +A X +B Y +A Y +C Y +A X +B Y +B X +B Y +C X +C Z +A X +C Y +B Y +A Y +C Z +C Y +B Z +C Z +B Y +A X +B Y +C Z +A Y +B Y +A Y +B Y +B X +C X +C Y +A Y +B Z +A X +A Z +B Y +A X +C Y +B Y +A Y +A X +B X +B X +B Y +A Z +C Z +C Y +C X +C X +C Z +C Y +B X +A Y +C Y +B Y +B Y +A X +B Y +B Y +A Z +A Y +B X +A Z +B Z +B Y +A X +A X +C Y +A Y +C Y +C Z +A Y +C Y +C X +C X +C Y +B X +A X +A Y +B X +A Y +C X +B Y +B Z +B Y +A Y +C Y +B X +A Z +A X +B Y +C X +C Y +C Y +B Y +A Y +C Y +C Y +B Y +C Y +B Z +B Y +B Y +A Y +B Y +C Z +B Y +B Y +B X +B Y +B Z +C X +B X +C Z +B Z +C Z +A X +C X +A X +B Y +B X +B Y +C Y +C X +B Y +A X +B Y +B Y +C Y +A X +C Y +C X +B Z +A Z +C Y +B Z +A X +B Y +A X +B Y +A Y +C Y +C Y +C Y +C X +C Z +A X +B Y +C Y +B Z +C Z +C Z +C Z +C Y +C Y +C Y +A X +B Y +B Y +B Y +B Y +B Y +C Z +A Z +C X +A X +C Z +A X +C Y +C Y +C Z +C Y +C Y +C Y +C Y +C Z +A Y +B Y +B Z +C Z +A X +A Y +C Z +C Z +A Y +C X +A Z +B Y +B Y +A Y +C Z +A X +C Y +A X +C X +B Y +B Y +B Y +A Z +B Z +C Y +A X +B Y +B Z +B Y +B Y +C Z +A Y +B Y +C Z +A X +C Y +C X +C Y +B X +C Z +C Z +B Y +A Z +A Y +C Z +B X +B Y +B Y +A Y +C X +C Y +B Y +A Y +A X +B Y +C X +B Y +B X +C Z +C Z +C Y +C Z +C Z +C X +A X +A Y +C Y +B Y +B Y +C Y +A Y +C Z +A Y +A X +B X +C X +C Z +C Z +B X +C Y +A Z +C Z +C Z +C Y +A X +C Z +B Y +A Y +A X +C Y +C Y +C Y +B Y +A Z +C Y +C Y +C Y +B Y +B X +C Y +A Z +B Y +B Y +C Y +C Z +C Y +A X +A X +C Y +C Y +B Z +A Y +B Y +A X +A X +C Y +B Y +B Z +C Z +C Y +C Y +C X +B Z +A Z +B X +B Y +B Y +A Y +A X +C Z +C X +C Z +A Z +B Y +A Z +A X +A X +B Z +B Y +A Z +A X +A Z +B Y +B Y +C Z +C Y +A Y +A Y +B Y +A Y +C Z +C Y +C Z +C Y +C Z +C Z +C X +C X +C X +B Y +C X +C Z +B Y +B Y +C Y +B Y +C Y +B X +B Y +B Z +C Z +B Y +C Y +B Y +C Y +A X +B Y +B Y +C Z +B Y diff --git a/2022/day2.scala b/2022/day2.scala new file mode 100644 index 0000000..fb72a4d --- /dev/null +++ b/2022/day2.scala @@ -0,0 +1,50 @@ +import scala.io.Source +import scala.math.floorMod + +enum RPS(val score: Int): + case Rock extends RPS(1) + case Paper extends RPS(2) + case Scissors extends RPS(3) + + def <=>(other: RPS) = + (other.score - score) match + case -2 | 1 => -1 + case -1 | 2 => 1 + case _ => 0 + + def >(other: RPS) = <=>(other) > 0 + def <(other: RPS) = <=>(other) < 0 + def ==(other: RPS) = <=>(other) == 0 + + def +(amount: Int) = RPS.fromOrdinal(floorMod(this.ordinal + amount, 3)) + def -(amount: Int) = RPS.fromOrdinal(floorMod(this.ordinal - amount, 3)) + +def resultScore(a: RPS, b: RPS) = a <=> b match + case -1 => 0 + case 1 => 6 + case _ => 3 + +val moveMap = Map("A"->RPS.Rock, "B"->RPS.Paper, "C"->RPS.Scissors, "X"->RPS.Rock, "Y"->RPS.Paper, "Z"->RPS.Scissors) + +@main def main() = + val strategyGuide = Source.fromFile("day2-input").getLines.map(_.split(" ")).toArray // Can't leave it lazy as Part 1 will consume it + // val strategyGuide = Source.fromString("A Y\nB X\nC Z\n").getLines.map(_.split(" ")).toArray + + // Part 1 - evaluate all moves in the guide using moveMap and tally score + var score = 0 + for movePair <- strategyGuide do + val opponentMove = moveMap(movePair(0)) + val ourMove = moveMap(movePair(1)) + score += resultScore(ourMove, opponentMove) + ourMove.score + println(score) + + // Part 2 - X->lose, Y->draw, Z->win + score = 0 + for movePair <- strategyGuide do + val opponentMove = moveMap(movePair(0)) + val ourMove = movePair(1) match + case "X" => opponentMove - 1 + case "Y" => opponentMove + case "Z" => opponentMove + 1 + score += resultScore(ourMove, opponentMove) + ourMove.score + println(score) \ No newline at end of file