生成三元组中所有可能的数字组合?

lea*_*ell 2 haskell list-comprehension ghci

比方说,我想构建一个三元组,从三元组中获取1..100的每个数字组合; 即:

[(0,0,0),(0,0,1),(0,1,1),(1,1,1),(0,0,2),(0,1,2),(0,2,2),(1,2,2)]
Run Code Online (Sandbox Code Playgroud)

..等等,直到一个给定的界限(即:100:给我们最终的三连胜(100,100,100)); 在haskell中是否有任何合理的方法可以做到这一点,或者我最好编写一个简短地保存边界指针的方法,并递归地增加每个数字,直到它等于右边的数字?

Ber*_*rgi 5

我认为你的描述最符合列表理解来表达你想要做的事情:

[(a, b, c) | c <- [0..100],
             b <- [0..c],
             a <- [0..b] ]
Run Code Online (Sandbox Code Playgroud)

  • 你只是枚举元组`(a,b,c)`,其中`b <= c && a <= b`成立.所以`(100,99,1)`永远不会出现 (4认同)