- -module(t).
- -compile(export_all).
- get_same_seq() ->
- {ok, F} = file:open("in.txt", [binary, read]),
- all_line(F).
- all_line(F) ->
- case io:get_line(F, "") of
- eof -> file:close(F);
- L ->
- Line = binary:replace(L, <<"\n">>, <<>>),
- [N | V] = binary:split(Line, <<" ">>, [global]),
- case ets:lookup(sum, N) of
- [{N, Old}] ->
- New = [all_line_1(V1) || V1 <- V],
- %[V1,V2,V3,V4,V5,V6] = Old,
- %io:format("Old: ~p ~p ~p ~p ~p ~p ~n",[V1,V2,V3,V4,V5,V6]),
- Add = lists:zipwith(fun (C1, C2) ->
- list_to_integer(C1) +
- list_to_integer(C2)
- end,
- New, Old),
- Add1 = [all_line_2(V2) || V2 <- Add],
- ets:insert(sum, {N, Add1});
- [] ->
- Init = [all_line_3(V3) || V3 <- V],
- ets:insert(sum, {N, Init})
- end,
- all_line(F)
- end.
- all_line_1(A1) -> binary_to_list(A1).
- all_line_2(_T) -> integer_to_list(_T).
- all_line_3(A1) -> binary_to_list(A1).
- p([H | T]) ->
- case H of
- {N, [V1, V2, V3, V4, V5, V6]} ->
- io:format("~p: ~p ~p ~p ~p ~p ~p ~n",
- [N, V1, V2, V3, V4, V5, V6]);
- {<<>>, []} -> skip
- end,
- p(T);
- p([]) -> done.
- main() ->
- ets:new(sum,
- [named_table, public, {write_concurrency, true}]),
- get_same_seq(),
- Result = ets:tab2list(sum),
- p(Result).
复制代码 |