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 }
 }