This commit is contained in:
Ingy döt Net 2013-10-27 22:24:23 +00:00
parent 6f050a029e
commit 776bba907c
3887 changed files with 59894 additions and 7280 deletions

View 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"}.

View file

@ -1,5 +1,7 @@
def sortTable(data:List[List[String]], ordering:(String, String)=>Boolean =(_<_),
column:Int =0, reverse:Boolean =false)={
val result=data.sortWith((a, b)=> ordering(a(column), b(column)))
if(reverse) result.reverse else result
}
def sortTable(data: List[List[String]],
ordering: (String, String) => Boolean = (_ < _),
column: Int = 0,
reverse: Boolean = false) = {
val result = data.sortWith((a, b) => ordering(a(column), b(column)))
if (reverse) result.reverse else result
}