From 10e59bd5ba9f0c2c7ab4129a024720870848433c Mon Sep 17 00:00:00 2001 From: WanCW Date: Mon, 2 Dec 2024 14:53:16 +0800 Subject: [PATCH] complete day 2 --- 02-a.kts | 33 +++++++++++++++++++++++++++++++++ 02-b.kts | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 02-a.kts create mode 100644 02-b.kts diff --git a/02-a.kts b/02-a.kts new file mode 100644 index 0000000..cabee17 --- /dev/null +++ b/02-a.kts @@ -0,0 +1,33 @@ +import java.util.Scanner + +val isSafelyIncreasing = { offset: Int -> offset in 1..3 } + +val isSafelyDecreasing = { offset: Int -> offset in (-3)..(-1) } + +fun isSafeRoute(levels: List): Boolean { + val levelOffsets = levels.foldIndexed(ArrayList()) { index, acc, i -> + if (index > 0) { + acc.add(i - levels[index - 1]) + } + acc + } + + return levelOffsets.all(isSafelyIncreasing) || levelOffsets.all(isSafelyDecreasing) +} + +val scanner = Scanner(System.`in`) + +var safeCount = 0 +while (scanner.hasNextInt()) { + val line = scanner.nextLine() + + val numbers = line.split(" ").map { it.toInt() } + + if (isSafeRoute(numbers)) { + safeCount++ + } +} + +println(safeCount) + + diff --git a/02-b.kts b/02-b.kts new file mode 100644 index 0000000..cc6b2dd --- /dev/null +++ b/02-b.kts @@ -0,0 +1,49 @@ +import java.util.Scanner + +val isSafelyIncreasing = { offset: Int -> offset in 1..3 } + +val isSafelyDecreasing = { offset: Int -> offset in (-3)..(-1) } + +fun isSafeRoute(levels: List): Boolean { + val levelOffsets = levels.foldIndexed(ArrayList()) { index, acc, i -> + if (index > 0) { + acc.add(i - levels[index - 1]) + } + acc + } + + return (levelOffsets.all(isSafelyIncreasing) || levelOffsets.all(isSafelyDecreasing)) + +} + +fun isSafeRouteTolerated(levels: List): Boolean { + if (isSafeRoute(levels)) { + return true + } + + for (skipPos in levels.indices) { + val skippedList = levels.slice((0)..