Постановка задачи:Какая правильная программа для данного оператора?
Найти правильный треугольник, который имеет целые числа для всех сторон и со всех сторон, равных или меньших, чем 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'. =) –