Puzzle 生成

GNPX には、数独パズルを生成する 2 つの方法があります。

 (1) Puzzle 手動生成

マニュアルで、数独の問題を左の9x9の升目に作る。

  1. 最初に、頭の中で、入力する数字を強くイメージする。
  2. 9x9のセルをクリックすると、セルにイメージした数字が表れる。
  3. もしも、イメージしたのと異なる数字が現れたときは、あなたのイメージパワーが弱かったからです。
    その場合は、再度、強く強くイメージしてクリックする。これは何度でも試行できます。
  4. 入力済み数字を取り消すときは、"消えろ"と強く念じながら、その数字を再度クリックする。


 (2) Puzzle 自動生成

GNPXで採用している 数独 Puzzle の生成方法 の解説です。
v6では、次の手順で 数独 Puzzle を生成します。基本的な生成手法は開発済みですが、ハンドリングは改良の余地があります。

  1. ステップ-1. ラテン方陣を生成する [parallel可能]
        ラテン方陣の生成方法は、 Latin Square にあります。
        最初に ブロック1は固定します。
        ブロック2,3 は、パラメータで制御します。この ブロック2,3 パラメータは 2,612,736 種類あります。
        ブロック4,7 パラメータにも 2,612,736 種類あります。
        [2,3 パラメータ] × [4,7 パラメータ] の1組について、 2,000~5,000 の ラテン方陣が生成できます。
        ランダムに 500~1,000組のパラメータを選び、ラテン方陣セットを生成します。

  2. ステップ-2. ラテン方陣に Puzzle パターンを重ねる
        ステップ-1 で生成した ラテン方陣 は全て異なります。
        これにPuzzle パターンを重ねて、パターンが空白セルを'0'に置き換えます。これを '前Puzzle' とします。
        パターン を重ねた 前Puzzle は、多数の同一のものが生じます。前Puzzle セットから、ユニークなもののみを選びます。
        ユニークでないパターンは、数独の問題として唯一解を持ちません。
        なお、ユニークなパターンも '唯一解を持つ=数独の問題'であることは保証されません。

  3. ステップ-3. ユニークな 前Puzzle セットを TryAndError 法で解く [parallel可能]
        TryAndError は 高速 に ラテン方陣を解きます。
        TryAndError でユニークな解をもつ 前Puzzle は、数独の問題の候補です。
        ここでも、'数独の問題'であることは保証されません。ステップ-1 の他のパラメータから生成される ラテン方陣 が同じ場合があることに因ります。

  4. ステップ-4. 数独アルゴリズムで解く [parallel可能]
        ステップ-3 の 数独の問題の候補 を 数独アルゴリズム で解きます。
        ステップ-1~3 と ステップ-4 は それぞれ独立に(別スレッドで)実行できます。
        GNPXでは、数独アルゴリズムスレッドは 常に動作状態にし、
        ステップ-1~3 で 数独Puzzle の候補が求まるごとに 数独アルゴリズムスレッドに送ります(Queue使用)。

Top