0〜1000に含まれる0をカウントする
練習 - krystal: プログラミング超初心者(文系) - Rubyist via 0〜1000に含まれる0をカウントする - http://rubikitch.com/に移転しました
30分プログラム、その414。0から1000までの0の個数を数えてみる。
せっかくのErlangなのでmapreduceで。mapreduceのコードはProgramming Erlangのサンプルコードを流用した。(Source Code | The Pragmatic Bookshelf)
使い方
1> count_zero:count_zero(lists:seq(0,1000)). 193
ソースコード
-module(count_zero). -compile([export_all]). %% F1(Pid, X) -> sends {Key,Val} messages to Pid count(Pid,0) -> Pid ! {0,1}; count(_Pid,N) when N < 10 -> void; count(Pid,N) -> count(Pid,N rem 10), count(Pid,N div 10). %% F2(Key, [Val], AccIn) -> AccOut sum(_Key,L,_AccIn) -> lists:sum(L). count_zero(L) -> phofs:mapreduce(fun count/2, fun sum/3, 0, L).