我想迭代 2(或 3)个无限列表并找到满足条件的“最小”对,如下所示:
until pred [(a,b,c) | a<-as, b<-bs, c<-cs]
where pred (a,b,c) = a*a + b*b == c*c
as = [1..]
bs = [1..]
cs = [1..]
a == b == 1
在整个程序运行过程中,上述内容不会走得太远 。有没有很好的方法来解决这个问题,例如构建无限序列[(1,1,1),(1,2,1),(2,1,1),(2,1,2),(2,2,1),(2,2,2),(2,2,3),(2,3,2),..]
?
奖励:是否可以推广到 n 元组?