diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-09-15 16:05:26 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-15 16:05:26 +0100 |
| commit | 9fe8e8251e7e6d2725ec5592b4ee3a804ae3390f (patch) | |
| tree | ef85617a3bb90ec1f389e8b12a5d1cccdb43cad9 | |
| parent | 523483aac2851a2f9af2f416f4dacf7f579115fb (diff) | |
| parent | fca5d7df3072bc6d574b2dc71c2a80ee5a82359b (diff) | |
| download | perlweeklychallenge-club-9fe8e8251e7e6d2725ec5592b4ee3a804ae3390f.tar.gz perlweeklychallenge-club-9fe8e8251e7e6d2725ec5592b4ee3a804ae3390f.tar.bz2 perlweeklychallenge-club-9fe8e8251e7e6d2725ec5592b4ee3a804ae3390f.zip | |
Merge pull request #2301 from jeongoon/master
[ch-078/jeongoon] add Haskell Solution
| -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 |
