Shawn
08/03/2018, 9:27 PMbdawg.io
08/03/2018, 11:10 PMinline fun forEachJumpable(start: Int, endInclusive: Int, block: (Int, (Int) -> Int) -> Unit) {
var i = start
if (start > endInclusive) return
while (i <= endInclusive) {
var changed = false
block(i) {
i += it
changed = true
i
}
if (!changed) i++
}
}
fun foo() {
// prints: 1 3 6 7 12 13 14 15
forEachJumpable(1, 16) { i, jump ->
if (i % 2 == 0) {
jump(i / 2)
} else {
print("$i ")
}
}
}
Shawn
08/03/2018, 11:14 PM