fork download
  1. {$MODE OBJFPC}{$LONGSTRINGS ON}
  2.  
  3. type
  4. TArray = array [0 .. 4, 0 .. 4] of Integer;
  5.  
  6. procedure Fill(out AArray: TArray; AX, AY, AValue, AStep: Integer);
  7. begin
  8. if 5 in [AX, AY] then Exit;
  9.  
  10. AArray[AX, AY] := AValue;
  11.  
  12. if AValue in [0, 5] then
  13. AStep *= -1;
  14.  
  15. Fill(AArray, AX, AY + 1, AValue + AStep, AStep);
  16.  
  17. if AY = 0 then
  18. Fill(AArray, AX + 1, AY, AValue + AStep, AStep);
  19. end;
  20.  
  21. procedure Show(const AArray: TArray);
  22. var
  23. X, Y: Integer;
  24. begin
  25. for Y in [0 .. 4] do
  26. begin
  27. for X in [0 .. 4] do
  28. Write(AArray[X, Y]:2);
  29.  
  30. WriteLn();
  31. end;
  32. end;
  33.  
  34. var
  35. MyArray: TArray;
  36. begin
  37. Fill(MyArray, 0, 0, 1, 1);
  38. Show(MyArray);
  39. end.
  40.  
Success #stdin #stdout 0s 336KB
stdin
Standard input is empty
stdout
 1 2 3 4 5
 2 3 4 5 4
 3 4 5 4 3
 4 5 4 3 2
 5 4 3 2 1