何だかFizzBuzz書くのが HelloWorld の代わりみたいになっているような気がします。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/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使ってます

<ul>
<li>何度か迷子になりながら書きました。</li>
<li>writeとかfwriteとかformatとかわけわかめ。。。とりあえず io:format/2 だけ覚えよう。</li>
<li>ifの代わりにガード!っていう感覚。</li>
<li>Rubyで言うと・・・
<ul>
<li>lists:seq  Range</li>
<li>lists:foldl  inject  なのかな。</li>
</ul></li>
</ul><br/>
だんだん慣れていきたい。