committing to cleanup
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
-module(duml).
|
||||
-export([shuffle/1]).
|
||||
|
||||
shuffle([]) ->
|
||||
[];
|
||||
shuffle([X]) ->
|
||||
[X];
|
||||
shuffle(Items) ->
|
||||
N = rand:uniform(length(Items)),
|
||||
{Nth, Rest} = inverse_nth(N, Items),
|
||||
[Nth | shuffle(Rest)].
|
||||
|
||||
inverse_nth(N, Items) ->
|
||||
inverse_nth([], N, Items).
|
||||
|
||||
inverse_nth(Stk, 1, [X | Rest]) ->
|
||||
{X, lists:reverse(Stk, Rest)};
|
||||
inverse_nth(Stk, N, [X | Rest]) when N > 1 ->
|
||||
inverse_nth([X | Stk], N-1, Rest).
|
||||
Reference in New Issue
Block a user