September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -1,11 +1,16 @@
|
|||
jseq n k = f n [1 .. n] where
|
||||
jseq :: Int -> Int -> [Int]
|
||||
jseq n k = f n [1 .. n]
|
||||
where
|
||||
f 0 _ = []
|
||||
f m s = x:f (m-1) (right ++ left) where
|
||||
(left,x:right) = splitAt ((k-1) `mod` m) s
|
||||
f m s = x : f (m - 1) (right ++ left)
|
||||
where
|
||||
(left, x:right) = splitAt (mod (k - 1) m) s
|
||||
|
||||
-- the final survivor is ((k + ...((k + ((k + 0)`mod` 1)) `mod` 2) ... ) `mod` n)
|
||||
jos n k = 1 + foldl (\x->((k+x)`mod`)) 0 [2..n]
|
||||
jos :: Int -> Int -> Int
|
||||
jos n k = 1 + foldl (mod . (k +)) 0 [2 .. n]
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
print $ jseq 41 3
|
||||
print $ jos 10000 100
|
||||
print $ jseq 41 3
|
||||
print $ jos 10000 100
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue