浏览代码

[Haskell][9] Adding Solution

Vinicius Teshima 5 月之前
父节点
当前提交
9ca91ae391
共有 1 个文件被更改,包括 26 次插入0 次删除
  1. 26 0
      haskell/src/0009.hs

+ 26 - 0
haskell/src/0009.hs

@@ -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)