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



0 件のコメント:

コメントを投稿