ぬぬぬぬぬ

日々の雑感など

Excel VBA 数独 ざっくり仕様

2019/01/22作成

2019/02/10更新

 

目次

数独とは

既存数値入力

内部処理ざっくり定義

他、付け足し

 

<数独とは>

先ずは、数独ナンバープレイスナンプレともいう)について。

ja.wikipedia.org

 

3×3のブロックに区切られた9×9の枠内に規則に沿って数字を入れていくパズル。

縦9・横9・太枠3×3のマス9に1~9の数字を重複することなく埋める。

 

<既存数値入力>

問題に予め入っている数値の配置方法

a)セルへ直接手打ち入力

b)プルダウンによる選択

当分、aで進めていき、折を見てbへ移行する予定

 

<内部処理ざっくり定義>

a)数値を予想して記入する

空の行列を用意して初期化する。 ←必要なかった模様。

縦・横・3×3それぞれの9個所の合計が36以上なら9マスの内、

8マスまで埋まっていると判断できる。

45から先ほど合計した数値を引いた数を残り1マスに書き込む。

次の9個所に処理を移す。

 

b)移動処理

1)横処理→こちら

初期位置を左上セルとし、8回へ1移動する。この間、数値の予想処理をする。

へ8、へ1移動する。

下への移動が9になったら初期位置へ戻る。

 

2)縦処理

初期位置を左上セルとし、8回へ1移動する。この間、数値の予想処理をする。

へ8、へ1移動する。

への移動が9になったら初期位置へ戻る。

 

3)3×3処理

☆初期位置を左上セルとし、2回へ1移動する。この間、数値の予想処理をする。

 下へ1、へ2移動する。

 2回へ1移動する。この間、数値の予想処理をする。

 下へ1、へ2移動する。

 2回へ1移動する。この間、数値の予想処理をする。

へ1、上へ2移動する。

 ☆~★を更に×2繰り返す

◇左へ9、下へ3移動する。

 ☆~★×3、◇×1。

 ☆~★×3、◇×1。

上へ6、左へ9移動する。

 

c)終了処理

a)全てのセルに数値が入ったことを感知したら処理を終了する。

b)一定数数値予想処理をしても進展しなかった場合、処理を終了する。

 

<他、付け足し>

現状の処理だと、

27の9マスの組み合わせの中、必ず最初に8マス埋まっていないと成立しない。

難易度が上がっていくと別の視点での処理を思いつかないといけないなぁ。。。

 これだっ→Excel VBA 数独 ざっくり仕様その2 - xxxnuxxxの日記

 

<足りないもの>

VBA プログラム言語知識

・行列処理

・フラグ処理

参考サイト/参考書

・欲しい処理が逆引きできるようなやつを探していきます