diff options
Diffstat (limited to 'src/Day02.kt')
-rw-r--r-- | src/Day02.kt | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/Day02.kt b/src/Day02.kt index dd3992b..1b4bfad 100644 --- a/src/Day02.kt +++ b/src/Day02.kt @@ -1,14 +1,20 @@ fun main() { + fun dispatchCommands(commands: List<String>, action: (command: String, argument: Int) -> Unit) { + for (line in commands) { + val parts = line.split(" ") + val command = parts[0] + val argument = parts[1].toInt() + + action(command, argument) + } + } + fun part1(input: List<String>): Int { var horizontal = 0 var depth = 0 - for (line in input) { - val parts = line.split(" ") - val commandName = parts[0] - val argument = parts[1].toInt() - - when (commandName) { + dispatchCommands(input) { command, argument -> + when (command) { "forward" -> horizontal += argument "down" -> depth += argument "up" -> depth -= argument @@ -23,12 +29,8 @@ fun main() { var depth = 0 var aim = 0 - for (line in input) { - val parts = line.split(" ") - val commandName = parts[0] - val argument = parts[1].toInt() - - when (commandName) { + dispatchCommands(input) { command, argument -> + when (command) { "forward" -> { horizontal += argument depth += aim * argument @@ -41,11 +43,11 @@ fun main() { return horizontal * depth } - val testInput = readInput("Day02_test") + val testInput = readInputAsLines("Day02_test") check(part1(testInput) == 150) check(part2(testInput) == 900) - val input = readInput("Day02") + val input = readInputAsLines("Day02") println(part1(input)) println(part2(input)) } |