PUBLIC NUMERIC C !解の数 LET C=0 DIM T(9) CALL backtrack(T,1,0) IF C=0 THEN PRINT "解なし" PRINT PRINT "このプログラムは終了しました。" END EXTERNAL SUB backtrack(T(),p,sm) FOR i=1 TO 9 FOR k=1 TO p-1 !同じ数字かどうか IF T(k)=i THEN EXIT FOR NEXT k IF k>p-1 THEN LET T(p)=i LET X=0 IF p=9 THEN IF T(1)+T(2)+T(3)+T(4)<>T(6)+T(7)+T(8)+T(9) THEN LET X=1 ELSEIF T(1)>T(2) OR T(2)>T(3) OR T(3)>T(4) THEN LET X=1 ELSEIF T(6)>T(7) OR T(7)>T(8) OR T(8)>T(9) THEN LET X=1 END IF END IF IF X=0 THEN IF p=9 THEN LET C=C+1 PRINT "No.";C PRINT FOR s=1 TO 4 PRINT T(s); NEXT s PRINT " ";T(5);" "; FOR s=6 TO 9 PRINT T(s); NEXT s PRINT PRINT ELSE CALL backtrack(T,p+1,sm) ! 再帰 END IF END IF END IF NEXT i END SUB