1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
function mat4tostr(atab : tab) : String;
var
z : integer;
begin
Result :='';
for z:= low(tab)+1 to high(atab) do
Result := Result+inttoStr(atab[z]);
end;
function mat3tostr(atab : tab) : String;
var
z : integer;
begin
Result :='';
for z:= low(tab) to high(atab) do
Result := Result+inttoStr(atab[z]);
end;
procedure EchangeCar(var Lch: tab; i, j: byte);
var
car: integer;
begin
if i <> j then
begin
car := Lch[i];
Lch[i] := Lch[j];
Lch[j] := car;
end
end;
function mat4tomat3(atab : tab;lg : integer) : tab;
var
i : integer;
begin
setlength(Result,lg);
For i:= 1 to high(atab) do
Result[i-1] :=atab[i];
end;
procedure Permutation(ach:Tab; i: byte;lg : integer;var ASoluce : TabSoluce;var indice : integer);
var
j: byte;
ch:tab;
begin
if i = lg then
begin
ASoluce[indice] := mat4tomat3(ach,lg);//strtomat(ach,lg);
inc(indice);
end
else
for j := i to lg do
begin
EchangeCar(ach,(i),j);
Permutation(ach,(i)+1,lg,ASoluce,indice);
EchangeCar(ach,(i),j);
end;
end;
function factorielle ( n : integer ) : longint ;
begin
if n<2 then
factorielle:=1
else
factorielle:=n*factorielle(n-1)
end;
procedure Setlengthmat(var ASoluce : TabSoluce;nbValue : integer);
var
w : integer;
begin
setlength(ASoluce,factorielle(nbValue-1));
for w:=low(ASoluce) to high(ASoluce) do
setlength(ASoluce[w],nbValue-1);
end;
procedure TForm1.combinaisons(atab : tab ;var ASoluce : TabSoluce);
var
l : byte;
indice : integer;
begin
memo1.Lines.Clear;
l := length(atab);
indice := 0;
Permutation(atab,1,l-1,ASoluce,indice);
end;
procedure TForm1.AfficheTab(ASoluce : TabSoluce);
var
w : integer;
begin
for w := low(ASoluce) to high(ASoluce) do
Memo1.Lines.Add(mat3tostr(ASoluce[w]))
end;
procedure TForm1.Button9Click(Sender: TObject);
var
ch : Tab;
nbValue : integer;
w: integer;
ATabSoluce : TabSoluce;
begin
nbValue := 4;
setlength(ch,nbValue);
ch[0] := 0;
ch[1] := 200;
ch[2] := 5;
ch[3] := 400;
Setlengthmat(ATabSoluce,nbValue);
combinaisons(ch,ATabSoluce);
AfficheTab(ATabSoluce);
end; |
Partager