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:
| function TF.drehe(s: string; k: integer): string; var s1: string; begin case length(s) of 0: result := ''; 1: result := s; else begin s1 := copy(s,1,k); result := copy(s,k+1,length(s)-k)+s1; end; end; end;
function TF.perm(s: string; k: integer): string; var i, n, m,j,y: integer; begin for i := 1 to length(s) do begin s := copy(s,1,0) + drehe(s,1); lb.Items.Add(s); if length(s)>2 then for n := 1 to length(s)-1 do begin s := copy(s,1,1) + drehe(copy(s,2,length(s)-1),1); lb.Items.Add(s); if length(s)>3 then for m := 1 to length(s)-2 do begin s := copy(s,1,2) + drehe(copy(s,3,length(s)-2),1); lb.Items.Add(s); if length(s)>4 then for j := 1 to length(s)-3 do begin s := copy(s,1,3) + drehe(copy(s,4,length(s)-3),1); lb.Items.Add(s); if length(s)>5 then for y := 1 to length(s)- 4 do begin s := copy(s,1,4) + drehe(copy(s,5,length(s)-4),1); lb.Items.Add(s); end; end; end; end; end; result := s; end;
procedure TF.Button1Click(Sender: TObject); begin lb.Clear; perm(edit1.text,0); end; |