RosettaCodeData/Task/Knuth-shuffle/Erlang/knuth-shuffle.erl
2023-07-01 13:44:08 -04: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]}.