From c9395e793c865256121b6221ee1affcea6200c4c Mon Sep 17 00:00:00 2001 From: Natsu Kagami Date: Sat, 2 Dec 2023 15:39:06 +0100 Subject: [PATCH] No case in regex! --- Day2.scala | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Day2.scala b/Day2.scala index c886123..d65ba6a 100644 --- a/Day2.scala +++ b/Day2.scala @@ -14,12 +14,11 @@ case class Game(id: Int, hands: List[Hand]): object Parser extends RegexParsers: val num = """(0|[1-9]\d*)""".r ^^ { _.toInt } val update = - num ~ """(red|green|blue)""".r ^^ { case (num ~ color) => - color match - case "red" => (h: Hand) => h.copy(red = num) - case "green" => (h: Hand) => h.copy(green = num) - case "blue" => (h: Hand) => h.copy(blue = num) - } + num ~ ( + "red" ^^ (_ => (num: Int) => (h: Hand) => h.copy(red = num)) | + "green" ^^ (_ => (num: Int) => (h: Hand) => h.copy(green = num)) | + "blue" ^^ (_ => (num: Int) => (h: Hand) => h.copy(blue = num)) + ) ^^ { case (num ~ f) => f(num) } val hand = rep1sep(update, ",").map(_.foldRight(Hand(0, 0, 0))(_(_))) val game = "Game" ~ num ~ ":" ~ repsep(hand, ";") ^^ {