Add day 1 in kotlin

This commit is contained in:
kageru 2019-12-01 18:36:29 +01:00
parent 4df684d650
commit 99304170ae
Signed by: kageru
GPG Key ID: 8282A2BEA4ADA3D2

23
2019/1/day1.kt Normal file
View File

@ -0,0 +1,23 @@
package moe.kageru.aoc
fun main() {
val input = generateSequence(::readLine)
.map { it.toLong() }
.toList();
println("Part 1: ${part1(input)}")
println("Part 2: ${part2(input)}")
}
fun part1(numbers: List<Long>): Long = numbers.map(::cost).sum()
fun part2(numbers: List<Long>): Long = numbers.map { costRec(it, 0) }.sum()
fun cost(mass: Long): Long = (mass / 3) - 2
tailrec fun costRec(mass: Long, acc: Long): Long {
val cost = cost(mass)
return when {
cost <= 0 -> acc
else -> costRec(cost, acc + cost)
}
}