Sha256: ea42da735b404bae97aa25248926003b2c553fd5621063b674051b4ef23058ab

Contents?: true

Size: 805 Bytes

Versions: 84

Compression:

Stored size: 805 Bytes

Contents

-module( parallel_letter_frequency ).

-export( [dict/1] ).

dict( Texts ) ->
  Pids = [letter_frequency(X) || X <- Texts],
  Dicts = [receive_dict(X) || X <- Pids],
  merge_dicts( Dicts ).



letter_frequency( String ) ->
  My_pid = erlang:self(),
  erlang:spawn( fun() -> My_pid ! {erlang:self(), letter_freqency_dict(String)} end ).

letter_freqency_dict( String ) ->
  lists:foldl( fun letter_freqency_dict/2, dict:new(), String ).

letter_freqency_dict( Character, Dict ) -> dict:update_counter( Character, 1, Dict ).

merge_dicts( [Dict | Dicts] ) ->
  lists:foldl( fun merge_dicts/2, Dict, Dicts ).

merge_dicts( Dict, Acc ) -> dict:merge( fun merge_dicts/3, Dict, Acc ).

merge_dicts( _Key, Value, Acc_value ) -> Value + Acc_value.

receive_dict( Pid ) ->
  receive
    {Pid, Dict} -> Dict
  end.

Version data entries

84 entries across 84 versions & 1 rubygems

Version Path
trackler-2.0.6.28 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.27 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.26 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.25 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.24 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.23 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.22 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.21 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.20 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.19 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.18 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.17 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.16 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.15 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.14 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.13 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.12 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.11 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.10 tracks/erlang/exercises/parallel-letter-frequency/example.erl
trackler-2.0.6.9 tracks/erlang/exercises/parallel-letter-frequency/example.erl