Knight’s Tour

Developer(s): James Brezina
Date: 198x
Type: Program
Platform(s): TS 2068

Program to show the paths a knight can take on a board of almost any size.

Gallery

Knight’s Tour

Source Code

    5 GO TO 1200
   10 FOR i=1 TO 8
   20 LET x=s(c,1)+a(i,1)
   30 LET y=s(c,2)+a(i,2)
   35 REM This line is to delete a line in the other program
   40 IF x>0 AND y>0 AND x<=l AND y<=l THEN IF b$(x,y)=" " THEN GO TO 150
   50 NEXT i
   60 PRINT AT s(c,1)*2,s(c,2)*3;"  "
   65 REM This line is to delete a line in the other program
   70 LET b$(s(c,1),s(c,2))=" "
   80 LET c=c-1
   90 IF NOT c THEN STOP 
  100 INVERSE 1: PRINT AT s(c,1)*2,s(c,2)*3; INK 2;c: INVERSE 0
  110 LET p=p-1
  120 LET i=s(c,3)
  130 NEXT i
  140 GO TO 60
  150 PRINT AT s(c,1)*2,s(c,2)*3;c: IF p<e THEN INVERSE 1: PRINT AT x*2,y*3; INK 2;p: INVERSE 0
  155 IF p=e THEN PRINT AT x*2,y*3; INK 2;p
  160 LET s(p,1)=x: LET s(p,2)=y: LET s(c,3)=i
  190 LET c=p
  200 LET b$(x,y)="X"
  210 LET p=p+1
  220 IF p<=e THEN GO TO 10
  300 PRINT AT 20,0;"Hit a=another solution,r=restart, z=COPY"
  310 LET i$=INKEY$
  320 IF i$="" THEN GO TO 310
  330 PRINT AT 20,0;"                                "
  335 PRINT AT 21,0;"                                "
  340 IF i$="a" THEN GO TO 10
  350 IF i$="r" THEN GO TO 800
  355 IF i$="z" THEN GO TO 400
  360 STOP 
  400 RANDOMIZE USR 64719: RANDOMIZE USR 64716: GO TO 300
  800 CLS 
  900 PRINT "Enter size of board"
  910 INPUT l
  920 IF l<1 OR l>8 THEN GO TO 910
  930 LET e=l*l
  940 LET x=l*3+1
  950 CLS 
 1000 PRINT "   1  2  3  4  5  6  7  8"( TO x)
 1010 FOR i=1 TO l
 1020 PRINT TAB 2;"+--+--+--+--+--+--+--+--+"( TO x)
 1030 PRINT i;TAB 2;"+  +  +  +  +  +  +  +  +"( TO x)
 1040 NEXT i
 1050 PRINT TAB 2;"+--+--+--+--+--+--+--+--+"( TO x)
 1060 DIM s(e,3)
 1070 DIM b$(l,l)
 1080 LET p=2
 1090 LET c=1
 1100 PRINT "Enter starting location"
 1110 FOR i=1 TO 2
 1120 PRINT AT i+l*2+2,0;"Enter ";("Row" AND i=1)+("column" AND i=2)
 1130 INPUT x
 1135 PRINT AT i+l*2+2,14;x
 1140 IF x<1 OR x>l THEN GO TO 1130
 1145 PRINT AT i+l*2+2,0;"     ";
 1150 LET s(c,i)=x
 1160 NEXT i
 1165 PRINT AT l*2+2,0;"     "
 1170 PRINT AT s(c,1)*2,s(c,2)*3;"1"
 1180 LET b$(s(c,1),s(c,2))="X"
 1190 GO TO 10
 1195 STOP 
 1200 DIM a(8,2)
 1210 LET a(1,1)=-1: LET a(1,2)=-2
 1220 LET a(2,1)=-2: LET a(2,2)=-1
 1230 LET a(3,1)=-2: LET a(3,2)=1
 1240 LET a(4,1)=-1: LET a(4,2)=2
 1250 LET a(5,1)=1: LET a(5,2)=2
 1260 LET a(6,1)=2: LET a(6,2)=1
 1270 LET a(7,1)=2: LET a(7,2)=-1
 1280 LET a(8,1)=1: LET a(8,2)=-2
 1290 GO TO 800
 9000 SAVE "Knighto1": PRINT "Rewind & press ENTER to VERIFY.": VERIFY "Knighto1": PRINT "Knighto1 Verified."
Scroll to Top