Add main functions to any that were missing
							parent
							
								
									6e17fe91f5
								
							
						
					
					
						commit
						683ad67214
					
				|  | @ -221,4 +221,6 @@ ans :: [Integer] | ||||||
| ans = take 10 $ reverse . digits $ sum oneHundredFiftyDigitNumbers | ans = take 10 $ reverse . digits $ sum oneHundredFiftyDigitNumbers | ||||||
| 
 | 
 | ||||||
| main :: IO () | main :: IO () | ||||||
| main = print ans | main = do | ||||||
|  |   print ans | ||||||
|  |   print (sum oneHundredFiftyDigitNumbers) | ||||||
|  |  | ||||||
|  | @ -63,3 +63,5 @@ test = map (filter . multipleOf) [1..10] | ||||||
| 
 | 
 | ||||||
| -- lol | -- lol | ||||||
| solve = foldl1 lcm [1..20] | solve = foldl1 lcm [1..20] | ||||||
|  | 
 | ||||||
|  | main = print solve | ||||||
|  |  | ||||||
|  | @ -13,16 +13,29 @@ Find the difference between the sum of the squares | ||||||
|   of the first one hundred natural numbers |   of the first one hundred natural numbers | ||||||
|   and the square of the sum. |   and the square of the sum. | ||||||
| -} | -} | ||||||
| upperRange = 100 | upperRange :: Integer | ||||||
|  | upperRange = 1_000_000 | ||||||
|  | 
 | ||||||
|  | square :: Num a => a -> a | ||||||
| square n = n^2 | square n = n^2 | ||||||
|  | 
 | ||||||
|  | squares :: [Integer] | ||||||
| squares = map square [1..upperRange] | squares = map square [1..upperRange] | ||||||
|  | 
 | ||||||
|  | sum' :: [Integer] -> Integer | ||||||
| sum' = go 0 | sum' = go 0 | ||||||
|   where |   where | ||||||
|     go acc []     = acc |     go acc []     = acc | ||||||
|     go acc (x:xs) = go (acc+x) xs |     go acc (x:xs) = go (acc+x) xs | ||||||
| 
 | 
 | ||||||
| sumOfSquares = sum' squares | sumOfSquares :: Integer | ||||||
|  | sumOfSquares = sum squares | ||||||
| 
 | 
 | ||||||
| squareOfTheSum = (sum [1..upperRange])^2 | squareOfTheSum :: Integer | ||||||
|  | squareOfTheSum = sum [1..upperRange] ^2 | ||||||
| 
 | 
 | ||||||
|  | solution :: Integer | ||||||
| solution = squareOfTheSum - sumOfSquares | solution = squareOfTheSum - sumOfSquares | ||||||
|  | 
 | ||||||
|  | main :: IO () | ||||||
|  | main = print solution | ||||||
|  |  | ||||||
|  | @ -1,6 +1,9 @@ | ||||||
| -- https://projecteuler.net/problem=7 | -- https://projecteuler.net/problem=7 | ||||||
| -- Find the 10_001 prime number | -- Find the 10_001 prime number | ||||||
| 
 | 
 | ||||||
|  | -- import           Data.Numbers.Primes (primes) | ||||||
|  | import           Math.NumberTheory.Primes (primes) | ||||||
|  | 
 | ||||||
| primes1 :: [Integer] | primes1 :: [Integer] | ||||||
| primes1 = 2:3:prs | primes1 = 2:3:prs | ||||||
|   where |   where | ||||||
|  | @ -30,3 +33,8 @@ primes2 = 2:([3..] `minus` composites) | ||||||
| primes3 = sieve [2..] | primes3 = sieve [2..] | ||||||
|   where |   where | ||||||
|     sieve (p : xs) = p : sieve [x | x <- xs, x `mod` p > 0] |     sieve (p : xs) = p : sieve [x | x <- xs, x `mod` p > 0] | ||||||
|  | 
 | ||||||
|  | main :: IO () | ||||||
|  | main = print $ "Arithmoi - Math.NumberTheory.Primes: " <> show ans | ||||||
|  | 
 | ||||||
|  | ans = primes !! 10_000_000 | ||||||
|  |  | ||||||
|  | @ -28,6 +28,7 @@ What is the value of this product? | ||||||
| module Main where | module Main where | ||||||
| 
 | 
 | ||||||
| import           Data.Char       (ord) | import           Data.Char       (ord) | ||||||
|  | import           Data.Foldable   (maximumBy) | ||||||
| import           Data.List       (sort) | import           Data.List       (sort) | ||||||
| import           Data.List.Split (splitOn) | import           Data.List.Split (splitOn) | ||||||
| 
 | 
 | ||||||
|  | @ -46,9 +47,16 @@ digits = go [] | ||||||
| main :: IO () | main :: IO () | ||||||
| main = print ans | main = print ans | ||||||
| 
 | 
 | ||||||
| ans :: [[Integer]] | ans :: ([Integer], Integer) | ||||||
| ans = (windowsOf 13 . digits) thousandDigitNum | ans = (l, p) | ||||||
| -- "9878799272442" |   where | ||||||
|  |     l = maximumBy c $ (windowsOf 13 . digits) thousandDigitNum | ||||||
|  |     p = product l | ||||||
|  |     c a b | ||||||
|  |       | product a > product b = GT | ||||||
|  |       | product a < product b = LT | ||||||
|  |       | otherwise = EQ | ||||||
|  | -- "([5,5,7,6,6,8,9,6,6,4,8,9,5],23514624000)" | ||||||
| 
 | 
 | ||||||
| -- what dose it mean to have the greatest product in adjacent digits? | -- what dose it mean to have the greatest product in adjacent digits? | ||||||
| --  why ask it like that??? | --  why ask it like that??? | ||||||
|  |  | ||||||
|  | @ -17,14 +17,39 @@ Find the product `abc`. | ||||||
| -} | -} | ||||||
| 
 | 
 | ||||||
| main :: IO () | main :: IO () | ||||||
| main = print answer | main = do | ||||||
|  |   print answer | ||||||
|  |   print (product answer) | ||||||
| 
 | 
 | ||||||
| answer :: String | -- head $ [(a,b,c) | a <- [1..limit], b <- [a+1..limit], c <- [limit - a - b], a < b, b < c, a^2 + b^2 == c^2] | ||||||
| answer = "I dunno" | answer :: [Integer] | ||||||
|  | answer = head $ | ||||||
|  |   [ [a, b, c] | | ||||||
|  |     a <- [1 .. limit], | ||||||
|  |     b <- [a + 1 .. limit], | ||||||
|  |     c <- [limit - a - b], | ||||||
|  |     b < c, | ||||||
|  |     a ^ 2 + b ^ 2 == c ^ 2] | ||||||
|  |   where limit = 1000 | ||||||
|  | 
 | ||||||
|  | limit = 1000 | ||||||
|  | version1 =   [ [a, b, c] | | ||||||
|  |     a <- [1 .. limit], | ||||||
|  |     b <- [a + 1 .. limit], | ||||||
|  |     c <- [limit - a - b], | ||||||
|  |     b < c, | ||||||
|  |     a ^ 2 + b ^ 2 == c ^ 2] | ||||||
|  | 
 | ||||||
|  | version2 =   [ [a, b, c] | | ||||||
|  |     a <- [1 .. limit], | ||||||
|  |     b <- [a + 1 .. limit], | ||||||
|  |     c <- [limit - a - b], | ||||||
|  |     b < c, | ||||||
|  |     a ^ 2 + b ^ 2 == c ^ 2] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| solve :: Integer -> [(Integer, Integer, Integer)] | solve :: Integer -> [(Integer, Integer, Integer)] | ||||||
| solve x = takeWhile (\(a,b,c) -> a + b + c <= 1000) $ primitiveTriplesUnder x | solve x = takeWhile (\(a,b,c) -> a + b + c == 1000) $ primitiveTriplesUnder x | ||||||
| 
 | 
 | ||||||
| euclid'sFormula :: Num c => (c, c) -> (c, c, c) | euclid'sFormula :: Num c => (c, c) -> (c, c, c) | ||||||
| euclid'sFormula (m, n) = (a,b,c) | euclid'sFormula (m, n) = (a,b,c) | ||||||
|  | @ -96,10 +121,10 @@ ans' limit = [(a, b, c) | ||||||
|  -} |  -} | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| -- Computers are fast, so we can implement a brute-force search to directly solve the problem. | -- -- Computers are fast, so we can implement a brute-force search to directly solve the problem. | ||||||
| perim = 1000 | -- perim = 1000 | ||||||
| main = putStrLn (show ans) | -- main = putStrLn (show ans) | ||||||
| ans = head [a * b * (perim - a - b) | a <- [1..perim], b <- [a+1..perim], isIntegerRightTriangle a b] | -- ans = head [a * b * (perim - a - b) | a <- [1..perim], b <- [a+1..perim], isIntegerRightTriangle a b] | ||||||
| isIntegerRightTriangle a b = a < b && b < c | -- isIntegerRightTriangle a b = a < b && b < c | ||||||
| 	&& a * a + b * b == c * c | -- 	&& a * a + b * b == c * c | ||||||
| 	where c = perim - a - b | -- 	where c = perim - a - b | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue