Add solution for problem 45.
This commit is contained in:
parent
9bc586b327
commit
6cadd0eb1e
|
|
@ -0,0 +1,23 @@
|
|||
-- Triangle, pentagonal, and hexagonal numbers are generated by the following formulae:
|
||||
--
|
||||
-- Triangle T[n]=n(n+1)/2 1, 3, 6, 10, 15, ...
|
||||
-- Pentagonal P[n]=n(3n−1)/2 1, 5, 12, 22, 35, ...
|
||||
-- Hexagonal H[n]=n(2n−1) 1, 6, 15, 28, 45, ...
|
||||
--
|
||||
-- It can be verified that T[285] = P[165] = H[143] = 40755.
|
||||
--
|
||||
-- Find the next triangle number that is also pentagonal and hexagonal.
|
||||
|
||||
import Euler
|
||||
|
||||
triangles, pentagonals, hexagonals :: [Int]
|
||||
triangles = map (\n -> n*(n+1) `div` 2) [1..]
|
||||
pentagonals = map (\n -> n*(3*n-1) `div` 2) [1..]
|
||||
hexagonals = map (\n -> n*(2*n-1)) [1..]
|
||||
|
||||
main = print $ go triangles pentagonals $ dropWhile (<= 40755) hexagonals
|
||||
where
|
||||
go ts@(t:_) ps@(p:_) hs@(h:_)
|
||||
| (t == p) && (t == h) = t
|
||||
| h < t || h < p = go ts ps (tail hs)
|
||||
| otherwise = go (dropWhile (< h) ts) (dropWhile (< h) ps) hs
|
||||
Loading…
Reference in New Issue