問題タブ [sudoku]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2104 参照

algorithm - バックトラッキングによる数独ソルバーが機能しない

9x9 の数独グリッドを保持する 2 次元配列を想定すると、私のソルブ関数はどこで壊れますか? 単純なバックトラッキング アプローチを使用してこれを解決しようとしています。ありがとう!

問題を変更した後でもisSolved、私の解決策は無限ループに陥っているようです。基本的な手順が欠けているように見えますが、その場所や理由がわかりません。同様の解決策を見てきましたが、まだ問題を特定できません。基本的なソルバーを作成しようとしているだけで、効率を上げる必要はありません。助けてくれてありがとう!

0 投票する
3 に答える
849 参照

algorithm - 数独パズル作成時の重複問題

独自の通常の 9x9 数独パズルを作成しようとしています。

問題を2つの部分に分けました -

  1. 完全に埋められた数独を作成し、
  2. グリッドから不要な数字を削除する

今、私は最初の部分で立ち往生しています。


これは私が簡単に使用するアルゴリズムです:

a) まず、数字 (たとえば 1) を選択し、ランダムなセル位置を生成し、次の場合はそこに配置します。

  • セルがまだ占有されていない
  • 行に番号がまだない場合、および
  • 列に番号がまだない場合、および
  • 3x3 ボックスに番号がまだない場合

b) 次に、行、列、またはボックスの 1 つの場所だけが空である状況を確認し、それを埋めます。

c)ボックスには存在しないが、同じ行と同じ列のボックスに存在する数字がある場合(ここでは3x3ボックスについて話している)、数字の場所が固定されていることを確認し、それを埋めます.

d) すべての数字がグリッドに 9 回表示されるまで、上記の手順を繰り返します。


私が直面している問題は、多くの場合、次のような中間的な状況になっていることです。

[4/2]と書かれているところが見えますか?[] とマークされたボックスのため、これは 2 と 4 の場所です。

この状況に陥らないようにするにはどうすればよいですか (この状況はデッドロックであるため、これ以上先に進むことができません)

0 投票する
11 に答える
144102 参照

python - 数独を解くアルゴリズム

数独パズルを解くコードを Python で書きたいと思っています。この目的に適したアルゴリズムについて何か考えがありますか。ボックス全体に可能なすべての数字を入力して解決し、対応するボックスに既知の値を挿入するアルゴリズムについてネットのどこかで読みました。既知の値の行と列から、既知の値が削除されます。これよりアルゴリズムを書くのを手伝ってください。また、ユーザーから既知の値を読み取る方法についても混乱しています。コンソールから値を 1 つずつ入力するのは非常に困難です。GUIを使用する以外にこれを行う簡単な方法はありますか?

0 投票する
4 に答える
703 参照

lisp - 数独テーブルジェネレーターの障害、lisp

lispコードの一部に問題があります。数独テーブルジェネレーターです。この部分までは正常に機能します。

基本的に、私は行xと列yにいて、要素を挿入する必要があります。この要素と列の部分行列を監視し、上記のいずれにも表示されていない番号を選択してそこに配置します。それが「ピック」変数です。問題は、エントリループでは正しい値を持っていても、「choices」変数がNIL値を取得することがあることです。NILを取得すると、ピック値は最後のループ(このスニペットの上の列と行でループしています)と同じままになり、最終的なテーブルの出力が無効になります(たとえば、行の値が2倍になります)。choices変数がどこで変化するかを追跡するにはどうすればよいですか?私はこのスニペットでのみ使用していますが、なぜ突然nilに変わるのかわかりません。

たとえば、私は通常以下を持っています:

  • エントリループ内:選択肢(5)
  • エントリ外ループ:選択肢(5)
  • エントリループ内:選択肢(6 7)
  • エントリ外ループ:選択肢(6 7)そしてその後これ:
  • エントリループ内:choicesnil。

ありがとうございました。

0 投票する
2 に答える
2076 参照

language-agnostic - ラテン方陣ジェネレーター? (数独的制約問題)

目的

これらの制約に従う必要がある実験計画のために、ラテン方陣 (数独のようなシーケンス) を設計しています。

  • 値を続けて繰り返すことはできません
  • 列内で値を繰り返すことはできません
  • 2 つの行でペアごとに値を繰り返すことはできません

最初の 3 つの制約の例:

ここでは、素数を選択しましたが、値は任意です (6 つの異なる値がある限り)。これは 6 x 6 グリッドの数独と同じですが、行全体で繰り返されるペア (バイグラム) がないという追加の制約があることに注意してください。つまり2 3、最初の行にのみ表示され、他の行には表示されず、他のすべてのペアについても同様です。

  • 値は、これらの制約に適合する別の 6 つの値とペアにする必要があります。
    • 2 番目の設定値を続けて繰り返すことはできません
    • 2 番目に設定された値を列で繰り返すことはできません
    • 第 1 セットの値と組み合わせると、第 2 セットの値を繰り返すことはできません。

つまり、最初の 6 つの値とペアになる別の 6 つの値 (これも任意です。「a、b、c、d、e、f」のいずれか) が必要です。最後の制約は、 ( 2, a)どこでも使用すると、再度使用できないことを意味します。

最後の 2 番目のセットの制約が問題です。n = 6 の nxn グリッドの解はありません。ラテン方陣の「ちょっとした」直交ペアを作成するために、繰り返しの数を最小限に抑えたいと考えています。

質問

以前にこの問題に遭遇したことがありますか? (解決策を生成するツールがあれば、それは素晴らしいことです。) この目的のために必要な例は 1 つだけです。すでにいくつかの異なる構築戦略を試しました。

そのためのソルバーを作成するというアイデアをいじっていますが、何かが既に存在する場合はそれを避けたいと考えています。

0 投票する
4 に答える
4513 参照

python - Python で Sudoku Solver を書く

Python 言語で書かれた数独ソルバーを次に示します。このプログラムを実行すると、Update 関数と Solve 関数に問題があるようです。

どれだけコードを調べて動かしても、運が悪いようです

誰でも私を助けることができますか?



ここにいくつかのパズルがあります:

パズル 1

パズル 2

パズル 3


0 投票する
3 に答える
365 参照

language-agnostic - 人間が特定の数独の状況を解決するのにかかる時間のモデルを構築するには、どのような種類の学習アルゴリズムを使用しますか?

私は、機械学習、パターン認識、データ マイニングなど、およびそれらの基礎となる理論とシステムについてあまり経験がありません。

与えられた数独パズルで人間が動くのにかかる時間の人工モデルを開発したいと思います。

したがって、機械学習プロセスの出力として私が探しているのは、対象の人間が特定の数独の状況で行動を起こすのにかかる時間を予測できるモデルです。

同じ入力が常に同じ結果にマップされるとは限りません。人間が同じ状況で行動するのにかかる時間は異なりますが、私の仮説は、結果として得られる確率分布に傾向があるということです。(私の知識に基づいた推測では、それは ~ 正常です。)

分布に影響を与える要因 (#empty スロットなど) についてのアイデアはありますが、これらのパターンを把握するためにシステムに任せることが望ましいです。私はパターンには興味がなく、モデルだけに興味があることに注意してください。

数独パズルを実行し、移動にかかる時間を測定することで、サンプル データとテスト データを簡単に生成できます。

これにはどのような学習アルゴリズムを使用することをお勧めしますか?

私はNNを考えていましたが、同じ入力に対して重み付けされたランダムな結果を与えるという望ましい特性を持つことができるかどうかはわかりません。

0 投票する
7 に答える
27577 参照

java - このスタック オーバーフロー エラーを修正するにはどうすればよいですか?

だから私はJavaの数独ソルバーのかなり良いコードだと思うものを持っていますが、この方法で助けが必要です。メインメソッドに埋め込むと、スタックオーバーフローが発生します。問題は、私の方法が方向転換して間違いを修正する方法を知らないことです。ブール値のフラグ (以下のコードで使用されているものとは異なり、実際にはうまく機能するフラグ) または、いつ引き返す必要があるか、いつ再び前進してゲームを解決し続けることができるかを知らせる何かが必要です。あなたが与えることができる助けをありがとう

0 投票する
3 に答える
5826 参照

c++ - 数独ランダム生成

シミュレーション プロジェクト用にランダム数独パズルを生成する関数を作成しています。この関数は、生成するセルの数を引数として取り、セルのインデックスとそれらのセルに入れる数値を生成します。私はセル インデックスの生成に問題があります。私はプログラミングの専門家ではありません。インデックスを生成し、同じインデックス カップルにならないようにチェックアウトするための適切なルーチンが 2 回以上見つかりません。機能は次のとおりです。

ij[]関数がランダムなインデックスを配列に入れるセクションについて助けを求めgotoますquanti
casuale()1 から 9 までの乱数を返すだけです。

0 投票する
3 に答える
1233 参照

c - 数独の解き方について

誰かがこの解決策を理解するのを手伝ってくれますか: