【Erlang】ErlangでFizzBuzzやってみた
何だかFizzBuzz書くのが HelloWorld の代わりみたいになっているような気がします。
#!/usr/bin/env escript main(Args) -> N = list_to_integer(erlang:hd(Args)), % Arguments[0] to a Number lists:foreach( fun(X) -> io:format("~p~n", [X]) end, fizzBuzz(N)). % Get FizzBuzz Array % N is max number of FizzBuzz fizzBuzz(N) -> lists:foldl( fun (X, Sum) when X rem 15 =:= 0 -> Sum ++ ["FizzBuzz"]; (X, Sum) when X rem 5 =:= 0 -> Sum ++ ["Buzz"]; (X, Sum) when X rem 3 =:= 0 -> Sum ++ ["Fizz"]; (X, Sum) -> Sum ++ [integer_to_list(X)] end, [], lists:seq(1, N) ).
※コンパイルが面倒だったのでescript使ってます。
- 何度か迷子になりながら書きました。
- writeとかfwriteとかformatとかわけわかめ。。。とりあえず io:format/2 だけ覚えよう。
- ifの代わりにガード!っていう感覚。
- Rubyで言うと・・・
- lists:seq は Range
- lists:foldl は inject なのかな。
だんだん慣れていきたい。