Difference between revisions of "Euler problems/121 to 130"
m (Corrected the links to the Euler project) |
(Solution added for problem 122) |
||
Line 11: | Line 11: | ||
Finding the most efficient exponentiation method. | Finding the most efficient exponentiation method. | ||
− | Solution: | + | Solution using a depth first search, pretty fast : |
<haskell> | <haskell> | ||
− | problem_122 = | + | import Data.List |
+ | import Data.Array.Diff | ||
+ | import Control.Monad | ||
+ | |||
+ | depthAddChain 12 branch mins = mins | ||
+ | depthAddChain d branch mins = foldl' step mins $ nub $ filter (> head branch) | ||
+ | $ liftM2 (+) branch branch | ||
+ | where | ||
+ | step da e | e > 200 = da | ||
+ | | otherwise = | ||
+ | case compare (da ! e) d of | ||
+ | GT -> depthAddChain (d+1) (e:branch) $ da // [(e,d)] | ||
+ | EQ -> depthAddChain (d+1) (e:branch) da | ||
+ | LT -> da | ||
+ | |||
+ | baseBranch = [2,1] | ||
+ | |||
+ | baseMins :: DiffUArray Int Int | ||
+ | baseMins = listArray (1,200) $ 0:1: repeat maxBound | ||
+ | |||
+ | problem_122 = sum . elems $ depthAddChain 2 baseBranch baseMins | ||
</haskell> | </haskell> | ||
Revision as of 23:13, 1 September 2007
Contents
Problem 121
Investigate the game of chance involving coloured discs.
Solution:
problem_121 = undefined
Problem 122
Finding the most efficient exponentiation method.
Solution using a depth first search, pretty fast :
import Data.List
import Data.Array.Diff
import Control.Monad
depthAddChain 12 branch mins = mins
depthAddChain d branch mins = foldl' step mins $ nub $ filter (> head branch)
$ liftM2 (+) branch branch
where
step da e | e > 200 = da
| otherwise =
case compare (da ! e) d of
GT -> depthAddChain (d+1) (e:branch) $ da // [(e,d)]
EQ -> depthAddChain (d+1) (e:branch) da
LT -> da
baseBranch = [2,1]
baseMins :: DiffUArray Int Int
baseMins = listArray (1,200) $ 0:1: repeat maxBound
problem_122 = sum . elems $ depthAddChain 2 baseBranch baseMins
Problem 123
Determining the remainder when (pn − 1)n + (pn + 1)n is divided by pn2.
Solution:
problem_123 = undefined
Problem 124
Determining the kth element of the sorted radical function.
Solution:
problem_124 = undefined
Problem 125
Finding square sums that are palindromic.
Solution:
problem_125 = undefined
Problem 126
Exploring the number of cubes required to cover every visible face on a cuboid.
Solution:
problem_126 = undefined
Problem 127
Investigating the number of abc-hits below a given limit.
Solution:
problem_127 = undefined
Problem 128
Which tiles in the hexagonal arrangement have prime differences with neighbours?
Solution:
problem_128 = undefined
Problem 129
Investigating minimal repunits that divide by n.
Solution:
problem_129 = undefined
Problem 130
Finding composite values, n, for which n−1 is divisible by the length of the smallest repunits that divide it.
Solution:
problem_130 = undefined