Skip to content

Instantly share code, notes, and snippets.

@joshrotenberg
Created April 6, 2012 19:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joshrotenberg/2322137 to your computer and use it in GitHub Desktop.
Save joshrotenberg/2322137 to your computer and use it in GitHub Desktop.
playing around with fizzbuzz in erlang
-module(fizzbuzz).
-export([start/0, start2/0]).
start() ->
fizzbuzz(1).
start2() ->
fizzbuzz2(1).
fizzbuzz(N) when N > 100 ->
ok;
fizzbuzz(N) when N rem 3 == 0, N rem 5 == 0 ->
io:format("FizzBuzz~n"),
fizzbuzz(N + 1);
fizzbuzz(N) when N rem 3 == 0 ->
io:format("Fizz~n"),
fizzbuzz(N + 1);
fizzbuzz(N) when N rem 5 == 0 ->
io:format("Buzz~n"),
fizzbuzz(N + 1);
fizzbuzz(N) ->
io:format("~p~n", [N]),
fizzbuzz(N + 1).
fizzbuzz2(N) when N > 100 ->
ok;
fizzbuzz2(N) ->
case N of
N when N rem 3 == 0, N rem 5 == 0 ->
io:format("FizzBuzz~n");
N when N rem 3 == 0 ->
io:format("Fizz~n");
N when N rem 5 == 0 ->
io:format("Buzz~n");
_ -> io:format("~p~n", [N])
end,
fizzbuzz2(N + 1).
fizzbuzz3(Max) -> fizzbuzz3(1, Max, []).
fizzbuzz3(N, Max, Acc) when N == Max + 1 ->
lists:foreach(fun(P) -> io:format("~p~n", [P]) end, lists:reverse(Acc));
fizzbuzz3(N, Max, Acc) when N rem 3 == 0, N rem 5 == 0 ->
fizzbuzz3(N + 1, Max, [fizzbuzz|Acc]);
fizzbuzz3(N, Max, Acc) when N rem 3 == 0 ->
fizzbuzz3(N + 1, Max, [fizz|Acc]);
fizzbuzz3(N, Max, Acc) when N rem 5 == 0 ->
fizzbuzz3(N + 1, Max, [buzz|Acc]);
fizzbuzz3(N, Max, Acc) ->
fizzbuzz3(N + 1, Max, [N|Acc]).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment