ナンバープレィス・数独について
「数独」・ナンバープレイスをテーマにしてプログラムで遊ぶ












  1. マス目 黄色で書いてあるのは、仮置きの数字
    赤色は水平〜ペアのでの検査で必然的に置かれる数字


    この階層図の赤色で表示されているのは[ ] 空集合が出現する
    矛盾する数値。



    開始直後の マス目 [0,7] に入れられるのは Edit08---08--0+8 DArray[0,7] = 0[2,9] これは 2 と 9 ということ。なので 2 を入れて実行してみるも つぎの [0,4] には 1と9 なのであるがここは矛盾する結果になる [ ] 空集合 赤色表示
    次のマス目からも同様に入れ替えて実行する。 最終的に 上記黄色で示された数値を仮置きし [3,1] = 1 と置いたとき すべてのマス目が埋まる。

  2. 直前の状態




    [3,8] = 4 と置いた状態。

    ここで いっきに決まる。











  3. コードの一部
    {***********************************************
    **  最小要素での組み合わせ
    **
    **
    ************************************************}
    procedure TForm1.Button23Click(Sender: TObject);
    var
      now_node : TTreeNode;
    begin
    
      TreeView1.Items.Clear;
      //最上位の親を作る。
      now_node := TreeView1.Items.Add(nil,'開始');
      //マス目配列データーを退避する。
      masume_backupNode(now_Node);
      //子ノードの作成
      makeChildNode2(now_node);
      //次のノードへ
      now_node := now_Node.GetNext;
      //組み合わせシュミレーションの実行
      combi_sim_exec2(now_node);
    end;
    
    
    
      シュミレーションの準備
    
    
    
    
     
    
    
    
     
    ← 最上位のノード作成
    
    ← ノードオブジェクトに現在のマス目データー
      を保存する。
    ← 最親ノードの下に子ノードを作成
    
    ← 次のノードへ進める。
       直下の子ノードに移る。
    ← ここからシュミレーション開始する。 
       

     ここはシュミレーションをするための準備段階です。実際にはこれらを実現するためにはもっとたくさんのコードが必要ですが