Van Eck sequence: Difference between revisions
Content added Content deleted
(Added XPL0 example.) |
(→{{header|Haskell}}: Tidied mapAccumL version.) |
||
Line 1,610: | Line 1,610: | ||
<lang haskell>{-# LANGUAGE TupleSections #-} |
<lang haskell>{-# LANGUAGE TupleSections #-} |
||
⚫ | |||
import Data.List (mapAccumL) |
import Data.List (mapAccumL) |
||
⚫ | |||
import Data.Maybe (maybe) |
import Data.Maybe (maybe) |
||
--------------------- VAN ECK SEQUENCE ------------------- |
|||
vanEck :: [Int] |
vanEck :: [Int] |
||
Line 1,618: | Line 1,620: | ||
where |
where |
||
go (x, dct) i = |
go (x, dct) i = |
||
((,) =<< (, M.insert x i |
((,) =<< (, M.insert x i dct)) |
||
(maybe 0 (i -) (M.lookup x dct)) |
|||
--------------------------- TEST ------------------------- |
|||
main :: IO () |
main :: IO () |
||
main = |
main = |
||
mapM_ print $ |
mapM_ print $ |
||
fmap |
|||
(drop . subtract 10 <*> flip take vanEck) |
((drop . subtract 10) <*> flip take vanEck) |
||
[10, 1000, 10000, 100000, 1000000]</lang> |
[10, 1000, 10000, 100000, 1000000]</lang> |
||
{{Out}} |
{{Out}} |
||
<pre>[0,0,1,0,2,0,2,2,1,6] |
<pre>[0,0,1,0,2,0,2,2,1,6] |