関数型っぽくしてみたかったのでSequenceを使ってみました。(コード量は気にしてないです)
import java.util.Random
fun main(v: Array<String>) {
//無限リスト(風)を用意
val zun = "ズン"
val doko = "ドコ"
val getZunOrDoko = { if (Random().nextBoolean()) zun else doko }
val sequence = generateSequence(getZunOrDoko)
//畳み込みながら判定していく
sequence.fold(listOf<String>()) { list, zunOrDoko ->
println(zunOrDoko)
val latest = listOf(list, listOf(zunOrDoko)).flatten().takeLast(5) //直近5個を用意
//Thread.sleep(500)
if (latest == listOf(zun, zun, zun, zun, doko)) {
println("き・よ・し!")
return@main
}
latest
}
}