haskell 函数:pytri
我编写的是一个推导式,它以整数值 n 作为输入,并返回所有三元组 (a, b, c) 的列表,其中 a、b、c ≤ n 满足毕达哥拉斯定理: a2 = b2 + c2:
pytri :: Integer -> [(Integer,Integer,Integer)]
pytri n = [(a,b,c)| a <- [1..n],b<-[1..n],c<-[1..n], a^2+b^2==c^2 ]
然而,它包含这些三元组的所有排列,例如:
pytri 10 == [(3,4,5),(4,3,5),(6,8,10),(8,6,10)]
但应该改为:
pytri 10 == [(5,4,3),(10,8,6)]
如何删除额外的排列并在内部按降序对它们进行排序?