tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
|
|
@ -0,0 +1,25 @@
|
|||
import Data.Set (Set, member, insert, empty)
|
||||
import Data.List (group, sort)
|
||||
|
||||
step :: String -> String
|
||||
step = concatMap (\list -> show (length list) ++ [head list]) . group . sort
|
||||
|
||||
findCycle :: (Ord a) => [a] -> [a]
|
||||
findCycle = aux empty where
|
||||
aux set (x : xs)
|
||||
| x `member` set = []
|
||||
| otherwise = x : aux (insert x set) xs
|
||||
|
||||
select :: [[a]] -> [[a]]
|
||||
select = snd . foldl (\(len, acc) xs -> case len `compare` length xs of
|
||||
LT -> (length xs, [xs])
|
||||
EQ -> (len, xs : acc)
|
||||
GT -> (len, acc)) (0, [])
|
||||
|
||||
main :: IO ()
|
||||
main = mapM_ (mapM_ print) $ -- Print out all the numbers
|
||||
select $ -- find the longest ones
|
||||
map findCycle $ -- run the sequences until there is a repeat
|
||||
map (iterate step) $ -- produce the sequence
|
||||
map show -- turn the numbers into digits
|
||||
[1..1000000] -- The input seeds
|
||||
Loading…
Add table
Add a link
Reference in a new issue