34 lines
721 B
Text
34 lines
721 B
Text
|
import java.util.Scanner
|
||
|
|
||
|
val isSafelyIncreasing = { offset: Int -> offset in 1..3 }
|
||
|
|
||
|
val isSafelyDecreasing = { offset: Int -> offset in (-3)..(-1) }
|
||
|
|
||
|
fun isSafeRoute(levels: List<Int>): Boolean {
|
||
|
val levelOffsets = levels.foldIndexed(ArrayList<Int>()) { index, acc, i ->
|
||
|
if (index > 0) {
|
||
|
acc.add(i - levels[index - 1])
|
||
|
}
|
||
|
acc
|
||
|
}
|
||
|
|
||
|
return levelOffsets.all(isSafelyIncreasing) || levelOffsets.all(isSafelyDecreasing)
|
||
|
}
|
||
|
|
||
|
val scanner = Scanner(System.`in`)
|
||
|
|
||
|
var safeCount = 0
|
||
|
while (scanner.hasNextInt()) {
|
||
|
val line = scanner.nextLine()
|
||
|
|
||
|
val numbers = line.split(" ").map { it.toInt() }
|
||
|
|
||
|
if (isSafeRoute(numbers)) {
|
||
|
safeCount++
|
||
|
}
|
||
|
}
|
||
|
|
||
|
println(safeCount)
|
||
|
|
||
|
|