Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
39
Task/Optional-parameters/Erlang/optional-parameters.erl
Normal file
39
Task/Optional-parameters/Erlang/optional-parameters.erl
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
-module( optional_parameters ).
|
||||
|
||||
-export( [sort/2, task/0] ).
|
||||
|
||||
sort( Table, Options ) ->
|
||||
Ordering = proplists:get_value( ordering, Options, lexicographic ),
|
||||
Column = proplists:get_value( column, Options, 1 ),
|
||||
Is_reverse = proplists:get_value( reverse, Options, false ),
|
||||
Sorted = sort( Table, Ordering, Column ),
|
||||
sorted_reverse( Is_reverse, Sorted ).
|
||||
|
||||
task() ->
|
||||
io:fwrite( "sort defaults ~p~n", [sort( table(), [])] ),
|
||||
io:fwrite( "reverse ~p~n", [sort( table(), [reverse])] ),
|
||||
io:fwrite( "sort column 3 ~p~n", [sort( table(), [{column, 3}])] ),
|
||||
io:fwrite( "reverse ~p~n", [sort( table(), [{column, 3}, reverse])] ),
|
||||
io:fwrite( "sort numeric ~p~n", [sort( table(), [{ordering, numeric}])] ),
|
||||
io:fwrite( "reverse ~p~n", [sort( table(), [{ordering, numeric}, reverse])] ).
|
||||
|
||||
|
||||
|
||||
row_numeric( Tuple ) -> erlang:list_to_tuple( [{erlang:list_to_integer(X), X} || X <- erlang:tuple_to_list(Tuple)] ).
|
||||
|
||||
row_remove_numeric( Tuple ) -> erlang:list_to_tuple( [Y || {_X, Y} <- erlang:tuple_to_list(Tuple)] ).
|
||||
|
||||
sort( Table, lexicographic, Column ) -> lists:keysort( Column, Table );
|
||||
sort( Table, numeric, Column ) ->
|
||||
Numeric_table = [row_numeric(X) || X <- Table],
|
||||
Sorted_numeric = lists:keysort( Column, Numeric_table ),
|
||||
[row_remove_numeric(X) || X <- Sorted_numeric].
|
||||
|
||||
sorted_reverse( true, Sorted ) -> lists:reverse( Sorted );
|
||||
sorted_reverse( false, Sorted ) -> Sorted.
|
||||
|
||||
table() -> [table_row1(), table_row2(), table_row3()].
|
||||
|
||||
table_row1() -> {"123", "456", "0789"}.
|
||||
table_row2() -> {"456", "0789", "123"}.
|
||||
table_row3() -> {"0789", "123", "456"}.
|
||||
Loading…
Add table
Add a link
Reference in a new issue