Difference between revisions of "Euler problems/41 to 50"
(→[http://projecteuler.net/index.php?section=problems&id=46 Problem 46]: solution inspired by SICP exercise 3.70) |
|||
Line 43: | Line 43: | ||
Solution: | Solution: | ||
+ | |||
+ | This solution is inspired by exercise 3.70 in ''Structure and Interpretation of Computer Programs'', (2nd ed.). | ||
+ | |||
<haskell> | <haskell> | ||
− | problem_46 = | + | problem_46 = head $ oddComposites `orderedDiff` gbSums |
+ | |||
+ | oddComposites = filter ((>1) . length . primeFactors) [3,5..] | ||
+ | |||
+ | gbSums = map gbWeight $ weightedPairs gbWeight primes [2*n*n | n <- [1..]] | ||
+ | gbWeight (a,b) = a + b | ||
+ | |||
+ | weightedPairs w (x:xs) (y:ys) = | ||
+ | (x,y) : mergeWeighted w (map ((,)x) ys) (weightedPairs w xs (y:ys)) | ||
+ | |||
+ | mergeWeighted w (x:xs) (y:ys) | ||
+ | | w x <= w y = x : mergeWeighted w xs (y:ys) | ||
+ | | otherwise = y : mergeWeighted w (x:xs) ys | ||
+ | |||
+ | x `orderedDiff` [] = x | ||
+ | [] `orderedDiff` y = [] | ||
+ | (x:xs) `orderedDiff` (y:ys) | ||
+ | | x < y = x : xs `orderedDiff` (y:ys) | ||
+ | | x > y = (x:xs) `orderedDiff` ys | ||
+ | | otherwise = xs `orderedDiff` ys | ||
</haskell> | </haskell> | ||
Revision as of 05:02, 28 March 2007
Contents
Problem 41
What is the largest n-digit pandigital prime that exists?
Solution:
problem_41 = undefined
Problem 42
How many triangle words can you make using the list of common English words?
Solution:
problem_42 = undefined
Problem 43
Find the sum of all pandigital numbers with an unusual sub-string divisibility property.
Solution:
problem_43 = undefined
Problem 44
Find the smallest pair of pentagonal numbers whose sum and difference is pentagonal.
Solution:
problem_44 = undefined
Problem 45
After 40755, what is the next triangle number that is also pentagonal and hexagonal?
Solution:
problem_45 = undefined
Problem 46
What is the smallest odd composite that cannot be written as the sum of a prime and twice a square?
Solution:
This solution is inspired by exercise 3.70 in Structure and Interpretation of Computer Programs, (2nd ed.).
problem_46 = head $ oddComposites `orderedDiff` gbSums
oddComposites = filter ((>1) . length . primeFactors) [3,5..]
gbSums = map gbWeight $ weightedPairs gbWeight primes [2*n*n | n <- [1..]]
gbWeight (a,b) = a + b
weightedPairs w (x:xs) (y:ys) =
(x,y) : mergeWeighted w (map ((,)x) ys) (weightedPairs w xs (y:ys))
mergeWeighted w (x:xs) (y:ys)
| w x <= w y = x : mergeWeighted w xs (y:ys)
| otherwise = y : mergeWeighted w (x:xs) ys
x `orderedDiff` [] = x
[] `orderedDiff` y = []
(x:xs) `orderedDiff` (y:ys)
| x < y = x : xs `orderedDiff` (y:ys)
| x > y = (x:xs) `orderedDiff` ys
| otherwise = xs `orderedDiff` ys
Problem 47
Find the first four consecutive integers to have four distinct primes factors.
Solution:
problem_47 = undefined
Problem 48
Find the last ten digits of 11 + 22 + ... + 10001000.
Solution:
problem_48 = undefined
Problem 49
Find arithmetic sequences, made of prime terms, whose four digits are permutations of each other.
Solution:
problem_49 = undefined
Problem 50
Which prime, below one-million, can be written as the sum of the most consecutive primes?
Solution:
problem_50 = undefined