Problema
Deseo generar de forma perezosa las tripletas de números (i,j,k) que cumple i es par, j es multiplo de i y k es primo usando evaluación perezosa
object Ejercicio {
def generador(min: Int, max :Int):LazyList[Int] = {
if (min >= max) LazyList.empty
else LazyList.cons(min, generador(min+1, max))
}
def solucion():LazyList[(Int,Int,Int)] = {
for {
i <- generador(1,1000)
j <- generador(1,1000)
k <- generador(1,1000)
if (i%2 == 0) // i es par
if (j%i == 0) // j es multiplo de i
if ((2 to Math.ceil(Math.sqrt(k)).toInt) forall (s => k <= 2 || (k % s != 0))) // k es primo
} yield (i,j,k)
}
def main(arr:Array[String]):Unit = {
val t = solucion()
println(t)
println(t(9))
println(t)
}
}