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:
| Function IsValid(Const x,y,z: Integer): Integer; Begin If (x >= Low(Mitte)) And (x <= High(Mitte)) And (y >= Low(Mitte[x])) And (y <= High(Mitte[x])) Then Result:= Mitte[x,y,z] Else Result:= 0; End;
Function GetLongestLine(x,y,Tiefe: Integer): Boolean; Var Zwischen: Boolean; Begin Result:= False; Zwischen:= False;
try Mitte[x,y,1]:= 0; If IsValid(x-1,y-1,0) = 1 Then Zwischen:= GetLongestLine(x-1,y-1,Tiefe+1); If IsValid(x ,y-1,0) = 1 Then Zwischen:= GetLongestLine(x ,y-1,Tiefe+1) Or Zwischen; If IsValid(x+1,y-1,0) = 1 Then Zwischen:= GetLongestLine(x+1,y-1,Tiefe+1) Or Zwischen; If IsValid(x-1,y ,0) = 1 Then Zwischen:= GetLongestLine(x-1,y ,Tiefe+1) Or Zwischen; except on E: Exception do Writeln(E.Message, E.HelpContext); end;
If Tiefe > Laenge Then Begin Laenge:= Tiefe; Zwischen:= True; End;
If Zwischen Then Begin Mitte[x,y,1]:= 2; Result:= True; End; End; |