From ddf95b2947e6cd49837444bc0517a9eb6bb91741 Mon Sep 17 00:00:00 2001 From: WanCW Date: Mon, 2 Dec 2024 11:41:49 +0800 Subject: [PATCH] complete day 1 --- src/01-a.kts | 22 ++++++++++++++++++++++ src/01-b.kts | 24 ++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/01-a.kts create mode 100644 src/01-b.kts diff --git a/src/01-a.kts b/src/01-a.kts new file mode 100644 index 0000000..1d9fbe7 --- /dev/null +++ b/src/01-a.kts @@ -0,0 +1,22 @@ +import java.util.Scanner +import kotlin.math.abs + +val scanner = Scanner(System.`in`) + +val listLeft = ArrayList() +val listRight = ArrayList() + +while (scanner.hasNextInt()) { + val num1 = scanner.nextInt() + listLeft.add(num1) + + val num2 = scanner.nextInt() + listRight.add(num2) +} + +val pairs = listLeft.sorted() zip listRight.sorted() + +val result = pairs.fold(0) { acc, (l, r) -> acc + abs(l - r) } + +println(result) + diff --git a/src/01-b.kts b/src/01-b.kts new file mode 100644 index 0000000..ec62773 --- /dev/null +++ b/src/01-b.kts @@ -0,0 +1,24 @@ +import java.util.Scanner + +val scanner = Scanner(System.`in`) + +val listLeft = ArrayList() +val listRight = ArrayList() + +while (scanner.hasNextInt()) { + val num1 = scanner.nextInt() + listLeft.add(num1) + + val num2 = scanner.nextInt() + listRight.add(num2) +} + + +val rightFrequencies = listRight.groupingBy { it }.eachCount() + +val sum = listLeft.fold(0, { sum, left -> + sum + left * (rightFrequencies[left] ?: 0) +}) + +println(sum) +