2014年6月1日日曜日

font_size_color

 マクロ font_size_color ( Sheet 1) および font_size_color_Sheet16 ( Sheet16) は、盤面内での数字(digit) の大きさと色により、その数字の持つ性質を区別する。

盤面のセルの色は、薄いダイダイ色で、
 表出数(Givens)は、 Font 18  Color 3 赤 
 決まった数(Answer)は、Font 14 Color 5 青
 候補の数(Candidate)は、Font 12 Color 1 黒
とする。

Sub font_size_color()
 Application.ScreenUpdating = False
  For i = 1 To z
    For j = 1 To z
      With Sheets("Sheet1").Cells(ppp + i, qqq + j)
      .Interior.ColorIndex = 36
      .Font.Bold = True
  If .Value = "" Then
      .Font.ColorIndex = 5
      .Font.Size = 14
  ElseIf IsNumeric(.Value) = False Then
      .Font.ColorIndex = 1
      .Font.Size = 12
  Else
      .Font.ColorIndex = 3
      .Font.Size = 18
  End If
      End With
    Next j
   Next i
 Application.ScreenUpdating = True
End Sub


 
 実例として、朝日新聞5月31日★5の問題を鉛筆で解く場合の盤面を表す。





局面は第2手目で「予約」(Hidden pair)で (7,2)=3 が決まるところである。
第1手目は、「ブロッケン」Hidden Single で決まった (9,8)=3 が青色で示されている。
Hidden Pair Method では、各Block内での (Hidden)Pair を小さいfont で示している。

digit 1 から順にやっていくと、8 の段階で上の図の局面に到達する。Block 7 (左下)において、(7,1)=1368  の候補をもち、(8,3) =18 のセルと合わせて、「予約」Hidden pair of Block が完成して、(7,1)=18 となり、3および6が消去される。その結果、(7,2)=3がHidden Single になる。

また、(9,1)=6 もHidden Single となり、第3手目が決まる。同様に第4手目(9,2)=5 も決まることになる。



2014年5月29日木曜日

kind_order_search

 このマクロでは、どの順番でどの技を検討するかの順番を指定する。

                            AE
Sheet 1 の AH1 のセルに input_form を代入する。AE2~AE8をダブルクリックすると、AE1にその文字が入る。

2014年5月27日火曜日

transfer_probrem

 マクロ transfer_problem は isheet に貯えられた データを Sheet 1 の盤面に移す他にさまざまな設定を行う。

 マクロは次の順番で実施される。

 Transfer_problem
 
         > basic_setting (M1)
         基本設定(前出) 

         > kind_order_search (M1)
         技をかける種類と順番をいろいろな方法で設定する。
 
   > hot_candy (M4)
          Candidate matrix や g-matrix を作成する。

    > font_size_color (M10)
          Sheet 1 の盤面において、表れる数字の大きさや色を決める。

    > font_size_color_Sheet16 (M10)
          Sheet 16 で同様の設定をする。

    > keisen (M10)
         Sheet 1 の盤面にブロック境界、セル境界にそれぞれ太字、細字の線をひく。        
       > num_of_cells (M6)
          Givens の数、empty cellの数を求める。

    > full_number_check (M27)
          > kosu_in_unit (M27)

           > diagonal_vacua (M27)

    > aroma_impression (M53)
         数字の形状による印象を数値化して%で表し点数を計算する。
    > symmetry_check (M27)
               7種類の図形の対称性を判定し、対称点数を求める。
    > number_of_entrance (M29)
            初期段階で基本技で取れるセルの個数を求める。

    > search_order_list (M29)
            設定された技をかける順番 md(imm) をSheet 6 にoutput する。








2014年5月15日木曜日

number_distribution

 計算を行う時には、先に格納した問題をDatabase Sheet より Sheet 1に呼び出しておく。それには Fig. 8 の Diagram の上にあるコマンド Input Problem をクリックする。
 このとき呼び出されるマクロが、この Number_distribution である。

 このマクロでは、
 number_distribution
    > clear_table
    > transfer_problem
    > minimam_givens_for_present_diagram
    > artistic_point

のように初期セットの他にいくつかの準備計算やLooks に関するポイント計算がおこなわれる。

      Fig.8   Call the Problem from Databese ( Sheet 6 ) by clicking command bottum "Input Problem" 

2014年5月11日日曜日

basic_setting



 basic_setting のマクロは 計算に必要な基本情報を設定するマクロである。

 計算を実行する前に 下図 のピンクの文字のように設定する。使用できる文字または数字は、周りにある該当するものを Double Click する。

        S  T U                AE                       AN    AP 



 isheet   Sheet 1   “S1”    入力Data のあるSheet 番号
dsheet  Sheet 1   “U1”    出力Data のあるSheet 番号

 ver    Sheet 1    “AN1”   Version を選択
beg     Sheet 1     “AP1”  各種の技(Strategy)を試す方法を選択

mondai  Sheet 1   “D2”    isheet の当該問題の記載の行番号

ppp=2 , qqq=10   Sheet 1 の Diagram (盤面)の原点となるセル位置
 Sheet 1 の 盤面 ( i , j ) のセルは、 Cells ( ppp+I , qqq+j ) で表す。
ppA=6 , qqA=2   Sheet 2 の盤面の原点の位置。

msga   Sheet 1  “C9”   計算を制御する記号
msgt    Sheet 1  “B9”  技の選択肢を制御する記号

fmsd   Sheet 1   “AS1”  基本技を設定する。
input_form  Sheet 1 “AE1”   技の順番の方法を指定する

pt=3 , ps=3  Block の 縦横のサイズを指定する。
z=pt*ps=9  
通常サイズナンプレは、9*9=81なので、z=9
16×16 ナンプレの場合には、 pt=ps=4, z=16.
 この数字を換えることで、大型ナンプレ、変則ナンプレに対応できる。
 




   

2014年5月5日月曜日

Input_to_sheet11


 Fig.2 のコマンド・ボタン 「 Input to isheet」(Sheet 1)をクリックすると、
       input_to_sheet11   (Module 12 )
が実行される。



   Fig. 8    Input Diagram of Sheet 1

ここに、isheet はデータベースのあるSheet番号で、Sheet11、Sheet12、Sheet14、Sheet15などである。

このmacroでは、

①     basic_setting   計算に先だって基本的な条件を設定するマクロの実行

②      Fig.1の盤面の問題を isheet に書き込む。
Matrix 表示で セル (I,j) の値を isheet の mondai 行の
Cells(mondai, 9*i+1+j) に書き込む。

③      Visual Data Input
      ntype(クラスターの種類の数)
      nsum(クラスターの総数)
 Fig.5 のクラスター毎の粒子数、個数、クラスター記号を読み込む。
また数字の配列や美しさに関するデータを読み込む。


                 Fig. 9    Input of Visual data

④     number_distribution
    > clear_table
    > transfer_problem
    > minimam_givens_for_present_diagram
    > artistic_point