Registriert seit: 16. Mär 2004
2.287 Beiträge
|
Re: magisches quadrat, brauch ne idee...
14. Okt 2004, 19:56
Sooo...nach einigem überlegen, um- und neuschreiben ist nun folgender code rausgekommen:
Delphi-Quellcode:
procedure TForm1.setfield;
var i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16:integer;
begin
for i1:=1 to 16 do begin
quadrat[1,1]:=getunusedzahl(1,i1);
for i2:=1 to 15 do begin
quadrat[1,2]:=getunusedzahl(2,i2);
for i3:=1 to 14 do begin
quadrat[1,3]:=getunusedzahl(3,i3);
for i4:=1 to 13 do begin
quadrat[1,4]:=getunusedzahl(4,i4);
//vorzeitiger stop bei falscher reihe für bessere performance
if (quadrat[1,1]+quadrat[1,2]+quadrat[1,3]+quadrat[1,4]=34) then
begin
for i5:=1 to 12 do begin
quadrat[2,1]:=getunusedzahl(5,i5);
for i6:=1 to 11 do begin
quadrat[2,2]:=getunusedzahl(6,i6);
for i7:=1 to 10 do begin
quadrat[2,3]:=getunusedzahl(7,i7);
for i8:=1 to 9 do begin
quadrat[2,4]:=getunusedzahl(8,i8);
//s.o.
if (quadrat[2,1]+quadrat[2,2]+quadrat[2,3]+quadrat[2,4]=34) then
begin
for i9:=1 to 8 do begin
quadrat[3,1]:=getunusedzahl(9,i9);
for i10:=1 to 7 do begin
quadrat[3,2]:=getunusedzahl(10,i10);
for i11:=1 to 6 do begin
quadrat[3,3]:=getunusedzahl(11,i11);
for i12:=1 to 5 do begin
quadrat[3,4]:=getunusedzahl(12,i12);
//s.o.
if (quadrat[3,1]+quadrat[3,2]+quadrat[3,3]+quadrat[3,4]=34) then
begin
for i13:=1 to 4 do begin
quadrat[4,1]:=getunusedzahl(13,i13);
for i14:=1 to 3 do begin
quadrat[4,2]:=getunusedzahl(14,i14);
for i15:=1 to 2 do begin
quadrat[4,3]:=getunusedzahl(15,i15);
for i16:=1 to 1 do begin
quadrat[4,4]:=getunusedzahl(16,i16);
//s.o.
if (quadrat[4,1]+quadrat[4,2]+quadrat[4,3]+quadrat[4,4]=34) then
begin
if (isCorrect) and (ListBox1.Items.IndexOf(getfieldstring)=-1)
then ListBox1.Items.Add(getfieldstring);
end;
end;
end;
end;
//status
Label2.Caption:=getfieldstring;
Application.ProcessMessages;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
sieht schlimm aus, isses aber nicht
hat einer noch vorschläge wies noch schneller geht?
oder wie mans doch rekursiv machen kann?
[*weg damit*] und noch was: ich hab irgendwie mal ergebnisse bis zu 20fach bekommen....
[*weg damit*] weiss einer warum? (oder war das noch ein anderer code? )
es war ein anderer code
»Unlösbare Probleme sind in der Regel schwierig...«
|