新しく発言する  EXIT  インデックスへ

パズル「数独」(ヒントつきプレイモード)


  パズル「数独」(ヒントつきプレイモード) 山中和義 2008/05/09 19:06:15  (修正1回)
  つづき 山中和義 2008/05/09 19:07:12  (修正1回)
  │└つづき 山中和義 2008/05/09 19:08:40  (修正1回)
  │ └つづき 山中和義 2008/05/11 20:53:30 
Re: つづき  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/05/11 20:53:30
つづき


DEF ToBlock(x)=INT((x-1)/3)*3 !マスに換算する

FUNCTION num$(x,y) !マスに入る候補を求める
LET t$="123456789" !使用可能な数字

FOR yy=1 TO 9 !列(縦)に着目
LET k=ABS(m(yy,x))
IF k>0 THEN LET t$(k:k)=" " !使用済みの数を削除する
NEXT yy

FOR xx=1 TO 9 !行(横)に着目
LET k=ABS(m(y,xx))
IF k>0 THEN LET t$(k:k)=" "
NEXT xx

LET Bx=ToBlock(x) !ブロックに着目
LET By=ToBlock(y)
FOR xx=1 TO 3
FOR yy=1 TO 3
LET k=ABS(m(By+yy,Bx+xx))
IF k>0 THEN LET t$(k:k)=" "
NEXT yy
NEXT xx

LET num$=t$ !残った数が候補となる
END FUNCTION



10 DATA 0,0,4, 0,0,0, 0,5,0 !初期データ
DATA 0,0,8, 0,0,0, 2,0,9
DATA 0,0,3, 0,0,4, 0,0,0

DATA 0,0,0, 0,2,0, 3,8,7
DATA 0,0,0, 5,0,7, 0,0,0
DATA 7,4,6, 0,3,0, 0,0,0

DATA 0,0,0, 2,0,0, 4,0,0
DATA 3,0,7, 0,0,0, 9,0,0
DATA 0,9,0, 0,0,0, 5,0,0


99 DATA 9,1,4, 6,8,2, 7,5,3 !解答データ ※参考
DATA 5,6,8, 3,7,1, 2,4,9
DATA 2,7,3, 9,5,4, 8,1,6

DATA 1,5,9, 4,2,6, 3,8,7
DATA 8,3,2, 5,1,7, 6,9,4
DATA 7,4,6, 8,3,9, 1,2,5

DATA 6,8,5, 2,9,3, 4,7,1
DATA 3,2,7, 1,4,5, 9,6,8
DATA 4,9,1, 7,6,8, 5,3,2


END
  !9×9数独をプログラムで解く 山中和義 2008/05/12 13:57:38  (修正1回)
   └数独を解く!数独ソルバー 片山博文MZ 2008/08/04 13:11:52 

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。