匿名 #7753(2008/10/04 12:41 GMT) [ Erlang ] Rating0/0=0.00
実行方法: $ cat hoge.txt ID Surname Forename Age 1 Sato Hanako 17 0 Suzuki Taro 18 $ erlc doukaku7723.erl $ erl -noshell -s doukaku7723 main hoge.txt -s init stop ID Forename Surname Age 0 Taro Suzuki 19 1 Hanako Sato 18
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
-module(doukaku7723). -export([main/1]). main(Filename) -> {ok, Bin} = file:read_file(Filename), A1 = string:tokens(binary_to_list(Bin), "\r\n"), [H | T] = lists:map(curry(flip(fun string:tokens/2), "\t"), A1), A2 = lists:map(fun swap23inc4/1, T), A3 = lists:sort(fun([E1|_], [E2|_]) -> list_to_integer(E1) < list_to_integer(E2) end, A2), A4 = lists:map(func_comp(fun lists:concat/1, curry(fun intersperse/2, "\t")), [swap23(H) | A3]), A5 = lists:concat(intersperse("\r\n", A4)), io:format("~s~n", [A5]). swap23([A,B,C,D | Rest]) -> [A,C,B,D|Rest]. swap23inc4([A,B,C,D | Rest]) -> [A,C,B,integer_to_list(1+list_to_integer(D)) | Rest]. intersperse(_, []) -> []; intersperse(_, [X]) -> [X]; intersperse(Sep, [X | XS]) -> [X, Sep | intersperse(Sep, XS)]. curry(F, A) -> fun(B) -> F(A, B) end. flip(F) -> fun(A, B) -> F(B, A) end. func_comp(F, G) -> fun(X) -> F(G(X)) end.
Rating0/0=0.00-0+
[ reply ]
匿名
#7753()
[
Erlang
]
Rating0/0=0.00
-module(doukaku7723). -export([main/1]). main(Filename) -> {ok, Bin} = file:read_file(Filename), A1 = string:tokens(binary_to_list(Bin), "\r\n"), [H | T] = lists:map(curry(flip(fun string:tokens/2), "\t"), A1), A2 = lists:map(fun swap23inc4/1, T), A3 = lists:sort(fun([E1|_], [E2|_]) -> list_to_integer(E1) < list_to_integer(E2) end, A2), A4 = lists:map(func_comp(fun lists:concat/1, curry(fun intersperse/2, "\t")), [swap23(H) | A3]), A5 = lists:concat(intersperse("\r\n", A4)), io:format("~s~n", [A5]). swap23([A,B,C,D | Rest]) -> [A,C,B,D|Rest]. swap23inc4([A,B,C,D | Rest]) -> [A,C,B,integer_to_list(1+list_to_integer(D)) | Rest]. intersperse(_, []) -> []; intersperse(_, [X]) -> [X]; intersperse(Sep, [X | XS]) -> [X, Sep | intersperse(Sep, XS)]. curry(F, A) -> fun(B) -> F(A, B) end. flip(F) -> fun(A, B) -> F(B, A) end. func_comp(F, G) -> fun(X) -> F(G(X)) end.Rating0/0=0.00-0+
[ reply ]