aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchirvasitua <stuart-little@users.noreply.github.com>2021-01-17 21:39:27 -0500
committerchirvasitua <stuart-little@users.noreply.github.com>2021-01-17 21:39:27 -0500
commit578126c2f4d905cb602f8ff9adb93a2cd7c2c2eb (patch)
treea8f90292919719b52eb326ddf29e91dddc2d4712
parent90ad12cba06edbb669262200c3386cd331bd04ee (diff)
downloadperlweeklychallenge-club-578126c2f4d905cb602f8ff9adb93a2cd7c2c2eb.tar.gz
perlweeklychallenge-club-578126c2f4d905cb602f8ff9adb93a2cd7c2c2eb.tar.bz2
perlweeklychallenge-club-578126c2f4d905cb602f8ff9adb93a2cd7c2c2eb.zip
1st commit on 070_haskell
-rw-r--r--challenge-070/stuart-little/README2
-rwxr-xr-xchallenge-070/stuart-little/haskell/ch-1.hs20
-rwxr-xr-xchallenge-070/stuart-little/haskell/ch-2.hs19
3 files changed, 40 insertions, 1 deletions
diff --git a/challenge-070/stuart-little/README b/challenge-070/stuart-little/README
index 76119cbbb8..78439907de 100644
--- a/challenge-070/stuart-little/README
+++ b/challenge-070/stuart-little/README
@@ -1 +1 @@
-Solutions by Stuart Little.
+Solutions by Stuart Little
diff --git a/challenge-070/stuart-little/haskell/ch-1.hs b/challenge-070/stuart-little/haskell/ch-1.hs
new file mode 100755
index 0000000000..1c02f0accd
--- /dev/null
+++ b/challenge-070/stuart-little/haskell/ch-1.hs
@@ -0,0 +1,20 @@
+#!/usr/bin/env runghc
+
+-- run <script> <string> <count> <offset>
+
+import Data.List.Split (splitPlaces,)
+import System.Environment (getArgs,)
+
+swapChunks :: Int -> Int -> [a] -> [a]
+swapChunks count offset xs
+ |count+offset < ln = l0 ++ l3 ++ l2 ++ l1 ++ l4
+ |count+offset == ln = m2 ++ m4 ++ m0 ++ m3 ++ m1
+ where
+ ln = length xs
+ (l0:l1:l2:l3:l4:_) = splitPlaces [1,count,offset-count,count,ln-offset-count-1] xs
+ (m0:m1:m2:m3:m4:_) = splitPlaces [1,count-1,1,offset-count,count-1] xs
+
+main = do
+ (str:rest) <- getArgs
+ let (count:offset:_) = map (read::String->Int) rest
+ putStrLn $ swapChunks count offset str
diff --git a/challenge-070/stuart-little/haskell/ch-2.hs b/challenge-070/stuart-little/haskell/ch-2.hs
new file mode 100755
index 0000000000..6be8c6a6f0
--- /dev/null
+++ b/challenge-070/stuart-little/haskell/ch-2.hs
@@ -0,0 +1,19 @@
+#!/usr/bin/env runghc
+
+-- run <script> <nr of bits>
+
+import Data.List.Split (chunksOf,)
+import System.Environment (getArgs,)
+
+binStrToDec :: String -> Int
+binStrToDec b = sum $ zipWith (*) (iterate (2*) 1) $ map (read::String->Int) $ chunksOf 1 $ reverse b
+
+gray :: Int -> [String]
+gray n
+ |n==0 =[""]
+ |otherwise = (map ('0':) l) ++ (map ('1':) $ reverse l) where
+ l = gray (n-1)
+
+main = do
+ nrbits <- getArgs >>= return.(read::String->Int).head
+ print $ map binStrToDec $ gray nrbits