aboutsummaryrefslogtreecommitdiff
path: root/challenge-001
diff options
context:
space:
mode:
authorAlexander Pankoff <ccntrq@screenri.de>2022-05-07 18:41:10 +0200
committerAlexander Pankoff <ccntrq@screenri.de>2022-05-07 19:20:39 +0200
commit26122bcb7444cc1ea4a620589cd078689ac05505 (patch)
treec1bba529f2cb613873d857c7cb7031864ce420e6 /challenge-001
parentaa0ebefae1e8631cc805413f421212c10a7b2684 (diff)
downloadperlweeklychallenge-club-26122bcb7444cc1ea4a620589cd078689ac05505.tar.gz
perlweeklychallenge-club-26122bcb7444cc1ea4a620589cd078689ac05505.tar.bz2
perlweeklychallenge-club-26122bcb7444cc1ea4a620589cd078689ac05505.zip
Add haskell solutions for challenge 1
Diffstat (limited to 'challenge-001')
-rw-r--r--challenge-001/alexander-pankoff/haskell/ch-1.hs14
-rw-r--r--challenge-001/alexander-pankoff/haskell/ch-2.hs18
2 files changed, 32 insertions, 0 deletions
diff --git a/challenge-001/alexander-pankoff/haskell/ch-1.hs b/challenge-001/alexander-pankoff/haskell/ch-1.hs
new file mode 100644
index 0000000000..f10946fade
--- /dev/null
+++ b/challenge-001/alexander-pankoff/haskell/ch-1.hs
@@ -0,0 +1,14 @@
+module Main where
+
+import Data.Bifunctor (first)
+
+main :: IO ()
+main = print $ replaceAndCount 'e' 'E' "Perl Weekly Challenge"
+
+replaceAndCount :: Char -> Char -> String -> (String, Int)
+replaceAndCount taret replacement = first reverse . foldl go ("", 0)
+ where
+ go (replaced, count) cur =
+ if cur == taret
+ then (replacement : replaced, succ count)
+ else (cur : replaced, count)
diff --git a/challenge-001/alexander-pankoff/haskell/ch-2.hs b/challenge-001/alexander-pankoff/haskell/ch-2.hs
new file mode 100644
index 0000000000..90313ac72c
--- /dev/null
+++ b/challenge-001/alexander-pankoff/haskell/ch-2.hs
@@ -0,0 +1,18 @@
+module Main where
+
+import Data.Bifunctor (first)
+import Data.Bool (bool)
+
+main :: IO ()
+main = print $ fizzBuzz 20
+
+fizzBuzz :: Int -> [String]
+fizzBuzz max =
+ map
+ ( \x ->
+ let mfizzBuzz = fizzBuzzCycle !! pred x
+ in if not $ null mfizzBuzz then mfizzBuzz else show x
+ )
+ [1 .. max]
+ where
+ fizzBuzzCycle = zipWith (++) (cycle ["", "", "Fizz"]) (cycle ["", "", "", "", "Buzz"])