Text processing/Max licenses in use: Difference between revisions
Content added Content deleted
(Added COBOL solution. Corrected PL/I lang tag.) |
(Added Erlang) |
||
Line 685: | Line 685: | ||
println(` $time`) |
println(` $time`) |
||
}</lang> |
}</lang> |
||
=={{header|Erlang}}== |
|||
<lang Erlang> |
|||
-module( text_processing_max_licenses ). |
|||
-export( [out_dates_from_file/1, task/0] ). |
|||
out_dates_from_file( Name ) -> |
|||
{ok, Binary} = file:read_file( Name ), |
|||
Lines = binary:split( Binary, <<"\n">>, [global] ), |
|||
{_N, Dict} = lists:foldl( fun out_dates/2, {0, dict:new()}, Lines ), |
|||
[{X, dict:fetch(X, Dict)} || X <- dict:fetch_keys( Dict )]. |
|||
task() -> |
|||
[{Max, Dates} | _T] = lists:reverse(lists:sort(out_dates_from_file("mlijobs.txt")) ), |
|||
io:fwrite( "Max licenses was ~p at ~p~n", [Max, Dates] ). |
|||
out_dates( <<>>, Acc ) -> Acc; |
|||
out_dates( Line, {N, Dict} ) -> |
|||
[_License, Direction, <<"@">>, Date | _T] = [X || X <- binary:split(Line, <<" ">>, [global]), X =/= <<>>], |
|||
New_n = out_dates_n( N, Direction ), |
|||
New_dict = out_dates_dict( N, New_n, Date, Dict ), |
|||
{New_n, New_dict}. |
|||
out_dates_dict( N, New_n, Date, Dict ) when N > New_n -> dict:append( N, Date, Dict ); |
|||
out_dates_dict( _N, _New_n, _Date, Dict ) -> Dict. |
|||
out_dates_n( N, <<"OUT">> ) -> N + 1; |
|||
out_dates_n( N, <<"IN">> ) -> N - 1. |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
12> text_processing_max_licenses:task(). |
|||
Max licenses was 99 at [<<"2008/10/03_08:39:45">>,<<"2008/10/03_08:40:47">>] |
|||
</pre> |
|||
=={{header|Euphoria}}== |
=={{header|Euphoria}}== |