つづき
!解法1:マスに入る「数字の候補」に着目する FOR x=1 TO 9 !未確定のマスに対して FOR y=1 TO 9 IF m(y,x)=0 THEN LET t$=num$(x,y) !候補を求める LET c=9 !その個数 FOR i=1 TO 9 IF t$(i:i)=" " THEN LET c=c-1 ELSE LET k=i NEXT i IF c>0 THEN !※列、行、ブロックで1つの場合は、確定可能である IF c=1 THEN CALL box(x,y,k) !そのマスを示す SET TEXT COLOR 4 !候補を3x3表示する SET TEXT HEIGHT 0.25 FOR i=1 TO 3 FOR j=1 TO 3 LET k=i+(j-1)*3 PLOT TEXT ,AT x+i*0.3-0.1,y+j*0.3-0.1: t$(k:k) NEXT j NEXT i ELSE CALL box(x,y,1) !エラー「候補がありません。」 END IF !PRINT y;x;t$;c !debug END IF NEXT y NEXT x !確定の「数」(初期値/入力値)の表示 FOR x=1 TO 9 FOR y=1 TO 9 LET k=m(y,x) IF k<>0 THEN IF k>0 THEN LET c=1 ELSE LET c=2 ! !黒/青 CALL putc(x,y,c,ABS(k)) END IF NEXT y NEXT x !盤の表示 SET LINE COLOR 1 !黒 FOR x=1 TO 10 !縦線 IF MOD(x,3)=1 THEN SET LINE width 3 ELSE SET LINE width 1 PLOT LINES: x,1; x,10 NEXT x FOR y=1 TO 10 !横線 IF MOD(y,3)=1 THEN SET LINE width 3 ELSE SET LINE width 1 PLOT LINES: 1,y; 10,y NEXT y SET DRAW mode explicit !ちらつき防止の終了
|