~macaptain/advent-of-code

da2ffcd8db4c5bcffcd206a45f7e5c3e56064ed3 — Michael Captain 2 years ago 413ca2d
Complete 2022 Day 2
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))
    }
}