erlang 初めて書いた。
1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
-module(fizzbuzz). -compile(export_all). fb(N) -> if N rem 15 == 0 -> "FizzBuzz"; N rem 3 == 0 -> "Fizz"; N rem 5 == 0 -> "Buzz"; true -> integer_to_list(N) end. fizzbuzz(N, MAX) -> io:format('~s~n', [fb(N)]), if N < MAX -> fizzbuzz(N+1, MAX); true -> true end. fizzbuzz(MAX) -> fizzbuzz(1, MAX).
[追記]
リストを使えば再帰しないで書けるのか。
fizzbuzz_list(MIN, MAX) -> [ io:format('~s~n', [fb(X)]) || X <- lists:seq(MIN, MAX) ]. fizzbuzz_map(MIN, MAX) -> lists:map( fun(X) -> io:format('~s~n', [fb(X)]) end, lists:seq(MIN, MAX) ).