38 lines
1007 B
Plaintext
38 lines
1007 B
Plaintext
$ include "seed7_05.s7i";
|
|
|
|
const type: permutations is array array integer;
|
|
|
|
const func permutations: permutations (in array integer: items) is func
|
|
result
|
|
var permutations: permsList is 0 times 0 times 0;
|
|
local
|
|
const proc: perms (in array integer: sequence, in array integer: prefix) is func
|
|
local
|
|
var integer: element is 0;
|
|
var integer: index is 0;
|
|
begin
|
|
if length(sequence) <> 0 then
|
|
for element key index range sequence do
|
|
perms(sequence[.. pred(index)] & sequence[succ(index) ..], prefix & [] (element));
|
|
end for;
|
|
else
|
|
permsList &:= prefix;
|
|
end if;
|
|
end func;
|
|
begin
|
|
perms(items, 0 times 0);
|
|
end func;
|
|
|
|
const proc: main is func
|
|
local
|
|
var array integer: perm is 0 times 0;
|
|
var integer: element is 0;
|
|
begin
|
|
for perm range permutations([] (1, 2, 3)) do
|
|
for element range perm do
|
|
write(element <& " ");
|
|
end for;
|
|
writeln;
|
|
end for;
|
|
end func;
|