RosettaCodeData/Task/Knuth-shuffle/Pascal/knuth-shuffle.pascal

53 lines
805 B
Plaintext

program Knuth;
const
startIdx = -5;
max = 11;
type
tmyData = string[9];
tmylist = array [startIdx..startIdx+max-1] of tmyData;
procedure InitList(var a: tmylist);
var
i: integer;
Begin
for i := Low(a) to High(a) do
str(i:3,a[i])
end;
procedure shuffleList(var a: tmylist);
var
i,k : integer;
tmp: tmyData;
begin
for i := High(a)-low(a) downto 1 do begin
k := random(i+1) + low(a);
tmp := a[i+low(a)]; a[i+low(a)] := a[k]; a[k] := tmp
end
end;
procedure DisplayList(const a: tmylist);
var
i : integer;
Begin
for i := Low(a) to High(a) do
write(a[i]);
writeln
end;
{ Test and display }
var
a: tmylist;
i: integer;
begin
randomize;
InitList(a);
DisplayList(a);
writeln;
For i := 0 to 4 do
Begin
shuffleList(a);
DisplayList(a);
end;
end.