fork download
  1. program gfdg;
  2. const n=7;
  3. type mas=array [0..n+1,0..n+1] of byte;
  4. function f(k,i,j:longint; m:mas):boolean;
  5. var m1,m2,m3:mas; t,l:byte;
  6. begin
  7. for t:=0 to (n+1) do for l:=0 to (n+1) do begin m1[t,l]:=m[t,l]; m2[t,l]:=m[t,l]; m3[t,l]:=m[t,l]; end;
  8. if (m[i+1,j]=0) and (m[i,j+1]=0) and (m[i-1,j-1]=0) then
  9. begin
  10. m1[i+1,j]:=1; m2[i,j+1]:=1; m3[i-1,j-1]:=1;
  11. if (k mod 2)=0 then f:=(f(k+1,i+1,j,m1) or f(k+1,i,j+1,m2)) or f(k+1,i-1,j-1,m3);
  12. if (k mod 2)=1 then f:=(f(k+1,i+1,j,m1) and f(k+1,i,j+1,m2)) and f(k+1,i-1,j-1,m3);
  13. end;
  14. if (m[i+1,j]=0) and (m[i,j+1]=0) and (m[i-1,j-1]=1) then
  15. begin
  16. m1[i+1,j]:=1; m2[i,j+1]:=1;
  17. if (k mod 2)=0 then f:=f(k+1,i+1,j,m1) or f(k+1,i,j+1,m2);
  18. if (k mod 2)=1 then f:=f(k+1,i+1,j,m1) and f(k+1,i,j+1,m2);
  19. end;
  20. if (m[i+1,j]=0) and (m[i,j+1]=1) and (m[i-1,j-1]=0) then
  21. begin
  22. m1[i+1,j]:=1; m3[i-1,j-1]:=1;
  23. if (k mod 2)=0 then f:=f(k+1,i+1,j,m1) or f(k+1,i-1,j-1,m3);
  24. if (k mod 2)=1 then f:=f(k+1,i+1,j,m1) and f(k+1,i-1,j-1,m3);
  25. end;
  26. if (m[i+1,j]=1) and (m[i,j+1]=0) and (m[i-1,j-1]=0) then
  27. begin
  28. m2[i,j+1]:=1; m3[i-1,j-1]:=1;
  29. if (k mod 2)=0 then f:=f(k+1,i,j+1,m2) or f(k+1,i-1,j-1,m3);
  30. if (k mod 2)=1 then f:=f(k+1,i,j+1,m2) and f(k+1,i-1,j-1,m3);
  31. end;
  32. if (m[i+1,j]=1) and (m[i,j+1]=1) and (m[i-1,j-1]=0) then
  33. begin
  34. m3[i-1,j-1]:=1;
  35. f:=f(k+1,i-1,j-1,m3);
  36. end;
  37. if (m[i+1,j]=1) and (m[i,j+1]=0) and (m[i-1,j-1]=1) then
  38. begin
  39. m2[i,j+1]:=1;
  40. f:=f(k+1,i,j+1,m2);
  41. end;
  42. if (m[i+1,j]=0) and (m[i,j+1]=1) and (m[i-1,j-1]=1) then
  43. begin
  44. m1[i+1,j]:=1;
  45. f:=f(k+1,i+1,j,m1);
  46. end;
  47. if (m[i+1,j]=1) and (m[i,j+1]=1) and (m[i-1,j-1]=1) then
  48. begin
  49. if (k mod 2)=0 then f:=false else f:=true;
  50. end;
  51. end;
  52. var m0,rez:mas; i3,j3,i0,j0:byte;
  53. begin
  54. for i3:=1 to n do
  55. for j3:=1 to n do
  56. begin
  57. for i0:=1 to n do
  58. for j0:=1 to n do
  59. m0[i0,j0]:=0;
  60. for i0:=0 to (n+1) do begin m0[i0,0]:=1; m0[i0,n+1]:=1; m0[0,i0]:=1; m0[n+1,i0]:=1;end;
  61. m0[i3,j3]:=1;
  62. if f(0,i3,j3,m0) then rez[i3,j3]:=1 else rez[i3,j3]:=2;
  63. end;
  64. for i0:=1 to n do
  65. begin writeln('');
  66. for j0:=1 to n do write(rez[i0,j0],' ');
  67. end;
  68. end.
Success #stdin #stdout 0.11s 4392KB
stdin
Standard input is empty
stdout
2 1 2 1 2 1 2 
1 1 1 1 1 1 1 
2 1 2 1 2 1 2 
1 1 1 1 2 1 2 
2 1 2 2 2 1 2 
1 1 1 1 1 1 1 
2 1 2 2 2 1 2