2014年7月6日日曜日

full_number_check (2)

 このマクロは、盤面にある数字のパターンより、

 (1) 数字の分布
 (2) B数 (各Blockにある数字の個数)
  (3) R数 (各行にある数字の数)
 (4) C数 (各列にある数字の数) 

をカウントするものである。

このマクロを使って作成された鉛筆で解く数独記録ソフト(BS:Brain Simulation)の使用法を紹介しよう。

まず、問題番号を入力すると、開始画面として次のような盤面が表れる。



3                              C D  E  F  G  H   I    J    K  L   M  N  O   P
17 

ここに、 C6~C14 は、数字の個数、例えば 3の数字は4個あり、8とともに最も多い。

      D6~D14 は、B数を表す。例えば中央 Block 5 は3個の数字よりなる。

      O6~O14 は、R数を表す。例えば、1行目には 5個の数字がある。

      F5~N5  は、C数を表す。例えば、1列目には 3個の数字がある。

操作の方法は、 
     (1) 答えを入れるセルをクリック。  (4、7)をクリック。
     (2) 使用する技(P6~P14)をダブル・クリック。 P16に記号が入る。 Bをクリック。
     (3) 16行の水色のセルの数字をクリック。 3をクリック。
     (4) 「確認」をクリック。

 これで、 Step1 (4,7)=3  B と経過時間が、Sheet5に記録される。

以下同様に進めると、 Step28 で次の画面となっている。




full_number_check は、各stepにおいて書きかえられ、表出数(赤色18font)と既決数(青色14font)のみがカウントの対象になる。 フォント12の小さな文字は、借り置きのHidden pair である。

BRC数が7個以上になると、フォントが大きく表示される。取りこぼしを知らせてくれる。

最終盤面は、次のようになります。



Sheet 5 に記録された途中経過(決定順序と時間)は、Graph で表示される。

「次の一手」で示されている鉛筆による解析例はすべてこのソフトによるものである。 





2014年7月1日火曜日

full_number_check (1)

transfer_problem  (M3) >  full_number_check (M27)
                                    >  kosu_in_unit (M27)
                                   >  iblock_search (m27)

数独の表出数字の1~9 までの数字別個数をカウントする。

また9つあるブロック内の数字の個数(B 数)、行内の数字の個数(R数)、列内の数字の個数(C数)をカウントする。

計算した結果の一例を示す。




このマクロは直接数独の解法に寄与するものではない。

龍涎ソフトでは、数独の格付けに必要な「見た目」の表現に使われる。すなわち、数字の形のもつ美しさの評価を表すアロマ・インプレションやLack DigitはVisual point に関係する。上の例では、表出数の中の数字で、40%が、3689の丸味を帯びた数字(round shaped digit)であり、見た目の印象では全体的に円満なやさしい感じを与えるパターンであることを示している。

B数を求めるアルゴリズムは少しばかり手間のかかるものであるので、次に示しておこう。

iblock_search マクロは、掃引するBlock の開始のセル( igs , jgs )と最後のセル(ige ,jge) を与えるものである。

Sub iblock_search()
ps = 3
pt = 3
nn = Int((cigrp - 1) / ps)
n = nn + 1
igs = ps * nn + 1
ige = ps * n
jgs = (cigrp - nn * ps - 1) * pt + 1
jge = (cigrp - nn * ps) * pt
End Sub