diff options
| author | chirvasitua <stuart-little@users.noreply.github.com> | 2021-01-13 22:02:19 -0500 |
|---|---|---|
| committer | chirvasitua <stuart-little@users.noreply.github.com> | 2021-01-13 22:02:19 -0500 |
| commit | 539fb388e6b9e9ba4a0574cbc7aaafc502ce06e8 (patch) | |
| tree | 2fe57afe689e47c020f980da51db2c20dac611cf /challenge-071/stuart-little/haskell | |
| parent | b7eaedf3966c6e55b67a90af662a396ca524b5c0 (diff) | |
| download | perlweeklychallenge-club-539fb388e6b9e9ba4a0574cbc7aaafc502ce06e8.tar.gz perlweeklychallenge-club-539fb388e6b9e9ba4a0574cbc7aaafc502ce06e8.tar.bz2 perlweeklychallenge-club-539fb388e6b9e9ba4a0574cbc7aaafc502ce06e8.zip | |
1st commit on 071_haskell
Diffstat (limited to 'challenge-071/stuart-little/haskell')
| -rwxr-xr-x | challenge-071/stuart-little/haskell/ch-1.hs | 17 | ||||
| -rwxr-xr-x | challenge-071/stuart-little/haskell/ch-2.hs | 11 |
2 files changed, 28 insertions, 0 deletions
diff --git a/challenge-071/stuart-little/haskell/ch-1.hs b/challenge-071/stuart-little/haskell/ch-1.hs new file mode 100755 index 0000000000..de6d755b03 --- /dev/null +++ b/challenge-071/stuart-little/haskell/ch-1.hs @@ -0,0 +1,17 @@ +#!/usr/bin/env runghc + +-- run <script> <integer> + +import System.Environment (getArgs,) +import System.Random (newStdGen,) +import System.Random.Shuffle (shuffle',) + +peaks :: Ord a => [a] -> [a] +peaks l = map fst $ filter (\(x,xs)-> all (x>) xs) $ zip l $ map (\(l,r)-> concat [take 1 (reverse l), take 1 (tail r)]) $ map (\x-> splitAt x l) [0..length l-1] + +main = do + nr <- getArgs >>= return.(read::String->Int).head + gen <- newStdGen + let l = take nr $ shuffle' [1..50] 50 gen + putStrLn $ "Initial list: " ++ (unwords $ map show l) + putStrLn $ "Peaks: " ++ (unwords $ map show $ peaks l) diff --git a/challenge-071/stuart-little/haskell/ch-2.hs b/challenge-071/stuart-little/haskell/ch-2.hs new file mode 100755 index 0000000000..266dc65a9b --- /dev/null +++ b/challenge-071/stuart-little/haskell/ch-2.hs @@ -0,0 +1,11 @@ +#!/usr/bin/env runghc + +-- run <script> <integer> <space-separated list entries> + +import System.Environment (getArgs,) +import Data.List.Utils (join,) + +main = do + (nrstr:lst) <- getArgs + let nr = read nrstr::Int + putStrLn $ join " -> " $ (\(p,q)-> p ++ (tail q)) $ splitAt (length lst - nr) lst |
