|
|
@@ -0,0 +1,26 @@
|
|
|
+{-
|
|
|
+A Pythagorean triplet is a set of three natural numbers, a < b < c, for which, a^2 + b^2 = c^2.
|
|
|
+For example, 3^2 + 4^2 = 9 + 16 = 25 = 5^2.
|
|
|
+There exists exactly one Pythagorean triplet for which a + b + c = 1000.
|
|
|
+Find the product abc.
|
|
|
+-}
|
|
|
+
|
|
|
+solution :: Int
|
|
|
+solution = go' 1 1 1 10
|
|
|
+ where
|
|
|
+ target :: Int
|
|
|
+ target = 1000
|
|
|
+
|
|
|
+ is_pit3 :: Int -> Int -> Int -> Bool
|
|
|
+ is_pit3 a b c = (a*a + b*b) == c*c
|
|
|
+
|
|
|
+ go' :: Int -> Int -> Int -> Int -> Int
|
|
|
+ go' a b c tag
|
|
|
+ | a == tag = go' 1 (b+1) c tag
|
|
|
+ | b == tag = go' 1 1 (c+1) tag
|
|
|
+ | c == tag = go' 1 1 1 (tag*2)
|
|
|
+ | (is_pit3 a b c) && (a+b+c) == target = a*b*c
|
|
|
+ | otherwise = go' (a+1) b c tag
|
|
|
+
|
|
|
+main :: IO ()
|
|
|
+main = putStrLn ("Solution: " ++ show solution)
|