26 lines
691 B
Haskell
26 lines
691 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.
|
|
|
|
module P009 (p009) where
|
|
|
|
pythagoreanTriplet :: Int -> (Int, Int, Int)
|
|
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 :: (Int, Int, Int) -> Int
|
|
prodTriplet (x, y, z) = x * y * z
|
|
|
|
p009 :: IO ()
|
|
p009 = do
|
|
let result = prodTriplet $ pythagoreanTriplet 1000
|
|
putStrLn $
|
|
"Project Euler, Problem 9\n"
|
|
++ "Answer: "
|
|
++ show result
|