Coverage Summary for Class: Day06p2Kt (day06p2)
Class |
Method, %
|
Line, %
|
Day06p2Kt |
100%
(2/2)
|
100%
(6/6)
|
Day06p2Kt$toSingleNumber$1 |
100%
(1/1)
|
100%
(1/1)
|
Total |
100%
(3/3)
|
100%
(7/7)
|
package day06p2
fun String.toRecord(): Record {
val lines = lines()
require(lines.size == 2) { lines.size }
return Record(
raceDuration = lines[0].toSingleNumber(),
recordDistance = lines[1].toSingleNumber()
)
}
fun String.toSingleNumber(): Long =
this.asSequence().filter { it.isDigit() }.joinToString("").toLong()
data class Record(val raceDuration: Long, val recordDistance: Long) {
fun calcDistance(buttonHoldTime: Long): Long = buttonHoldTime * (raceDuration - buttonHoldTime)
fun calcNumberOfWaysToBeatRecord(): Int = (0..raceDuration).count { calcDistance(it) > recordDistance }
}