Skip to content

Instantly share code, notes, and snippets.

View geowa4's full-sized avatar
🏠
Working from home

George Adams geowa4

🏠
Working from home
View GitHub Profile
@geowa4
geowa4 / euler6.hs
Created February 8, 2013 01:25
Project Euler Problem #6
euler6 :: Int
euler6 = a - b
where
a = (^2) $ sum [1..100]
b = sum [x^2 | x <- [1..100]]
@geowa4
geowa4 / euler7.hs
Created February 8, 2013 01:27
Project Euler Problem # 7
leastDivisor :: Integer -> Integer -> Integer
leastDivisor divisor n
| rem n divisor == 0 = divisor
| divisor^2 > n = n
| otherwise = leastDivisor (divisor+1) n
hasFactor :: Integer -> Bool
hasFactor 1 = False
hasFactor n = (leastDivisor 2 n) /= n
@geowa4
geowa4 / euler8.hs
Created February 8, 2013 01:28
Project Euler Problem #8
import Data.Char (digitToInt)
import Data.List (tails)
euler8 :: Int
euler8 = maximum $ map (product . take 5) (tails number)
where
str = "73167176531330624919225119674426574742355349194934\
\96983520312774506326239578318016984801869478851843\
\85861560789112949495459501737958331952853208805511\
\12540698747158523863050715693290963295227443043557\
@geowa4
geowa4 / euler9.hs
Created February 8, 2013 01:29
Project Euler Problem #9
euler9 :: Int
euler9 = floor $ head [a * b * c | b <- [1..998], a <- [1..b], let c2 = a^2 + b^2, let c = sqrt c2, a + b + c == 1000, a^2 + b^2 == c2]
@geowa4
geowa4 / euler10.hs
Created February 8, 2013 01:46
Project Euler Problem #10
leastDivisor :: Integer -> Integer -> Integer
leastDivisor divisor n
| rem n divisor == 0 = divisor
| divisor^2 > n = n
| otherwise = leastDivisor (divisor+1) n
hasFactor :: Integer -> Bool
hasFactor 1 = False
hasFactor n = (leastDivisor 2 n) /= n
@geowa4
geowa4 / euler12.hs
Created February 8, 2013 01:47
Project Euler Problem #12
import Data.List (group)
leastDivisor :: Integer -> Integer -> Integer
leastDivisor divisor n
| rem n divisor == 0 = divisor
| divisor^2 > n = n
| otherwise = leastDivisor (divisor+1) n
factors :: Integer -> [Integer]
factors 1 = []
@geowa4
geowa4 / euler13.hs
Created February 8, 2013 01:47
Project Euler Problem #13
euler13 :: String
euler13 = (take 10) . show . sum $ nums
nums :: [Integer]
nums = [37107287533902102798797998220837590246510135740250,
46376937677490009712648124896970078050417018260538,
74324986199524741059474233309513058123726617309629,
91942213363574161572522430563301811072406154908250,
23067588207539346171171980310421047513778063246676,
@geowa4
geowa4 / euler14.hs
Created February 8, 2013 01:48
Project Euler Problem #14
import Data.List (foldl')
collatz :: Int -> [Int]
collatz n
| n == 1 = [1]
| even n = n : collatz (n `div` 2)
| otherwise = n : collatz (3 * n + 1)
compareCollatzTuple :: (Int, Int) -> Int -> (Int, Int)
compareCollatzTuple acc x =
@geowa4
geowa4 / euler16.hs
Created February 8, 2013 01:49
Project Euler Problem #16
import Data.Char (digitToInt)
euler16 :: Int
euler16 = sum $ map digitToInt (show (2^1000))
@geowa4
geowa4 / euler20.hs
Created February 8, 2013 01:49
Project Euler Problem #20
import Data.Char (digitToInt)
factorial :: (Integral a) => a -> a
factorial 0 = 1
factorial n = n * factorial (n - 1)
euler20 :: Int
euler20 = sum . (map digitToInt) . show . factorial $ 100