21 lines
652 B
Haskell

-- A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,
--
-- a2 + b2 = c2
--
-- For example, 32 + 42 = 9 + 16 = 25 = 52.
--
-- There exists exactly one Pythagorean triplet for which a + b + c = 1000.
--
-- Find the product abc.
pythagoreanTriplet :: (Integral a) => a -> (a, a, a)
pythagoreanTriplet n = head [ (x, y, z) | x <- [1..n], y <- [x..n], z <- [y..n], x + y + z == n, x^2 + y^2 == z^2]
prodTriplet :: (Integral a) => (a, a, a) -> a
prodTriplet (x, y, z) = x * y * z
main = do
let result = prodTriplet $ pythagoreanTriplet 1000
putStrLn $ "Project Euler, Problem 9\n"
++ "Answer: " ++ show result