Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- H-99: Ninety-Nine Haskell Problems: Problem 5: Reverse a list.
- import Data.List (sortOn)
- e1 :: String
- e1 = "A man, a plan, a canal, panama!"
- e2 :: [Int]
- e2 = [1,2,3,4]
- e3 :: [()]
- e3 = []
- main :: IO ()
- main = do
- printTestList [e1]
- printTestList [e2]
- printTestList [e3]
- printTestList :: Show a => [[a]] -> IO ()
- printTestList list = mapM_ print
- $ zip ([1 .. ] :: [Int])
- $ functionsList <*> list
- functionsList :: [[a] -> [a]]
- functionsList = [one, two, three, four, five, six, seven, eight, nine, ten, eleven]
- one :: [a] -> [a]
- one = reverse
- two :: [a] -> [a]
- two [] = []
- two (x:xs) = two xs ++ [x]
- three :: [a] -> [a]
- three [] = []
- three list = three (tail list) ++ [head list]
- four :: [a] -> [a]
- four = foldl (flip (:)) []
- five :: [a] -> [a]
- five [] = []
- five list = last list : five (init list)
- six :: [a] -> [a]
- six list = aux (length list - 1) list
- where
- aux _ [] = []
- aux index lst = drop index lst ++ aux (index - 1) (take index lst)
- seven :: [a] -> [a]
- seven [] = []
- seven list = aux list (length list - 1)
- where
- aux lst 0 = [head lst]
- aux lst index = lst !! index : aux lst (index - 1)
- eight :: [a] -> [a]
- eight list = map snd
- $ sortOn fst
- $ zip [(length list - 1), (length list - 2) .. 0] list
- nine :: [a] -> [a]
- nine [] = []
- nine list = map (list !!) [u, p .. 0]
- where
- u = length list - 1
- p = length list - 2
- ten :: [a] -> [a]
- ten [] = []
- ten list = [u, p .. 0] >>= (\i -> [list !! i])
- where
- u = length list - 1
- p = length list - 2
- eleven :: [a] -> [a]
- eleven [] = []
- eleven list = [list !! x
- | x <- [length list - 1, length list - 2 .. 0]]
- -- (1,"!amanap ,lanac a ,nalp a ,nam A")
- -- (2,"!amanap ,lanac a ,nalp a ,nam A")
- -- (3,"!amanap ,lanac a ,nalp a ,nam A")
- -- (4,"!amanap ,lanac a ,nalp a ,nam A")
- -- (5,"!amanap ,lanac a ,nalp a ,nam A")
- -- (6,"!amanap ,lanac a ,nalp a ,nam A")
- -- (7,"!amanap ,lanac a ,nalp a ,nam A")
- -- (8,"!amanap ,lanac a ,nalp a ,nam A")
- -- (9,"!amanap ,lanac a ,nalp a ,nam A")
- -- (10,"!amanap ,lanac a ,nalp a ,nam A")
- -- (11,"!amanap ,lanac a ,nalp a ,nam A")
- -- (1,[4,3,2,1])
- -- (2,[4,3,2,1])
- -- (3,[4,3,2,1])
- -- (4,[4,3,2,1])
- -- (5,[4,3,2,1])
- -- (6,[4,3,2,1])
- -- (7,[4,3,2,1])
- -- (8,[4,3,2,1])
- -- (9,[4,3,2,1])
- -- (10,[4,3,2,1])
- -- (11,[4,3,2,1])
- -- (1,[])
- -- (2,[])
- -- (3,[])
- -- (4,[])
- -- (5,[])
- -- (6,[])
- -- (7,[])
- -- (8,[])
- -- (9,[])
- -- (10,[])
- -- (11,[])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement