소스 검색

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