program pathways;
uses crt;
{Alex Vasilyev
JR5
Enloe High School
Contest #4
Potter}
type
str55=array[1..5,1..5] of string[1];
var
nodeinput,pathinput,path,temppath,found:string;
nodes,check:str55;
startr,startc,finishr,finishc:longint;
a,r,c:integer;
function
inttostr(i:longint):string;
var
s:string;
begin
str(i,s);
inttostr:=s;
end;
function
strtoint(s:string):longint;
var
i,code:integer;
begin
val(s,i,code);
strtoint:=i;
end;
procedure pathmaker(var
path,found:string; temppath:string; var check:str55; nodes:str55;
r,c,finishr,finishc:longint);
begin
check[r,c]:='y';
temppath:=temppath+inttostr(r)+','+inttostr(c)+' ';
if (r=finishr) and (c=finishc) then
begin
found:='y';
path:=temppath;
end
else
begin
if (r>=2) and
(c>=2) and (nodes[r-1,c-1]='x') and (check[r-1,c-1]='n') then
pathmaker(path,found,temppath,check,nodes,r-1,c-1,finishr,finishc);
if (r>=2) and
(c>=1) and (nodes[r-1,c]='x') and (check[r-1,c]='n') then
pathmaker(path,found,temppath,check,nodes,r-1,c,finishr,finishc);
if (r>=2) and
(c<=4) and (nodes[r-1,c+1]='x') and (check[r-1,c+1]='n') then
pathmaker(path,found,temppath,check,nodes,r-1,c+1,finishr,finishc);
if (r>=1) and
(c>=2) and (nodes[r,c-1]='x') and (check[r,c-1]='n') then
pathmaker(path,found,temppath,check,nodes,r,c-1,finishr,finishc);
if (r>=1) and (c<=4)
and (nodes[r,c+1]='x') and (check[r,c+1]='n') then
pathmaker(path,found,temppath,check,nodes,r,c+1,finishr,finishc);
if (r<=4) and
(c>=2) and (nodes[r+1,c-1]='x') and (check[r+1,c-1]='n') then
pathmaker(path,found,temppath,check,nodes,r+1,c-1,finishr,finishc);
if (r<=4) and
(c>=1) and (nodes[r+1,c]='x') and (check[r+1,c]='n') then
pathmaker(path,found,temppath,check,nodes,r+1,c,finishr,finishc);
if (r<=4) and (c<=4) and
(nodes[r+1,c+1]='x') and (check[r+1,c+1]='n') then
pathmaker(path,found,temppath,check,nodes,r+1,c+1,finishr,finishc);
end;
end;
begin
textcolor(white);
textbackground(black);
clrscr;
write('Enter node locations: ');
readln(nodeinput);
a:=1;
repeat
if
(nodeinput[a]<>'0') then
begin
r:=strtoint(nodeinput[a]);
c:=strtoint(nodeinput[a+2]);
nodes[r,c]:='x';
a:=a+4;
end;
until (nodeinput[a]='0');
writeln;
for r:= 1 to 5 do
begin
for c:= 1 to 5 do
begin
if (nodes[r,c]<>'x') then nodes[r,c]:=' ';
write(nodes[r,c]);
end;
writeln;
end;
writeln;
for a:= 1 to 5 do
begin
path:='';
temppath:='';
found:='n';
for r:= 1 to 5 do for c:= 1 to 5 do check[r,c]:='n';
write('Input ',a,': ');
readln(pathinput);
writeln;
startr:=strtoint(pathinput[1]);
startc:=strtoint(pathinput[3]);
r:=startr;
c:=startc;
finishr:=strtoint(pathinput[5]);
finishc:=strtoint(pathinput[7]);
pathmaker(path,found,temppath,check,nodes,r,c,finishr,finishc);
if (found='n') then path:='NONE';
writeln('Output ',a,': ',path);
writeln;
end;
readln;
end.