September Morn Update

This commit is contained in:
Ingy döt Net 2019-09-12 10:33:56 -07:00
parent 4e2d22a71d
commit aac6731f2c
6856 changed files with 141342 additions and 21127 deletions

View file

@ -0,0 +1,7 @@
fizzbuzz n = case (rem n 3, rem n 5) of
(0, 0) -> "FizzBuzz"
(0, _) -> "Fizz"
(_, 0) -> "Buzz"
(_, _) -> show n
main = mapM_ (putStrLn . fizzbuzz) [1..100]

View file

@ -1,12 +1,15 @@
import Control.Monad.State
import Control.Monad.Trans
import Control.Monad.Writer
import Data.List (zipWith3)
import Data.Bool (bool)
main = putStr $ execWriter $ mapM_ (flip execStateT True . fizzbuzz) [1..100]
fizzBuzz :: [String]
fizzBuzz =
zipWith3
(\f b n ->
let fb = f ++ b
in bool fb n (null fb))
(cycle $ replicate 2 [] ++ ["fizz"])
(cycle $ replicate 4 [] ++ ["buzz"])
(show <$> [1 ..])
fizzbuzz :: Int -> StateT Bool (Writer String) ()
fizzbuzz x = do
when (x `mod` 3 == 0) $ tell "Fizz" >> put False
when (x `mod` 5 == 0) $ tell "Buzz" >> put False
get >>= (flip when $ tell $ show x)
tell "\n"
main :: IO ()
main = mapM_ putStrLn $ take 100 fizzBuzz

View file

@ -1,10 +1,12 @@
fizzBuzz :: (Integral a) => a -> String
fizzBuzz i
| fizz && buzz = "FizzBuzz"
| fizz = "Fizz"
| buzz = "Buzz"
| otherwise = show i
where fizz = i `mod` 3 == 0
buzz = i `mod` 5 == 0
import Data.Bool (bool)
main = mapM_ (putStrLn . fizzBuzz) [1..100]
fizzBuzz :: [String]
fizzBuzz =
let fb n k = cycle (replicate (pred n) [] ++ [k])
in zipWith
(flip . bool <*> null)
(zipWith (++) (fb 3 "fizz") (fb 5 "buzz"))
(show <$> [1 ..])
main :: IO ()
main = mapM_ putStrLn $ take 100 fizzBuzz

View file

@ -1,12 +1,12 @@
import Data.Monoid
import Control.Monad.State
import Control.Monad.Trans
import Control.Monad.Writer
fizzbuzz = max
<$> show
<*> "fizz" `when` divisibleBy 3
<> "buzz" `when` divisibleBy 5
<> "quxx" `when` divisibleBy 7
where
when m p x = if p x then m else mempty
divisibleBy n x = x `mod` n == 0
main = putStr $ execWriter $ mapM_ (flip execStateT True . fizzbuzz) [1..100]
main = mapM_ (putStrLn . fizzbuzz) [1..100]
fizzbuzz :: Int -> StateT Bool (Writer String) ()
fizzbuzz x = do
when (x `mod` 3 == 0) $ tell "Fizz" >> put False
when (x `mod` 5 == 0) $ tell "Buzz" >> put False
get >>= (flip when $ tell $ show x)
tell "\n"

View file

@ -0,0 +1,10 @@
fizzBuzz :: (Integral a) => a -> String
fizzBuzz i
| fizz && buzz = "FizzBuzz"
| fizz = "Fizz"
| buzz = "Buzz"
| otherwise = show i
where fizz = i `mod` 3 == 0
buzz = i `mod` 5 == 0
main = mapM_ (putStrLn . fizzBuzz) [1..100]

View file

@ -0,0 +1,12 @@
import Data.Monoid
fizzbuzz = max
<$> show
<*> "fizz" `when` divisibleBy 3
<> "buzz" `when` divisibleBy 5
<> "quxx" `when` divisibleBy 7
where
when m p x = if p x then m else mempty
divisibleBy n x = x `mod` n == 0
main = mapM_ (putStrLn . fizzbuzz) [1..100]