Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
24
Task/Pythagorean-triples/Haskell/pythagorean-triples-1.hs
Normal file
24
Task/Pythagorean-triples/Haskell/pythagorean-triples-1.hs
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
pytr :: Int -> [(Bool, Int, Int, Int)]
|
||||
pytr n =
|
||||
filter
|
||||
(\(_, a, b, c) -> a + b + c <= n)
|
||||
[ (prim a b c, a, b, c)
|
||||
| a <- xs,
|
||||
b <- drop a xs,
|
||||
c <- drop b xs,
|
||||
a ^ 2 + b ^ 2 == c ^ 2
|
||||
]
|
||||
where
|
||||
xs = [1 .. n]
|
||||
prim a b _ = gcd a b == 1
|
||||
|
||||
main :: IO ()
|
||||
main =
|
||||
putStrLn $
|
||||
"Up to 100 there are "
|
||||
<> show (length xs)
|
||||
<> " triples, of which "
|
||||
<> show (length $ filter (\(x, _, _, _) -> x) xs)
|
||||
<> " are primitive."
|
||||
where
|
||||
xs = pytr 100
|
||||
26
Task/Pythagorean-triples/Haskell/pythagorean-triples-2.hs
Normal file
26
Task/Pythagorean-triples/Haskell/pythagorean-triples-2.hs
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
------------------- PYTHAGOREAN TRIPLES ------------------
|
||||
|
||||
pythagoreanTriplesBelow :: Int -> [[Int]]
|
||||
pythagoreanTriplesBelow n =
|
||||
concatMap
|
||||
( \x ->
|
||||
concatMap
|
||||
(\y -> concatMap (go x y) [y + 1 .. m])
|
||||
[x + 1 .. m]
|
||||
)
|
||||
[1 .. m]
|
||||
where
|
||||
m = quot n 2
|
||||
go x y z
|
||||
| x + y + z <= n && x ^ 2 + y ^ 2 == z ^ 2 =
|
||||
[[x, y, z]]
|
||||
| otherwise = []
|
||||
|
||||
--------------------------- TEST -------------------------
|
||||
main :: IO ()
|
||||
main =
|
||||
mapM_
|
||||
(print . length)
|
||||
( [id, filter (\[x, y, _] -> gcd x y == 1)]
|
||||
<*> [pythagoreanTriplesBelow 100]
|
||||
)
|
||||
24
Task/Pythagorean-triples/Haskell/pythagorean-triples-3.hs
Normal file
24
Task/Pythagorean-triples/Haskell/pythagorean-triples-3.hs
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
triangles :: Int -> [[Int]]
|
||||
triangles max_peri
|
||||
| max_peri < 12 = []
|
||||
| otherwise = concat tiers
|
||||
where
|
||||
tiers = takeWhile (not . null) $ iterate tier [[3, 4, 5]]
|
||||
tier = concatMap (filter ((<= max_peri) . sum) . tmul)
|
||||
tmul t =
|
||||
map
|
||||
(map (sum . zipWith (*) t))
|
||||
[ [[1, -2, 2], [2, -1, 2], [2, -2, 3]],
|
||||
[[1, 2, 2], [2, 1, 2], [2, 2, 3]],
|
||||
[[-1, 2, 2], [-2, 1, 2], [-2, 2, 3]]
|
||||
]
|
||||
|
||||
triangleCount max_p = (length t, sum $ map ((max_p `div`) . sum) t)
|
||||
where
|
||||
t = triangles max_p
|
||||
|
||||
main :: IO ()
|
||||
main =
|
||||
mapM_
|
||||
((putStrLn . (\n -> show n <> " " <> show (triangleCount n))) . (10 ^))
|
||||
[1 .. 7]
|
||||
Loading…
Add table
Add a link
Reference in a new issue