! 同じ交差点を通らないでゴールする道順 ! 始点─・─・ !  │ │ │ !  ・─・─・ !  │ │ │ !  ・─・─終点 PRINT PRINT "スタート: 左上 (0)" PRINT " ゴール : 右下" PRINT PUBLIC NUMERIC C !解の個数 LET C=0 DIM P(0 TO 2,0 TO 2) !経路 P(y,x) MAT P=(-1)*CON MAT PRINT P; LET P(0,0)=0 !左上がスタート位置  ゴール位置は P(2,2) CALL try(0,1,1,P) !第1歩目の移動は必ず:(0,0)→(0,1)とする。 PRINT "以上の対角線対称形も含めて全部で ";2*C;"通り" END EXTERNAL SUB try(y,x,s,P(,)) !バックトラック法で検索する IF x=2 AND y=2 THEN !ゴール(右下)なら LET P(y,x)=s LET C=C+1 PRINT "No.";C MAT PRINT P; !経路を表示する ELSEIF P(y,x)<0 THEN !未踏なら LET P(y,x)=s !仮に進む IF y=1 THEN !上段か下段なら左側への移動は禁止 IF x>0 THEN CALL try(y,x-1,s+1,P) !中段にあって左端以外なら左へ END IF IF x<2 THEN CALL try(y,x+1,s+1,P) !右へ IF y<2 THEN CALL try(y+1,x,s+1,P) !下へ LET P(y,x)=-1 !元に戻す END IF END SUB