diff options
| -rw-r--r-- | challenge-078/jeongoon/haskell/ch-1.hs | 17 | ||||
| -rw-r--r-- | challenge-078/jeongoon/haskell/ch-2.hs | 16 |
2 files changed, 33 insertions, 0 deletions
diff --git a/challenge-078/jeongoon/haskell/ch-1.hs b/challenge-078/jeongoon/haskell/ch-1.hs new file mode 100644 index 0000000000..883e5c0eea --- /dev/null +++ b/challenge-078/jeongoon/haskell/ch-1.hs @@ -0,0 +1,17 @@ +import System.Environment +import Data.List (mapAccumR) +import Data.Char (isNumber) +import Data.Maybe (catMaybes) + +-- tested with: runhaskell ch-1.hs 9 10 7 5 6 1 + +leaderElement [] = [0] -- challenge spec. +leaderElement ls = (catMaybes.snd) $ mapAccumR revLeader (minimum ls) ls where + revLeader curLeader newElement + | curLeader <= newElement = (newElement, Just newElement) + | otherwise = (curLeader, Nothing) + +main = do + (print.leaderElement.catMaybes) + =<< map (\nStr -> if (all isNumber nStr) then Just(read nStr :: Int) + else Nothing ) `fmap` getArgs diff --git a/challenge-078/jeongoon/haskell/ch-2.hs b/challenge-078/jeongoon/haskell/ch-2.hs new file mode 100644 index 0000000000..04a6c6d5a8 --- /dev/null +++ b/challenge-078/jeongoon/haskell/ch-2.hs @@ -0,0 +1,16 @@ +import System.Environment +import Data.List +import Data.Char (isNumber) +import Data.Maybe (catMaybes) + +-- tested with: runhaskell 7 4 2 6 3 / 1 3 4 +-- use any non-digit value as a separator between @A and @B + +unsafe_mapLeftRotate ls rotates = + scanl (\ls' n -> (drop n ls') ++ (take n ls')) ls rotates + +parseNumbers = catMaybes.map (\nStr -> if (all isNumber nStr) + then Just(read nStr:: Int) else Nothing) +main = do (mapM_ print.tail. + uncurry unsafe_mapLeftRotate.(\(a,b) -> (a, parseNumbers b))) + =<< (span (all isNumber)) `fmap` getArgs |
