Falls du es dennoch versuchen willst:
Delphi-Quellcode:
procedure resultready(x,y:integer;result:array of integer);
var
a:array of array of integer;
i,j:integer;
text:string;
begin
setlength(a,x,y);
for i:=0 to length(result)-1 do
a[i div x,i mod x]:=result[i];
// Jetzt ist in a das Quadrat gespeichert. a[0,0] ruft die linke obere Ecke ab.
// a[x-1,y-1] ruft die rechte untere Ecke ab.
for i:=0 to x-1 do begin
text:=text+#13'|';
for j:=0 to y-1 do
text:=text+inttostr(a[i,j])+'|';
end;
showmessage('got result:'#13+text);
end;
procedure dynamicalfor(x,y,calls,reps:integer;params:array of integer);
var
paramsnew:array of integer;
i:integer;
begin
if calls>0 then begin
setlength(paramsnew,length(params)+1);
for i:=0 to length(params)-1 do
paramsnew[i]:=params[i];
for i:=1 to reps do begin
paramsnew[length(paramsnew)-1]:=i;
dynamicalfor(x,y,calls-1,reps,paramsnew);
end;
end else begin
resultready(x,y,params);
end;
end;
procedure startcall(x,y,zahlenmoeglichkeiten:integer);
var
a:array of integer;
begin
setlength(a,0);
dynamicalfor(x,y,x*y,zahlenmoeglichkeiten,a);
end;
der Vorgang wird mit der Funktion startcall gestartet. In resultready können dann die einzelnen Ergebinsse verarbeitet werden. Über x/y wird die Rechtecksgröße angegeben, in deinem Fall also 9 und 9. In zahlenmöglichkeiten wird die Anzahl der Zahlen angegeben, di e eingesetzt werden. Bei dir sind das 1-9, also heisst es 9.
hm... der algo funzt nicht so... weiss jemand warum? [edit]mit dem neuen Code funktioniert's jetzt[/edit]
Diese rekursive Methode ist etwa 100 mal langsamer als die, die ich oben beschrieben habe, aber dafür kann sie für jede Zahl verwendet werden.