Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Task3seria13;
- {$APPTYPE CONSOLE}
- {$MAXSTACKSIZE 64000000}
- uses
- SysUtils;
- var
- 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;
- mark: array [1..64] of integer;
- q:array [1..64] of integer;
- a:array [1..64] of array [1..64] of integer;
- degree:array [1..64]of integer;
- len:array [1..64]of integer;
- s1,s2:string;
- pr:array [1..64] of Integer;
- put:array [1..64] of Integer;
- ziferka,bukva:char;
- begin
- reset(input,'knight.in');
- rewrite(output,'knight.out');
- for i:=1 to 64 do
- begin
- pr[i]:=0;
- end;
- for i:=1 to 64 do
- begin
- put[i]:=0;
- end;
- readln(s1);
- readln(s2);
- bukva1:=ord(s1[1])-ord('a')+1; //ïåðåâîäèì áóêîâêè â öèôåðêè
- bukva2:=ord(s2[1])-ord('a')+1;
- z1:=ord(s1[2])-ord('0'); //ïåðåâîäèì ñèìâîëû öèôåðîê â öèôåðêè
- z2:=ord(s2[2])-ord('0');
- C1:=(z1-1)*8+bukva1;
- C2:=(z2-1)*8+bukva2;
- for p1:=1 to 64 do
- begin
- for p2:=1 to 64 do
- begin
- if ((Abs(p1-p2)=15)) or (Abs(p1-p2)=10) or ((Abs(p1-p2)=6)) or (Abs(p1-p2)=17) then
- begin
- x1:=(p1 div 8)+1;
- y1:=(p1 mod 8);
- x2:=(p2 div 8)+1;
- y2:=(p2 mod 8);
- 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;
- end;
- end;
- end;
- first:=1;
- last:= 1;
- q[1]:=C1;
- mark[C1]:=1;
- while first<=last do
- begin
- for v:=1 to 64 do
- begin
- if (a[q[first]][v]=1) and (mark[v]=0) then
- begin
- mark[v]:=mark[q[first]]+1;
- last:=last+1;
- q[last]:=v;
- pr[v]:=q[first];
- end;
- end;
- first:=first+1;
- end;
- C11:=C1;
- i:=1;
- put[i]:=C2;
- i:=i+1;
- f:=C2;
- while f<>C11 do
- begin
- put[i]:=pr[f];
- f:=pr[f];
- i:=i+1;
- end;
- for j:=i-1 downto 1 do
- begin
- ziferka:= chr(ord('0') + (put[j] div 8) + 1);//char
- bukva:=chr(ord('a')-1 + (put[j] mod 8));//char
- writeln(bukva,ziferka);
- end;
- //readln;
- //readln;
- close(input);
- close(output);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement