FizzBuzz かいてみた (Erlang)
なんかださい。
が、なんかとりあえず覚えたこと使ってみようかと思ったのでヨシとしよう。
-module(fizzbuzz). -export([fizzbuzz/1]). -export([fizzbuzz/2]). fizzbuzz(L) -> fizzbuzz(L, []). fizzbuzz([], R) -> lists:reverse(R); fizzbuzz([X|T], R) when X rem 15 =:= 0 -> fizzbuzz(T, [fizzbuzz|R]); fizzbuzz([X|T], R) when X rem 3 =:= 0 -> fizzbuzz(T, [fizz|R]); fizzbuzz([X|T], R) when X rem 5 =:= 0 -> fizzbuzz(T, [buzz|R]); fizzbuzz([X|T], R) -> fizzbuzz(T, [X|R]).
アキュムレータ、ガード、とか。
実行すると
1> c(fizzbuzz). {ok,fizzbuzz} 2> fizzbuzz:fizzbuzz(lists:seq(1,30,1)). [1,2,fizz,4,buzz,fizz,7,8,fizz,buzz,11,fizz,13,14,fizzbuzz, 16,17,fizz,19,buzz,fizz,22,23,fizz,buzz,26,fizz,28,29|...]
しょ・・省略されちまっただ。まあなにもリストで返さなくてもいいんだろうけどリストで作ったもんはリストにしてやりたいとか勝手に思ったり(
まあできてるでしょう多分・・・?
これ、かっこいいなあ(?
- 作者: Joe Armstrong,榊原一矢
- 出版社/メーカー: オーム社
- 発売日: 2008/02/23
- メディア: 単行本(ソフトカバー)
- 購入: 8人 クリック: 284回
- この商品を含むブログ (97件) を見る