Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
49
Task/FizzBuzz/Agda/fizzbuzz.agda
Normal file
49
Task/FizzBuzz/Agda/fizzbuzz.agda
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
module FizzBuzz where
|
||||
|
||||
open import Agda.Builtin.IO using (IO)
|
||||
|
||||
open import Agda.Builtin.Unit renaming (⊤ to Unit)
|
||||
|
||||
open import Data.Bool using (Bool ; false ; true ; if_then_else_)
|
||||
|
||||
open import Data.Nat using (ℕ ; zero ; suc ; _≡ᵇ_ ; _%_)
|
||||
|
||||
open import Data.Nat.Show using (show)
|
||||
|
||||
open import Data.List using (List ; [] ; _∷_ ; map)
|
||||
|
||||
open import Data.String using (String ; _++_ ; unlines)
|
||||
|
||||
postulate putStrLn : String -> IO Unit
|
||||
{-# FOREIGN GHC import qualified Data.Text as T #-}
|
||||
{-# COMPILE GHC putStrLn = putStrLn . T.unpack #-}
|
||||
|
||||
fizz : String
|
||||
fizz = "Fizz"
|
||||
|
||||
buzz : String
|
||||
buzz = "Buzz"
|
||||
|
||||
_isDivisibleBy_ : (n : ℕ) -> (m : ℕ) -> Bool
|
||||
n isDivisibleBy zero = false
|
||||
n isDivisibleBy (suc k) = ((n % (suc k)) ≡ᵇ 0)
|
||||
|
||||
getTerm : (n : ℕ) -> String
|
||||
getTerm n =
|
||||
if (n isDivisibleBy 15) then (fizz ++ buzz)
|
||||
else if (n isDivisibleBy 3) then fizz
|
||||
else if (n isDivisibleBy 5) then buzz
|
||||
else (show n)
|
||||
|
||||
range : (a : ℕ) -> (b : ℕ) -> List (ℕ)
|
||||
range k zero = []
|
||||
range k (suc m) = k ∷ (range (suc k) m)
|
||||
|
||||
getTerms : (n : ℕ) -> List (String)
|
||||
getTerms n = map getTerm (range 1 n)
|
||||
|
||||
fizzBuzz : String
|
||||
fizzBuzz = unlines (getTerms 100)
|
||||
|
||||
main : IO Unit
|
||||
main = putStrLn fizzBuzz
|
||||
Loading…
Add table
Add a link
Reference in a new issue