From 4bdfc14dcd27c4ef398ac669eac0f40f13ab8aba Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 3 Dec 2024 16:47:09 +0100 Subject: [PATCH] Use match gropus & interpolation --- aoc/src/dev/ctsk/aoc/days/Day03.scala | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/aoc/src/dev/ctsk/aoc/days/Day03.scala b/aoc/src/dev/ctsk/aoc/days/Day03.scala index 64a0362..27d81f9 100644 --- a/aoc/src/dev/ctsk/aoc/days/Day03.scala +++ b/aoc/src/dev/ctsk/aoc/days/Day03.scala @@ -3,23 +3,24 @@ package dev.ctsk.aoc.days import dev.ctsk.aoc._ object Day03 extends Solver(3): - def mul(segment: String): Int = - segment.substring(4, segment.length - 1).split(",").map(_.toInt).product - def part1(input: String): Int = - val pattern = """mul\(\d{1,3},\d{1,3}\)""".r - pattern.findAllIn(input).toList.map(mul).sum + val pattern = """mul\((\d{1,3}),(\d{1,3})\)""".r + pattern + .findAllIn(input) + .matchData + .map(m => m.group(1).toInt * m.group(2).toInt) + .sum def part2(line: String): Int = val pattern = """(mul\(\d{1,3},\d{1,3}\))|do\(\)|don't\(\)""".r; - pattern .findAllIn(line) .foldLeft((true, 0)) { case ((enabled, sum), curr) => curr match case "do()" => (true, sum) case "don't()" => (false, sum) - case _ => (enabled, if enabled then sum + mul(curr) else sum) + case s"mul($a,$b)" => + (enabled, if enabled then sum + a.toInt * b.toInt else sum) } ._2