Skip to content

Instantly share code, notes, and snippets.

@pphetra
Last active January 1, 2016 04:39
Show Gist options
  • Select an option

  • Save pphetra/8093546 to your computer and use it in GitHub Desktop.

Select an option

Save pphetra/8093546 to your computer and use it in GitHub Desktop.
fizz n = "fizz"
buzz n = "buzz"
fizzbuzz n = "fizzbuzz"
as_is n = show n
fn_table = cycle [as_is, as_is, fizz, as_is, buzz, fizz, as_is, as_is, fizz, buzz, as_is, fizz, as_is, as_is, fizzbuzz]
table = zipWith ($) fn_table [1..]
-- *Main> take 100 table
-- ["1","2","fizz","4","buzz","fizz","7","8","fizz","buzz","11","fizz","13","14","fizzbuzz","16","17","fizz","19","buzz","fizz","22","
-- 23","fizz","buzz","26","fizz","28","29","fizzbuzz","31","32","fizz","34","buzz","fizz","37","38","fizz","buzz","41","fizz","43","44","
-- fizzbuzz","46","47","fizz","49","buzz","fizz","52","53","fizz","buzz","56","fizz","58","59","fizzbuzz","61","62","fizz","64","buzz","f
-- izz","67","68","fizz","buzz","71","fizz","73","74","fizzbuzz","76","77","fizz","79","buzz","fizz","82","83","fizz","buzz","86","fizz",
-- "88","89","fizzbuzz","91","92","fizz","94","buzz","fizz","97","98","fizz","buzz"]
-- test function --
show_at n = table !! (n - 1)
test' n = fn n == show_at n
where fn n
| (n `rem` 15) == 0 = "fizzbuzz"
| (n `rem` 5) == 0 = "buzz"
| (n `rem` 3) == 0 = "fizz"
| otherwise = show n
test n = forAll (elements [1..10000]) $ \n -> test' n
-- *Main> quickCheck test
-- +++ OK, passed 100 tests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment