perm filename NITE[1,VDS] blob sn#069742 filedate 1973-11-01 generic text, type T, neo UTF8
00100	SPECIAL PATH,PATHLENGTH,DIM1,DIM2;
00200	EXPR PROCEED();
00300	  BEGIN
00400	  IF CHOICE(2)=2 THEN GO FAIL;
00500	  PRINTSTR ("FIRST DIMENSION: ");
00600	  DIM1←READ();
00700	  PRINTSTR ("SECOND DIMENSION: ");
00800	  DIM2←READ();
00900	  GOALLENGTH←DIM1*DIM2;
01000	  PRINTSTR ("STARTING SQUARE: ");
01100	  PATH←<READ()>;
01200	  PATHLENGTH←1;
01300	A; MOVE(CHOICE(2),2*CHOICE(2)-3,2*CHOICE(2)-3,CAAR PATH,
01400	     CDAR PATH);
01500	  IF PATHLENGTH = GOALLENGTH THEN GO SUCCEED
01600	  ELSE GO A;
01700	FAIL; RETURN "NO PATH EXISTS";
01800	SUCCEED; PRINTSTR ("PATH FOUND: ");
01900	  RETURN REVERSE(PATH);
02000	  END;
02100	
02200	EXPR MOVE(X,Y,Z,M,N);
02300	  BEGIN
02400	  IF X=1 THEN INC1←1 ALSO INC2←2
02500	    ELSE INC1←2 ALSO INC2←1;
02600	  R←M+INC1*Y;
02700	  S←N+INC2*Z;
02800	  IF MEMBER (R CONS S,PATH) OR OFFBOARD (R,S) THEN FAILURE()
03000	   ELSE PATHLENGTH←PATHLENGTH+1 ALSO PATH←(R CONS S) CONS PATH;
03100	  END;
03200	
03300	EXPR OFFBOARD (M,N);
03400	  IF M GREATERP DIM1 OR M LESSP 1 OR N GREATERP DIM2
03500	    OR N LESSP 1 THEN T;
03600	
03700	EXPR CHOICE(N);
03800	  SELECT I FROM I:1 SUCCESSOR I+1
03900	  UNLESS I GREATERP N FINALLY FAILURE();
04000	_EOF_