问题陈述:这是给定语句的正确程序吗?
查找对各方和各方等于或小于10的整数的直角三角形有24
哪以下两种溶液周长为正确解释问题并给出正确答案?
如果第一个解决方案不正确,那么在类似的情况下如何避免这种编程错误?
首个解决方案:
ghci> let rightTriangles = [(a, b, c) | a <- [1..10], b <- [1..10], c <- [1..10], a^2 + b^2 == c^2, a+b+c == 24]
ghci> rightTriangles
[(6,8,10),(8,6,10)]
二解决方案:
ghci> let rightTriangles' = [ (a,b,c) | c <- [1..10] , b <- [1..c] , a <- [1..b] , a^2 + b^2 == c^2, a+b+c == 24]
ghci> rightTriangles'
[(6,8,10)]
有人可能会争辩说,正确的一段代码将像第一个解决方案,但交换出“a^2 + b^2 == c^2”更令人兴奋的条件'a^2 + b^2 == c^2 || a^2 + c^2 == b^2 || b^2 + c^2 == a^2'。 =) –