RosettaCodeData/Task/Knuth-shuffle/Erlang/knuth-shuffle.erl
Ingy döt Net 776bba907c Sync
2013-10-27 22:24:23 +00:00

14 lines
327 B
Erlang

-module( knuth_shuffle ).
-export( [list/1] ).
list( Inputs ) ->
N = erlang:length( Inputs ),
{[], Acc} = lists:foldl( fun random_move/2, {Inputs, []}, lists:reverse(lists:seq(1, N)) ),
Acc.
random_move( N, {Inputs, Acc} ) ->
Item = lists:nth( random:uniform(N), Inputs ),
{lists:delete(Item, Inputs), [Item | Acc]}.