This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| take 10 $ show $ sum [37107287533902102798797998220837590246510135740250,46376937677490009712648124896970078050417018260538,74324986199524741059474233309513058123726617309629,91942213363574161572522430563301811072406154908250,23067588207539346171171980310421047513778063246676,89261670696623633820136378418383684178734361726757,28112879812849979408065481931592621691275889832738,44274228917432520321923589422876796487670272189318,47451445736001306439091167216856844588711603153276,70386486105843025439939619828917593665686757934951,62176457141856560629502157223196586755079324193331,64906352462741904929101432445813822663347944758178,92575867718337217661963751590579239728245598838407,58203565325359399008402633568948830189458628227828,80181199384826282014278194139940567587151170094390,35398664372827112653829987240784473053190104293586,86515506006295864861532075273371959191420517255829,71693888707715466499115593487603532921714970056938,54370070576826684624621495650076471787294438377604,532826541087568284431911906346940 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| module Euler12 (triangle,multipleCount) where | |
| import Data.List | |
| triangle :: Int -> Int | |
| triangle n = head . dropWhile (\m -> multipleCount m < n) $ [ i*(i+1) `div` 2 | i <- [1..] ] | |
| multipleCount :: Int -> Int | |
| multipleCount number = | |
| product $ map (+1) $ map length (group pFactors) | |
| where pFactors = primeFactors [] number 2 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| greatestProduct :: [[Int]] -> Int | |
| greatestProduct mat = _greatestProduct (0,0) mat 0 | |
| _greatestProduct :: (Int,Int) -> [[Int]] -> Int -> Int | |
| _greatestProduct (20,y) mat prev = prev | |
| _greatestProduct coord mat prev | |
| | current > prev = _greatestProduct nextC mat current | |
| | otherwise = _greatestProduct nextC mat prev | |
| where nextC = (nextCoord coord) | |
| maxVert = (max (up coord mat) (down coord mat)) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| sumPrimes :: Int -> Int | |
| sumPrimes limit = _primes limit 2 [3,5..limit] | |
| _primes :: Int -> Int -> [Int] -> Int | |
| _primes limit sum [] = sum | |
| _primes limit sum x = let x0=(head x) in _primes limit (sum+x0) (filter (\n -> n `mod` x0 /= 0) x) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| head [ (a*b*c,a,b,c) | c <- [3..1000], b <- [2..(c-1)], a <- [1..(b-1)], a^2+b^2 == c^2, a+b+c == 1000 ] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import Data.Char | |
| largestProduct :: Int -> String -> (Int, [Int]) | |
| largestProduct size n = | |
| let digits = map digitToInt n in | |
| findSubsequence size (0, [0]) digits | |
| findSubsequence :: Int -> (Int,[Int]) -> [Int] -> (Int, [Int]) | |
| findSubsequence size prev seq | |
| | length seq < size = prev |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| primes :: Int -> Int | |
| primes index = last (_primes 0 (index-1) [2] [3,5..]) | |
| _primes :: Int -> Int -> [Int] -> [Int] -> [Int] | |
| _primes cur max p x | |
| | cur >= max = p | |
| | otherwise = | |
| let x0 = head x in | |
| _primes (cur+1) max (p++[x0]) (filter (\n -> n `mod` x0 /= 0) (tail x)) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| let range = [1..100] in (foldl (+) 0 range)^2 - (foldl (+) 0 (map (^2) range)) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 20 * (1+length (takeWhile (/= True) (map (foldl (&&) True) (map (\n -> (map (\m -> n `mod` m == 0) [1..20])) [20,40..])))) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import Data.Maybe | |
| import Data.List | |
| primeFactors :: Int -> [Int] | |
| primeFactors = (filter prime) . divisors | |
| prime :: Int -> Bool | |
| prime a = | |
| let upper = floor (sqrt (fromIntegral a)) + 1 in | |
| (a `mod` 2 /= 0) && isNothing (find (isMultiple a) [3,5..upper]) |