История изменений
Исправление qnikst, (текущая версия) :
let go = [(a,b,c) | a <- [1..] , b <- [1..a] , c <- [1..b], isSquare (a+b+c), isSquare (a+b-c) || (isSquare (a+c-b))] where isSquare x = let t = sqrt $ fromIntegral x in t == fromIntegral (round t)
> take 100 go
[(4,4,1),(6,6,4),(7,6,3),(8,6,2),(9,6,1),(9,8,8),(10,8,7),(11,8,6),(12,8,5),(12,12,1),(13,8,4),(13,13,10),(14,8,3),(14,12,10),(15,8,2),(15,11,10),(16,8,1),(16,10,10),(16,16,4),(17,10,9),(17,16,3),(18,10,8),(18,16,2),(19,10,7),(19,16,1),(19,18,12),(20,10,6),(20,17,12),(20,20,9),(21,10,5),(21,16,12),(21,20,8),(22,10,4),(22,15,12),(22,20,7),(23,10,3),(23,14,12),(23,20,6),(24,10,2),(24,13,12),(24,20,5),(24,24,1),(24,24,16),(25,10,1),(25,12,12),(25,20,4),(25,24,15),(25,25,14),(26,12,11),(26,20,3),(26,24,14),(27,12,10),(27,20,2),(27,23,14),(27,24,13),(28,12,9),(28,20,1),(28,22,14),(28,24,12),(28,28,25),(29,12,8),(29,21,14),(29,24,11),(29,28,24),(30,12,7),(30,20,14),(30,24,10),(30,28,23),(30,30,4),(31,12,6),(31,19,14),(31,24,9),(31,28,22),(31,30,3),(32,12,5),(32,18,14),(32,24,8),(32,28,21),(32,30,2),(33,12,4),(33,17,14),(33,24,7),(33,28,20),(33,30,1),(33,32,16),(34,12,3),(34,16,14),(34,24,6),(34,28,19),(34,31,16),(34,34,32),(35,12,2),(35,15,14),(35,24,5),(35,28,18),(35,30,16),(35,33,32),(36,12,1),(36,14,14),(36,24,4)]
Исходная версия qnikst, :
let go = [(a,b,c) | a <- [1..] , b <- [1..a] , c <- [1..b], isSquare (a+b+c), isSquare (a+b-c) || (isSquare (a+c-b))] where isSquare x = let t = sqrt $ fromIntegral (x*x) in t == fromIntegral (round t)