Advertisement
Guest User

Untitled

a guest
Nov 26th, 2015
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. program Task3seria13;
  2. {$APPTYPE CONSOLE}
  3. {$MAXSTACKSIZE 64000000}
  4. uses
  5. SysUtils;
  6.  
  7. var
  8. n,s,m,i,j,v,first,last,x,max,ww,w,bukva1,bukva2,f,C1,C2,C11,C22,z1,z2,p1,p2,x1,x2,y1,y2:integer;
  9.  
  10. mark: array [1..64] of integer;
  11. q:array [1..64] of integer;
  12. a:array [1..64] of array [1..64] of integer;
  13. degree:array [1..64]of integer;
  14. len:array [1..64]of integer;
  15. s1,s2:string;
  16. pr:array [1..64] of Integer;
  17. put:array [1..64] of Integer;
  18. ziferka,bukva:char;
  19.  
  20.  
  21. begin
  22. reset(input,'knight.in');
  23. rewrite(output,'knight.out');
  24.  
  25. for i:=1 to 64 do
  26. begin
  27. pr[i]:=0;
  28. end;
  29. for i:=1 to 64 do
  30. begin
  31. put[i]:=0;
  32. end;
  33.  
  34. readln(s1);
  35. readln(s2);
  36. bukva1:=ord(s1[1])-ord('a')+1; //ïåðåâîäèì áóêîâêè â öèôåðêè
  37. bukva2:=ord(s2[1])-ord('a')+1;
  38. z1:=ord(s1[2])-ord('0'); //ïåðåâîäèì ñèìâîëû öèôåðîê â öèôåðêè
  39. z2:=ord(s2[2])-ord('0');
  40.  
  41. C1:=(z1-1)*8+bukva1;
  42. C2:=(z2-1)*8+bukva2;
  43.  
  44. for p1:=1 to 64 do
  45. begin
  46. for p2:=1 to 64 do
  47. begin
  48. if ((Abs(p1-p2)=15)) or (Abs(p1-p2)=10) or ((Abs(p1-p2)=6)) or (Abs(p1-p2)=17) then
  49. begin
  50. x1:=(p1 div 8)+1;
  51. y1:=(p1 mod 8);
  52. x2:=(p2 div 8)+1;
  53. y2:=(p2 mod 8);
  54. if ((abs(x1-x2) = 2) and (abs(y1-y2) = 1)) or ((abs(x1-x2) = 1) and (abs(y1-y2) = 2)) then a[p1,p2]:=1;
  55. end;
  56. end;
  57. end;
  58.  
  59. first:=1;
  60. last:= 1;
  61. q[1]:=C1;
  62. mark[C1]:=1;
  63.  
  64. while first<=last do
  65. begin
  66. for v:=1 to 64 do
  67. begin
  68. if (a[q[first]][v]=1) and (mark[v]=0) then
  69. begin
  70. mark[v]:=mark[q[first]]+1;
  71. last:=last+1;
  72. q[last]:=v;
  73. pr[v]:=q[first];
  74. end;
  75. end;
  76. first:=first+1;
  77. end;
  78.  
  79. C11:=C1;
  80. i:=1;
  81. put[i]:=C2;
  82. i:=i+1;
  83. f:=C2;
  84. while f<>C11 do
  85. begin
  86. put[i]:=pr[f];
  87. f:=pr[f];
  88. i:=i+1;
  89. end;
  90.  
  91. for j:=i-1 downto 1 do
  92. begin
  93. ziferka:= chr(ord('0') + (put[j] div 8) + 1);//char
  94. bukva:=chr(ord('a')-1 + (put[j] mod 8));//char
  95. writeln(bukva,ziferka);
  96. end;
  97.  
  98. //readln;
  99. //readln;
  100.  
  101. close(input);
  102. close(output);
  103. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement