A src/main/advent2022/Day02.kt => src/main/advent2022/Day02.kt +116 -0
@@ 0,0 1,116 @@
+package advent2022
+
+
+enum class RPSMove {
+ Rock,
+ Paper,
+ Scissors;
+
+ companion object {
+ fun fromString(s: String): RPSMove {
+ return when (s) {
+ "A" -> Rock
+ "X" -> Rock
+ "B" -> Paper
+ "Y" -> Paper
+ "C" -> Scissors
+ "Z" -> Scissors
+ else -> throw IllegalArgumentException("unknown move: $s")
+ }
+ }
+ }
+}
+
+enum class Outcome {
+ Win,
+ Draw,
+ Lose;
+
+ companion object {
+ fun fromString(s: String): Outcome {
+ return when (s) {
+ "X" -> Lose
+ "Y" -> Draw
+ "Z" -> Win
+ else -> throw IllegalArgumentException("unknown outcome: $s")
+ }
+ }
+ }
+}
+
+fun whichMove(p1: RPSMove, p2: Outcome): RPSMove {
+ return when (p1) {
+ RPSMove.Rock -> when (p2) {
+ Outcome.Win -> RPSMove.Paper
+ Outcome.Draw -> RPSMove.Rock
+ Outcome.Lose -> RPSMove.Scissors
+ }
+
+ RPSMove.Paper -> when (p2) {
+ Outcome.Win -> RPSMove.Scissors
+ Outcome.Draw -> RPSMove.Paper
+ Outcome.Lose -> RPSMove.Rock
+ }
+
+ RPSMove.Scissors -> when (p2) {
+ Outcome.Win -> RPSMove.Rock
+ Outcome.Draw -> RPSMove.Scissors
+ Outcome.Lose -> RPSMove.Paper
+ }
+ }
+}
+
+fun outcomeScore(p1: RPSMove, p2: RPSMove): Int {
+ return when (p1) {
+ RPSMove.Rock -> when (p2) {
+ RPSMove.Rock -> 3
+ RPSMove.Paper -> 6
+ RPSMove.Scissors -> 0
+ }
+
+ RPSMove.Paper -> when (p2) {
+ RPSMove.Rock -> 0
+ RPSMove.Paper -> 3
+ RPSMove.Scissors -> 6
+ }
+
+ RPSMove.Scissors -> when (p2) {
+ RPSMove.Rock -> 6
+ RPSMove.Paper -> 0
+ RPSMove.Scissors -> 3
+ }
+ }
+}
+
+fun moveScore(p: RPSMove): Int {
+ return when (p) {
+ RPSMove.Rock -> 1
+ RPSMove.Paper -> 2
+ RPSMove.Scissors -> 3
+ }
+}
+
+fun roundScore(p1: RPSMove, p2: RPSMove) = outcomeScore(p1, p2) + moveScore(p2)
+
+fun solve2a(input: List<String>): Int {
+ return input.sumOf { line ->
+ val (p1, p2) = line.split(" ").map { RPSMove.fromString(it) }
+ roundScore(p1, p2)
+ }
+}
+
+fun solve2b(input: List<String>): Int {
+ return input.sumOf { line ->
+ val (p1s, p2s) = line.split(" ")
+ val p1Move = RPSMove.fromString(p1s)
+ val p2Outcome = Outcome.fromString(p2s)
+ val p2Move = whichMove(p1Move, p2Outcome)
+ roundScore(p1Move, p2Move)
+ }
+}
+
+fun main() {
+ val input = input("day02")
+ println(solve2a(input)) // 12855
+ println(solve2b(input)) // 13726
+}
A src/main/resources/advent2022/day02_input.txt => src/main/resources/advent2022/day02_input.txt +2500 -0
@@ 0,0 1,2500 @@
+A Z
+A Z
+C Y
+A X
+A X
+A Z
+C X
+A X
+C Y
+A Z
+B Y
+B Y
+C X
+C Y
+C X
+B Y
+A Y
+C Y
+B Y
+B Z
+B Y
+C X
+A Z
+C Y
+B Y
+B Y
+A Z
+B Y
+B Y
+B Y
+B Z
+B Y
+A Z
+B Y
+C Y
+B Y
+B Z
+C X
+B Z
+A X
+B Y
+B Z
+C Y
+A Z
+C Y
+A Z
+B Y
+C Y
+A Z
+A Z
+B Y
+C Y
+C X
+A Z
+B Z
+A Z
+B Y
+C X
+B Y
+B Y
+B Y
+A Y
+B Z
+C Y
+C X
+A Z
+B Y
+B Y
+B X
+A Z
+C X
+B Y
+B Y
+A Z
+A Z
+A X
+A X
+B Y
+C X
+A X
+A Z
+A Z
+B Y
+C Y
+B Z
+A X
+B Z
+A Z
+B Y
+A Z
+C Y
+A Z
+A X
+B Y
+C Y
+B Y
+A X
+B Z
+C Y
+B Y
+B Y
+A Z
+A X
+A X
+B Y
+C Y
+B X
+B Z
+C X
+B Y
+A Y
+B Y
+B Y
+B Y
+A X
+C Y
+A Z
+C Y
+C Y
+B Z
+B Y
+A Z
+A Z
+A Z
+B Y
+C Y
+B Z
+C X
+C Y
+B Z
+A X
+A Z
+C Y
+B Y
+C Y
+C Y
+C Y
+B Y
+B X
+B Y
+B Y
+C Y
+A X
+B Z
+B X
+C X
+B X
+C Y
+B Z
+B Y
+A X
+C Y
+C Y
+C X
+B Z
+B Y
+A Y
+B Z
+A Z
+B Y
+B Y
+B Z
+B Z
+C Y
+A Z
+A X
+A X
+C Y
+B Y
+A Z
+B Z
+A X
+A Z
+B Z
+C Y
+C Z
+A X
+A Y
+B Y
+C Y
+B Y
+C Y
+B Z
+B Y
+A Z
+C Y
+B Z
+B Y
+A Z
+A Y
+B Y
+B Y
+C Y
+A Z
+C Y
+B Y
+B Y
+A X
+A Z
+A Z
+B Y
+B Y
+B Z
+C Y
+C X
+B Z
+A Y
+B Z
+A X
+C X
+A Y
+B Z
+B Z
+A X
+C X
+C X
+A Z
+C Y
+A X
+A X
+C X
+A X
+B Z
+C Z
+B Z
+B Y
+B Y
+A Z
+A Z
+B Y
+A Z
+C Y
+C X
+B Y
+A X
+A X
+B Z
+C Y
+C Y
+A X
+B Z
+A X
+C X
+C X
+B Z
+C X
+B Z
+A X
+A Y
+A X
+A Z
+A X
+B Y
+C Y
+A X
+C Y
+A Z
+B Z
+A Z
+C Y
+A X
+A Z
+B Y
+A Z
+B Z
+B Z
+A Z
+B Z
+A X
+B Y
+B Z
+C X
+B Y
+B Y
+B Y
+B Y
+A X
+B Z
+B Z
+A Z
+A Z
+C Y
+B Y
+C X
+A X
+B Y
+B Y
+C X
+B Y
+A X
+C Y
+A Z
+B Y
+A Y
+B Z
+B Y
+A Z
+A X
+B Z
+C Y
+A Z
+C Y
+C X
+B Y
+B Z
+C X
+A Y
+B Z
+A Y
+B Z
+B Z
+B Y
+B Z
+C X
+B Y
+A X
+B Z
+A Z
+B Y
+A Z
+C Y
+C Y
+C X
+C X
+A X
+C X
+A X
+A X
+B Z
+B Y
+B Y
+B Y
+B Y
+C X
+C X
+A Z
+A Z
+C X
+C X
+C Y
+C Y
+C Y
+B Y
+A Z
+C Y
+B Z
+B Z
+B Y
+C X
+C X
+C Y
+C Y
+C X
+B Z
+B Z
+B Y
+C Y
+B Y
+A Z
+C Y
+A X
+B Y
+C Y
+C Y
+C Y
+B Y
+A Z
+B Y
+A X
+B Z
+C X
+A Z
+C X
+A Z
+B Z
+C Y
+C Y
+C Y
+C X
+B Z
+C X
+B Y
+B Z
+C X
+B X
+A Z
+B Z
+B Y
+C Y
+B Z
+C Y
+A X
+B Z
+C Y
+C Y
+B Z
+B Y
+C Y
+B Z
+C Y
+A Z
+C X
+C X
+C Y
+A Z
+C Z
+C Y
+B Y
+C Y
+B Y
+B Y
+B Z
+C X
+C X
+B Z
+B Z
+B Z
+A Z
+B Y
+B Y
+A X
+B Y
+C Y
+B Y
+C X
+C X
+B Y
+B Y
+A Y
+B Z
+B Y
+B Y
+C Y
+A Z
+C X
+A Y
+B Y
+B Z
+B Y
+A Y
+C Y
+A Y
+A Z
+B Y
+A Z
+C Y
+C Y
+B Y
+A Z
+B Y
+B Y
+A Z
+B Z
+B Y
+C X
+C Y
+B Z
+B Y
+B Y
+A Z
+C Z
+A Z
+A X
+C X
+B Z
+B Z
+C X
+C Y
+B Y
+B X
+A X
+C Y
+B Z
+B Y
+C X
+B Y
+A Z
+A Z
+A X
+C Y
+B Z
+B Y
+C X
+C X
+B Y
+A Z
+C Z
+B Y
+A Z
+C Y
+B Y
+C X
+A Z
+A Z
+A X
+C X
+A X
+C X
+C X
+A Z
+C X
+B Y
+A Z
+B Y
+B Y
+C Y
+C X
+A Z
+B Z
+B Y
+B Y
+A Y
+A Z
+B Y
+A Z
+B Z
+B Y
+C Y
+A Z
+B Y
+B Y
+B Y
+C Y
+C X
+A X
+A Z
+B Z
+B Y
+C Y
+B Z
+C X
+B Y
+C X
+A Z
+B Y
+B X
+B Y
+A Y
+A X
+A X
+C X
+C X
+B Y
+B X
+C Y
+A Z
+B Z
+C Y
+C Y
+B Y
+A Z
+C X
+A Z
+C Y
+B Z
+B X
+C X
+B X
+C X
+B Y
+C Y
+C Y
+B Z
+B Y
+B Z
+B Z
+A Z
+B Y
+A Y
+B Z
+C X
+C Y
+C X
+A Z
+B Z
+C Y
+B Y
+B Z
+C X
+B Y
+A Y
+A X
+A X
+C Y
+B X
+C X
+B Z
+A Z
+A Y
+B Z
+C X
+C X
+B Y
+A X
+B Z
+C Y
+B X
+B Z
+C Y
+B Y
+C Y
+B Z
+B Y
+B Z
+B Y
+C X
+B Y
+C X
+B Z
+B Z
+C X
+B Z
+A X
+B X
+B Y
+A X
+B Z
+C X
+B Z
+B Y
+B Y
+C X
+A Y
+B Z
+B Z
+B Y
+B Y
+B Z
+C Y
+B Z
+C Y
+C X
+A Z
+C X
+A X
+C Y
+B Y
+C X
+A Z
+B Y
+A Z
+A Z
+B X
+C Y
+B Z
+C Y
+B Y
+B Z
+A X
+B Z
+A X
+C X
+B Z
+B Y
+C X
+C Y
+C Y
+B X
+C X
+C X
+B Z
+C Y
+B Z
+B Y
+B Z
+C Y
+B Y
+C Y
+C X
+B Y
+B Y
+B Z
+A Z
+C X
+A Z
+B Y
+B Z
+A Z
+C Y
+A Z
+B Y
+A Z
+A Z
+C Y
+A Y
+B Y
+A Y
+C X
+B Y
+C X
+B Z
+C Y
+A Z
+C X
+C X
+B Z
+C Z
+C Z
+B Y
+B Y
+C Y
+C Y
+A Z
+C Y
+C Y
+C Y
+A Z
+B Z
+C Y
+B Y
+C Y
+C X
+C X
+B X
+B Y
+C Y
+A Y
+B Y
+B Z
+B Y
+A Y
+B Y
+B X
+C X
+C Z
+C Y
+C Y
+C Y
+B Z
+B X
+C Y
+B Z
+C X
+C Y
+A Z
+A Y
+B Y
+C X
+A Z
+B Y
+C Y
+B Z
+A Z
+A Z
+B Y
+A Z
+C Y
+A X
+C Y
+B Z
+B Z
+B Z
+B Y
+B Y
+A Z
+A Z
+B Y
+C X
+A Z
+C Y
+B Y
+A Z
+C Y
+A Z
+B Z
+B Z
+A Y
+B Y
+B Y
+B Z
+C Z
+B Y
+B X
+B Y
+C X
+B Z
+C Y
+B Z
+A Y
+B Z
+A Z
+A X
+A Z
+C X
+C X
+B Y
+C X
+C Y
+A Z
+B Z
+B Y
+A Z
+B Z
+B Z
+B Z
+C Y
+B Y
+A X
+C Y
+C Y
+C X
+A X
+C Y
+B Y
+C X
+B Z
+A Y
+B X
+B Y
+A Z
+B Y
+B Y
+B Y
+B Z
+C X
+B Z
+B Z
+C X
+B Y
+A Y
+B Y
+C Y
+A Z
+C Z
+B Y
+B Z
+B Z
+C Y
+A Z
+C Y
+C X
+C Y
+B Y
+A X
+A X
+B Z
+C Y
+B Z
+B Y
+A Y
+C X
+A Z
+B Z
+C Y
+C Z
+C X
+B Y
+C X
+A Y
+A Y
+B Z
+C X
+B X
+C X
+B Y
+B Z
+B Z
+B Y
+C Y
+B Y
+B Y
+A Z
+B Z
+B Y
+C X
+B Z
+B Y
+B Y
+C Y
+C Z
+C X
+B Y
+A X
+C Y
+C X
+B Z
+C Y
+A X
+B Y
+A Y
+B Y
+C X
+C Y
+C X
+A X
+B Z
+C X
+B Y
+A Z
+C X
+B Y
+A Z
+B Y
+B Y
+B Y
+A Z
+A X
+C X
+C Y
+C Y
+B Y
+B Y
+B Z
+A Y
+C X
+C X
+B Y
+B Y
+B Z
+A X
+C X
+C X
+B X
+A X
+B Z
+B Y
+C X
+A X
+B Y
+C Y
+A X
+B Y
+C X
+B Z
+C Z
+B X
+C Y
+B Y
+C Y
+A Z
+C Y
+B Z
+C X
+B Z
+C X
+C Y
+C X
+C Y
+C Z
+C X
+C X
+B Y
+C Y
+C X
+C X
+B Z
+B Z
+A X
+C Y
+C Z
+B Y
+C Z
+C Y
+C X
+C X
+B Y
+C Y
+A Y
+B Y
+A Y
+B Y
+B Y
+B Y
+C Y
+C Z
+B Y
+C X
+C X
+B Z
+B Y
+B Z
+C Y
+B Z
+C X
+B Z
+B Y
+B Y
+A Z
+A X
+B X
+A X
+C X
+C Y
+B Y
+A X
+B Z
+B Y
+B Y
+A X
+C X
+C X
+B Y
+B Y
+C Y
+C Y
+B Z
+B Y
+B Y
+B Y
+C Y
+A X
+B Y
+C Y
+B Z
+B Y
+B Y
+B Z
+B Y
+B Y
+B Z
+B Y
+B Y
+C Y
+A Z
+B Z
+A Y
+B Y
+C Y
+B Z
+B Y
+B Y
+C X
+A X
+C Z
+C X
+B Y
+B Z
+C Y
+C X
+B Z
+A Z
+A Z
+C Y
+A Z
+B Y
+B Y
+B Z
+B Y
+C Y
+B Z
+C Y
+B Z
+B Z
+B Y
+C X
+B Y
+B Z
+A X
+C X
+C X
+B Z
+B Z
+C X
+B Y
+A Z
+B Y
+B Z
+C Y
+B Y
+A Z
+B Z
+B Y
+B Y
+B Y
+C X
+C Y
+A Z
+B Y
+B Y
+A Z
+A Z
+A Z
+A X
+B X
+A Z
+C Y
+C X
+A X
+B Z
+A X
+C X
+B Z
+B Y
+B Y
+C X
+A Z
+C Y
+C X
+A Y
+C X
+A Z
+B Z
+B Z
+B Y
+C Y
+B Z
+A Z
+A Z
+C Y
+B Y
+B Z
+A Z
+A Z
+B Z
+B Y
+A Z
+C Y
+A Z
+A Z
+B Y
+B Z
+B Z
+A X
+A X
+B Y
+B Z
+B Z
+C X
+B Z
+C Z
+B Y
+B Y
+B Y
+B Z
+A X
+A Z
+B Y
+A X
+B Y
+B Y
+C X
+C X
+C Y
+C Y
+A Z
+A X
+B Y
+A Z
+B Z
+B Y
+C X
+B Y
+B X
+C X
+A X
+A Z
+C Y
+C X
+C Y
+B Y
+B Y
+A X
+A Y
+B Y
+A Y
+C Y
+C X
+B Y
+B Y
+B Z
+C X
+C X
+B Y
+C X
+B Z
+C Y
+A X
+A Z
+A Z
+B Y
+A Y
+C Y
+C X
+C Y
+C Y
+B Y
+B Y
+A Z
+C X
+A X
+B Y
+B Y
+B Y
+B Z
+A Z
+B Y
+B Y
+A Z
+B Y
+A Z
+C X
+B Z
+C Y
+B Y
+B Y
+A X
+B Y
+A X
+B Y
+B Z
+C X
+B Z
+B Y
+C X
+C Y
+C Y
+A X
+A X
+B Z
+B Z
+B Y
+C X
+A Z
+C Y
+C Y
+C Y
+B Z
+B Z
+B Y
+A Z
+C Y
+A X
+A Z
+C Y
+B Z
+B Y
+B Y
+A Z
+B Y
+A Z
+C X
+A X
+B Z
+B Y
+B Y
+B Z
+A Z
+C X
+B Y
+C X
+B Z
+C X
+A Z
+B Y
+A Z
+A Z
+B Y
+C Y
+C X
+C Y
+A X
+C Y
+B Y
+B Z
+C X
+C Y
+A X
+B Z
+B Y
+C Y
+A X
+B Z
+A Y
+B Z
+B Y
+B Z
+A X
+A Z
+A X
+B Z
+C Y
+B Y
+A Y
+B Z
+A Z
+C Y
+C X
+B Z
+B Y
+C Y
+B Z
+C X
+C Y
+A X
+B Z
+B Z
+B Z
+B Z
+B Y
+C X
+B Y
+C X
+A Z
+A Z
+C Y
+A Y
+B Y
+C X
+A Z
+B Z
+C X
+C X
+A X
+B Y
+C X
+A Z
+B Y
+B Y
+B Y
+B Y
+C X
+C Y
+C Y
+B Y
+A Z
+B Y
+B Z
+B Z
+B Y
+A X
+B Z
+B Z
+C X
+C X
+C Y
+B Y
+C Y
+B Y
+B Y
+B Z
+B X
+C X
+C Y
+A Z
+B Z
+B Y
+A X
+B Z
+A Z
+B Z
+B Y
+B Y
+A Z
+C Y
+B Y
+C Y
+B Z
+B Y
+C X
+B Z
+B Z
+C Y
+C Y
+B Y
+C Y
+C X
+B X
+B Y
+C Y
+B Y
+B X
+C X
+B Y
+A Y
+A Z
+A Y
+B Z
+A Z
+A Z
+A Z
+B Y
+A Z
+A Z
+C Y
+B Z
+A Z
+A X
+B Y
+C Y
+C X
+C X
+A Z
+B Z
+B X
+B Z
+C X
+B Z
+C Y
+C X
+C Z
+C X
+B Z
+B Z
+B Z
+B Z
+A Z
+A Z
+C Y
+C Z
+C Y
+A X
+B Y
+B Y
+B Y
+A Z
+A Z
+B Z
+C Y
+C X
+B Y
+C X
+B Z
+B Y
+B Y
+B Y
+B Y
+B Y
+B X
+A Z
+A X
+A Y
+C X
+B Z
+B Y
+B Z
+C Y
+A Z
+B Z
+B Z
+C Y
+B Z
+B Z
+C X
+B Y
+C X
+B Z
+C X
+C Y
+C Y
+C X
+A Z
+A Z
+B Z
+B Y
+C X
+C X
+A Y
+A Z
+C X
+A X
+A X
+A Z
+C Y
+B Z
+B Y
+A Z
+B Y
+B Y
+B Z
+B Y
+C Y
+B Z
+A X
+B Y
+A X
+B Z
+A Z
+C X
+A X
+C Z
+A Z
+C Y
+A X
+B Y
+B Z
+B Z
+A X
+C Y
+A Z
+C X
+A Y
+C X
+B Y
+B Z
+A X
+B Y
+B Y
+A Y
+A X
+B Y
+C X
+A Y
+B Y
+B Y
+C Y
+A Z
+B Z
+A Z
+B Y
+A Z
+C Y
+C X
+B Z
+B Y
+B Z
+A X
+C Y
+C Z
+A X
+A X
+C Y
+C Y
+A Z
+C Y
+C X
+A Y
+C Y
+B Y
+B X
+B Y
+A Z
+C X
+C X
+B Y
+A Z
+A X
+B Z
+C X
+B Y
+B Y
+C Z
+A X
+A X
+B Z
+C X
+C Y
+B Z
+C Z
+B Y
+A Y
+A Z
+A Y
+C Y
+C Y
+C Y
+B Z
+B Z
+B Y
+B Y
+B Y
+B Z
+B Z
+C X
+A X
+C X
+B Y
+B Y
+B Y
+C Y
+B Y
+B Y
+C X
+A Y
+B Z
+C X
+B Z
+B Y
+A X
+C Y
+B Y
+C Y
+B Z
+B Y
+C Y
+C Z
+C Y
+A Y
+B Z
+A X
+B Z
+A Z
+A Z
+A Z
+B Y
+A X
+C Y
+B Y
+B Y
+B Y
+C X
+B Y
+A X
+C X
+B Y
+C X
+A Z
+B Z
+B Z
+B Y
+C Y
+B Y
+A Z
+B Y
+C Y
+B Z
+C X
+B Y
+B Y
+B Z
+C X
+C Y
+B Z
+B Z
+C Y
+C X
+C X
+B Y
+B Z
+A X
+C X
+A Z
+A Y
+B Z
+B Y
+B Y
+C Y
+C X
+B Y
+B Z
+C Y
+C Y
+C X
+C X
+B Z
+A Z
+B Z
+B Y
+C X
+A X
+C X
+A Z
+C X
+B Z
+C Z
+B Y
+C Y
+B Y
+C Z
+A Z
+B Y
+C Z
+A X
+B Z
+B X
+C Y
+C X
+B Z
+A Z
+B Y
+A X
+B X
+A Z
+C Y
+A Y
+A Z
+A X
+C X
+A Y
+C X
+B X
+B Y
+C Z
+A Z
+C X
+B Y
+C X
+C X
+B X
+B Y
+A Y
+B Y
+B Y
+A Z
+B Y
+C Y
+C X
+B Y
+B Y
+B Z
+C Y
+B Z
+A Z
+A Z
+A X
+B Y
+C Y
+B Y
+C Y
+C Y
+B Z
+A X
+C Y
+B Z
+C Y
+A Y
+B Y
+B Y
+B Y
+C Y
+A Z
+A Z
+B Z
+A Z
+C Y
+C Y
+B Y
+C X
+B Y
+A Z
+B Z
+A X
+B Z
+B Y
+B Z
+A X
+A X
+C Y
+A Z
+B Z
+C Y
+B Z
+C X
+B Z
+A X
+B Z
+B Z
+C Y
+B Y
+B Y
+C Y
+B Y
+A X
+B Y
+C Y
+A Z
+B Y
+C X
+A Z
+B Z
+A Z
+B Z
+C Y
+B Y
+B Y
+B Y
+C Y
+B Y
+B Y
+A Z
+B Y
+B Z
+C X
+B Z
+C X
+C X
+A X
+B Z
+C Z
+B Z
+A Y
+C X
+C X
+A Z
+A X
+A Y
+A X
+B Y
+B Y
+C X
+C Z
+A Y
+C Y
+B Y
+B Y
+C X
+C X
+B Z
+B Z
+B Y
+C Y
+A Z
+B Y
+C X
+C X
+A X
+A X
+A Y
+B Y
+C X
+A Z
+C Z
+C Y
+C Y
+C Y
+B Y
+C Y
+A Y
+A X
+B X
+B Y
+B Y
+B Y
+B Y
+A Z
+B Z
+B Y
+B Y
+C Y
+A X
+A Z
+A Z
+A Z
+B Y
+A X
+C Y
+C Y
+B Y
+B Y
+C Y
+A Z
+C Y
+A X
+C X
+B Z
+B Y
+C X
+B Y
+A X
+A Z
+C X
+C Y
+C Y
+C X
+C X
+B Z
+B Y
+A Z
+B Y
+B Z
+B Z
+B Y
+B Y
+A X
+C X
+C Y
+C X
+A Z
+B Z
+B Y
+B Y
+C Y
+A X
+A X
+C Y
+C X
+B Z
+A Y
+B Y
+B Z
+B Y
+A X
+C Y
+B Y
+A X
+C X
+B Y
+B Y
+A Z
+A Z
+A Z
+B Y
+B Y
+C X
+B Z
+A Z
+B Z
+A Z
+C X
+B Y
+C X
+B Y
+C X
+C X
+B Y
+B Y
+A Y
+C Y
+C Y
+B Z
+C X
+B Y
+B Y
+A X
+A Z
+B Y
+C Y
+B Y
+C Y
+A X
+C Y
+C Y
+B Z
+C Y
+A X
+C X
+A Z
+C Y
+A Z
+C X
+B Z
+B Y
+B Z
+C Y
+B X
+A Z
+C Y
+C X
+B Y
+C X
+B Z
+A X
+A Z
+C X
+B Z
+C X
+B Y
+A Z
+B Y
+C Y
+B Y
+C X
+C Y
+B X
+B X
+B Y
+B Y
+B Y
+B Z
+B Y
+C X
+A Z
+A Z
+C X
+B Y
+B Y
+B Y
+A Y
+C Y
+B Z
+C X
+C Y
+A X
+C Y
+B Z
+C Y
+B Y
+B Y
+B Z
+A Z
+A Z
+B Y
+A Y
+B Z
+A X
+C Y
+B Y
+A X
+C X
+B Y
+C Y
+B Z
+B Y
+C X
+A Z
+C Y
+A Z
+B Y
+C Y
+B Y
+C X
+A Z
+C Y
+C Y
+A Y
+B Z
+C X
+C X
+A Z
+C Z
+C X
+B Y
+C X
+A X
+C Y
+C X
+C X
+A X
+A Y
+A X
+C X
+A X
+A X
+B X
+B Y
+C Y
+A X
+B Z
+C X
+C Y
+B Y
+B Z
+C Y
+B Z
+B Y
+C X
+A X
+B Y
+B Z
+C Y
+A Z
+C X
+C Z
+A X
+A Z
+A Z
+B Z
+A Z
+B Y
+C Y
+C Y
+B Z
+C Y
+C Y
+C Y
+C X
+A X
+B Y
+A X
+C X
+C Z
+B Y
+A Z
+B Y
+C Y
+C Y
+B Z
+C Y
+C X
+B Z
+C Y
+B Y
+B Z
+A Z
+B Z
+B Z
+B Y
+A Z
+A Y
+C X
+B Y
+A Z
+C Y
+B Z
+A Z
+B Y
+B Y
+C Y
+B Y
+B Y
+B Y
+C Y
+B X
+B Y
+A X
+A X
+B Z
+A X
+C Y
+A Z
+B Y
+B Y
+B Z
+A Z
+C Y
+C X
+B Y
+A Z
+A X
+B Y
+C X
+B Z
+A X
+C X
+B Z
+B Z
+B Z
+B X
+A X
+C Z
+C X
+C Z
+B X
+A Z
+C X
+B Y
+C X
+C Y
+C Y
+B Y
+B Z
+B Y
+C Y
+C X
+A Z
+C Y
+C Y
+C Y
+B Z
+A Z
+A Y
+C X
+C Y
+B Y
+C Y
+C Y
+B Z
+C Y
+B Y
+B Y
+C X
+B Z
+B Y
+A X
+B Y
+A Z
+B Y
+C X
+B Y
+C X
+B Y
+A Z
+C X
+B Y
+C X
+B Z
+C X
+B Y
+A X
+C X
+C X
+A X
+C Y
+A Z
+C Y
+B Z
+A Z
+A X
+C X
+A X
+C Y
+A X
+A X
+B Z
+C X
+C Y
+A Y
+B Z
+B Y
+C Y
+B Y
+A Y
+C Y
+C Y
+B Y
+B Y
+B Z
+B Z
+C X
+B Y
+C X
+A X
+A Z
+C Y
+B Z
+C Y
+B Y
+C X
+C X
+A Z
+B Z
+A Z
+C X
+B Y
+B Z
+C Y
+B Y
+A X
+A X
+B Y
+B Y
+B Y
+A X
+B Y
+B Z
+A Z
+A X
+A X
+B Z
+B Y
+A X
+B Z
+A Z
+B Y
+B Z
+B Z
+B Z
+C Y
+C Y
+A Z
+B Y
+C Y
+A Z
+C X
+B Z
+A X
+B X
+B Y
+B Y
+C Y
+C Y
+B Z
+B Y
+A Z
+B Y
+A X
+B Z
+B Y
+C Z
+B Y
+B Y
+C Y
+B Y
+B Y
+A Y
+C Y
+A Z
+A Y
+B Z
+C X
+B Z
+A X
+A Z
+A X
+C Y
+A Z
+B Y
+B Z
+B Z
+C Y
+C Y
+C Y
+B X
+B Y
+B Z
+A X
+B Y
+C Y
+A X
+A X
+B Y
+C Y
+A Y
+B Z
+B Z
+B Z
+A Z
+B Y
+C X
+A Z
+C Y
+C Y
+B Y
+C Y
+C Y
+C Y
+C Y
+B Y
+B Z
+A Z
+B X
+C Y
+C X
+C X
+C Y
+A Z
+C Y
+C X
+B Z
+B Y
+A Y
+C Z
+B Y
+B Y
+B Y
+B Y
+C Y
+B Y
+C Y
+A Z
+B Y
+C X
+C Y
+B Z
+A X
+C Y
+B Y
+B Y
+B Y
+A Z
+A X
+A X
+C X
+C Z
+B Z
+A X
+A Z
+A X
+A Y
+C Y
+C Y
+A Z
+C X
+C X
+B X
+B Y
+A X
+A Z
+A X
+C Y
+B X
+A X
+A X
+C X
+A Y
+B Z
+A Z
+B Y
+A X
+A Z
+B Y
+A Z
+C Y
+B Z
+A Z
+C Y
+C X
+B Z
+C Y
+B Y
+C X
+A Z
+B Z
+A X
+A X
+C Z
+A X
+C X
+B Y
+B Z
+A X
+A X
+C Y
+A Z
+C Y
+C X
+C Y
+B Z
+B Y
+C X
+C X
+B Z
+B Z
+C Y
+A X
+B X
+C X
+C Y
+A X
+A Z
+B Y
+C X
+A Y
+C X
+C Y
+A Z
+B Y
+B Z
+B Y
+C X
+C Y
+C X
+C X
+B Y
+C X
+C X
+B Y
+C Z
+C Y
+C Y
+B Z
+B Z
+B Y
+A X
+B Y
+A Z
+A Y
+B Y
+C Y
+B Z
+B Z
+A X
+B Y
+A X
+B Y
+A Z
+B Y
+C X
+A Z
+B Z
+C Y
+B Y
+A Y
+A X
+C X
+A X
+B Y
+B Z
+B Z
+C Y
+A X
+B Y
+B Z
+B Y
+B X
+C Z
+B Z
+C X
+C Y
+C X
+B Z
+C Y
+A X
+A X
+C X
+B Y
+B X
+B Y
+A X
+C Y
+A Z
+B Y
+B Y
+B Y
+B Z
+B Y
+C X
+A Z
+C Y
+A Z
+B Z
+C X
+C Y
+C X
+C Y
+A Y
+B Z
+B Y
+B Z
+C Y
+A X
+B Y
+A X
+C X
+B X
+C X
+A Z
+B Z
+B Z
+C Y
+B Z
A src/test/advent2022/Day02KtTest.kt => src/test/advent2022/Day02KtTest.kt +22 -0
@@ 0,0 1,22 @@
+package advent2022
+
+import org.junit.jupiter.api.Test
+import kotlin.test.assertEquals
+
+internal class Day02KtTest {
+ val exampleStrategyGuide = listOf(
+ "A Y",
+ "B X",
+ "C Z"
+ )
+
+ @Test
+ fun solve2a() {
+ assertEquals(15, solve2a(exampleStrategyGuide))
+ }
+
+ @Test
+ fun solve2b() {
+ assertEquals(12, solve2b(exampleStrategyGuide))
+ }
+}