aboutsummaryrefslogtreecommitdiff
path: root/src/Day02.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/Day02.kt')
-rw-r--r--src/Day02.kt30
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))
}