c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

FizzBuzz #erlang

あたしゃFizzBuzzも書けねえのかよ……。

-module(zampan).
-compile(export_all).

fizzbuzz(N) -> fizzbuzz(N, []).
fizzbuzz(0, Acum) ->
  lists:concat(lists:map(fun(Elm) -> io:format("~p ", [Elm]) end, Acum));
fizzbuzz(N, Acum) ->
  if
    (N rem 3 == 0) and (N rem 5 == 0) -> fizzbuzz(N - 1, ["Fizzbuzz" | Acum]);
    N rem 3 == 0 -> fizzbuzz(N - 1, ["Fizz" | Acum]);
    N rem 5 == 0 -> fizzbuzz(N - 1, ["Buzz" | Acum]);
    true -> fizzbuzz(N - 1, [N | Acum])
  end.

此れを利用して、FizzBuzzサーバを作る版。

-module(zampan).
-export([start/0, fizzbuzz/1]).
-compile(export_all).

%% 1> c(zampan).
%% 2> zampan:start().
%% <0.175.0>
%% 3> pid(0, 175, 0) ! 100.

start() ->
  spawn(fun() -> fizzbuzz_server() end).

fizzbuzz_server() ->
  receive
    N ->
      io:fwrite("~p~n", [fizzbuzz(N)]),
      fizzbuzz_server()
  end.

fizzbuzz(N) -> fizzbuzz(N, []).
fizzbuzz(0, Acum) ->
  lists:concat(lists:map(fun(Elm) -> io:format("~p ", [Elm]) end, Acum));
fizzbuzz(N, Acum) when N > 0 ->
  if
    N rem 15 == 0 -> fizzbuzz(N - 1, ["Fizzbuzz" | Acum]);
    N rem 3 == 0 -> fizzbuzz(N - 1, ["Fizz" | Acum]);
    N rem 5 == 0 -> fizzbuzz(N - 1, ["Buzz" | Acum]);
    true -> fizzbuzz(N - 1, [N | Acum])
  end.