Registriert seit: 16. Mär 2004
2.287 Beiträge
|
Re: Kreuzworträtsel und Rekursion
22. Jul 2005, 13:13
hmm, also spontan würde ich das so machen:
Delphi-Quellcode:
type
TArr = array [1..5,1..5] of char;
function Getwords(Arr: TArr; x,y, xchange, ychange:Integer):TStringList;
var Temp:String;
begin
Result.Clear;
Temp:='';
while (x<6) and (x>0) and (y<6) and (y>0) do
begin
Temp:=Temp+Arr[x,y];
Result.Add(Temp);
x:=x+xchange;
y:=y+ychange;
end;
end;
procedure GetAll(Arr: TArr; var Words: TStringList);
var x,y:Integer;
begin
for x:=1 to 5 do
for y:=1 to 5 do
begin
Words.AddStrings(GetWords(Arr,x,y,1,0)); //rechts
Words.AddStrings(GetWords(Arr,x,y,-1,0)); //links
Words.AddStrings(GetWords(Arr,x,y,0,1)); //unten
Words.AddStrings(GetWords(Arr,x,y,0,-1)); //oben
Words.AddStrings(GetWords(Arr,x,y,1,1)); //rechts unten
Words.AddStrings(GetWords(Arr,x,y,1,-1)); //rechts oben
Words.AddStrings(GetWords(Arr,x,y,-1,1)); //links unten
Words.AddStrings(GetWords(Arr,x,y,-1,-1));//links oben
end;
end;
es sind mit sicherheit noch fehler drin (kann man tstringlist als result machen?), ich erstelle keine einzige klasse, aber vom prinzip sollte es gehen...
es werden von allen punkten aus alle kombis aufgelistet die es gibt.
das sind viele
»Unlösbare Probleme sind in der Regel schwierig...«
|