1
0
Fork 0

Problem 77

This commit is contained in:
Jonathan Chan 2017-07-15 18:02:12 -07:00
parent 423fa87d47
commit 29716fee83
4 changed files with 26 additions and 0 deletions

BIN
77 Executable file

Binary file not shown.

BIN
77.hi Normal file

Binary file not shown.

26
77.hs Normal file
View File

@ -0,0 +1,26 @@
import qualified Data.IntMap.Strict as M
import Data.Numbers.Primes
import Debug.Trace
filterSum :: Int -> M.IntMap Int -> Int
filterSum n subMap =
let filterMap = M.filterWithKey (\k _ -> k <= n) subMap
in M.foldr (+) 0 filterMap
getSubmap :: Int -> M.IntMap (M.IntMap Int) -> M.IntMap Int
getSubmap k numMap = M.findWithDefault undefined k numMap
insertSubmap :: Int -> M.IntMap (M.IntMap Int) -> M.IntMap (M.IntMap Int)
insertSubmap n numMap =
let getFilterSumInsert k subMap = M.insert k (filterSum k (getSubmap (n-k) numMap)) subMap
subMap = foldr getFilterSumInsert M.empty $ takeWhile (<= n) primes
in M.insert n subMap numMap
createNummap :: Int -> M.IntMap (M.IntMap Int)
createNummap bound =
let initialMap = M.fromList [(0, M.fromList [(0, 1)]), (1, M.fromList [(1,0)])]
in foldr insertSubmap initialMap [bound, bound-1..2]
main = print $
let bound = 71
in filterSum bound $ M.findWithDefault undefined bound $ createNummap bound

BIN
77.o Normal file

Binary file not shown.