aboutsummaryrefslogtreecommitdiff
path: root/challenge-078/jeongoon/haskell/ch-1.hs
blob: 883e5c0eea556718dca9bf177711fa8e2fd38f36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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