Subtractive generator: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: syntax coloured) |
m (→{{header|Haskell}}: An applicative simplification of the shuffle function) |
||
Line 897: | Line 897: | ||
subtractgen seed = drop 220 out |
subtractgen seed = drop 220 out |
||
where |
where |
||
out = mmod $ r |
out = mmod $ r <> zipWith (-) out (drop 31 out) |
||
where |
where |
||
r = take 55 $ shuffle $ cycle $ take 55 s |
r = take 55 $ shuffle $ cycle $ take 55 s |
||
shuffle x = |
shuffle x = ((:) . head <*> shuffle) (drop 34 x) |
||
where |
|||
xx = drop 34 x |
|||
s = mmod $ seed : 1 : zipWith (-) s (tail s) |
s = mmod $ seed : 1 : zipWith (-) s (tail s) |
||
mmod = |
mmod = fmap (`mod` 10 ^ 9) |
||
main :: IO () |
main :: IO () |