aboutsummaryrefslogtreecommitdiff
path: root/challenge-071/stuart-little/haskell
diff options
context:
space:
mode:
authorchirvasitua <stuart-little@users.noreply.github.com>2021-01-13 22:02:19 -0500
committerchirvasitua <stuart-little@users.noreply.github.com>2021-01-13 22:02:19 -0500
commit539fb388e6b9e9ba4a0574cbc7aaafc502ce06e8 (patch)
tree2fe57afe689e47c020f980da51db2c20dac611cf /challenge-071/stuart-little/haskell
parentb7eaedf3966c6e55b67a90af662a396ca524b5c0 (diff)
downloadperlweeklychallenge-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-xchallenge-071/stuart-little/haskell/ch-1.hs17
-rwxr-xr-xchallenge-071/stuart-little/haskell/ch-2.hs11
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