orangy
fun life(i: Array<BooleanArray>) = generateSequence(i) {
val sz = it.size
Array(sz) { r -> BooleanArray(sz) { c ->
val n = (-1..1).sumBy { x -> (-1..1).sumBy { y -> if (it[((c + x) + sz) % sz][((r + y) + sz) % sz]) 1 else 0 } }
if (it[c][r]) n in 3..4 else n == 3
}
}
}