From c9ca250a9ab66885abfa517b8592fe0417f52375 Mon Sep 17 00:00:00 2001 From: WanCW Date: Tue, 3 Dec 2024 14:09:56 +0800 Subject: [PATCH] complete day 3 --- 03-a.kts | 13 +++++++++++++ 03-b.kts | 21 +++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 03-a.kts create mode 100644 03-b.kts diff --git a/03-a.kts b/03-a.kts new file mode 100644 index 0000000..8451fe7 --- /dev/null +++ b/03-a.kts @@ -0,0 +1,13 @@ +import java.util.Scanner +import java.util.regex.Pattern + +val pattern: Pattern = Pattern.compile("mul\\([0-9]+,[0-9]+\\)") +val scanner = Scanner(System.`in`) + +var sum = 0 +while (true) { + val next: String = scanner.findWithinHorizon(pattern, 0) ?: break + + sum += next.replace("mul(", "").replace(")", "").split(",").map { it.toInt() }.let { (a, b) -> a*b } +} +println(sum) \ No newline at end of file diff --git a/03-b.kts b/03-b.kts new file mode 100644 index 0000000..ff03734 --- /dev/null +++ b/03-b.kts @@ -0,0 +1,21 @@ +import java.util.Scanner +import java.util.regex.Pattern + +val pattern: Pattern = Pattern.compile("mul\\([0-9]+,[0-9]+\\)|do\\(\\)|don't\\(\\)") + +val scanner = Scanner(System.`in`) + +var sum = 0 +var enabled = true +while (true) { + val next: String = scanner.findWithinHorizon(pattern, 0) ?: break + + when (next) { + "do()" -> enabled = true + "don't()" -> enabled = false + else -> if (enabled) { + sum += next.replace("mul(", "").replace(")", "").split(",").map { it.toInt() }.let { (a, b) -> a*b } + } + } +} +println(sum) \ No newline at end of file