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.