|
|
@ -11,6 +11,16 @@ object Day2 { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
data class Game(val id: Int, val hands: List<Hand>) { |
|
|
data class Game(val id: Int, val hands: List<Hand>) { |
|
|
|
|
|
fun isCompatibleWith(hand: Hand) = |
|
|
|
|
|
hand.fitsIn( |
|
|
|
|
|
hands.fold(Hand(0, 0, 0)) { currentMax: Hand, next: Hand -> |
|
|
|
|
|
Hand( |
|
|
|
|
|
maxOf(currentMax.red, next.red), |
|
|
|
|
|
maxOf(currentMax.green, next.green), |
|
|
|
|
|
maxOf(currentMax.blue, next.blue) |
|
|
|
|
|
) |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
companion object { |
|
|
companion object { |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
@ -30,6 +40,8 @@ data class Game(val id: Int, val hands: List) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
data class Hand(val red: Int, val green: Int, val blue: Int) { |
|
|
data class Hand(val red: Int, val green: Int, val blue: Int) { |
|
|
|
|
|
fun fitsIn(other: Hand) = red >= other.red && green >= other.green && blue >= other.blue |
|
|
|
|
|
|
|
|
companion object { |
|
|
companion object { |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
|