問題陳述:這是給定語句的正確程序嗎?
查找對各方和各方等於或小於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'。 =) –