問題タブ [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.
javascript - グレード数独難易度
私はJavascriptで書かれた数独ゲームを楽しみのために作っています。
すべてが正常に機能し、ボードは毎回単一のソリューションで完全に生成されます。
私の唯一の問題は、プロジェクトを一般に公開することを妨げているの
は、ボードの難易度を評価する方法がわからないことです。私はどこを見ても
、フォーラムなどに投稿しました。私は自分でアルゴリズムを書きたくありません。それはこのプロジェクトの
目的ではありません。また、私は数学者ではないので、アルゴリズムは複雑すぎます。
私が近づいたのは、 JSを介してグレーディングを行うこのウェブサイト
だけでしたが、問題は、コードがそのようなお粗末な文書化されていない、非常にアドホックな方法で書かれている
ため、借りることができないことです...
要点を説明します-
数独の格付け/評価のソースコードを提供している場所を教えてもらえますか?
ありがとう
アップデート22.6.11:
これは私の数独ゲーム
です
。基本的な人間の論理解法に依存する独自の評価システムを実装しているので、チェックしてください。
java - alogrithim可能な値java数独
どこが間違っているのですか?これはうまくいかないようです。セルを見つけるaiとjをパラメーターで指定しようとしています。そして、9x9数独グリッドで可能な値を返します。これは、最初の配列、つまりセルが空の場合はa [0] = trueであり、セルが再生または占有されている場合はfalseです。配列の残りの部分は、そのiセルとjセルに挿入できる値で構成されます。したがって、可能な値は4であり、a [4] = trueを返し、残りのブール配列が可能になります。誰かが私がどこで間違っているのか教えてもらえますか?whileループは正しくありませんか?
list - プロローグは、ループ内の変数でリストを自動的に埋めます
リストに変数を自動的に入力する方法は?
お気に入り
結果は L=[X1,X2,X3,X4,X5,X6,X7,X8,X9] のようになります。?
それは、sudokusolver 用に適切なサイズのリストを作成したいからです。
ここでサイズを取得します:
algorithm - プロローグ数独ブロックアルゴリズム?
プロローグでブロックのすべての要素を取得する方法は? 私のコードではサイズが動的に変化する可能性があるため、ブロックサイズは異なります。4x4 = 4 要素、9x9 = 9 要素などです。ブロックは正方形にカットされるため、4x4 では水平方向の長さは round(sqrt(4))= 2 で、垂直方向はブロックの長さは round(sqrt(4)) = 2. および 9x9 ... sqrt(9).. なので、ブロックの高さと幅は 3 です。要素を効率的に取得するためのアルゴリズムが必要です。
私のsudokulistsはこのように構築されています:
L=[ [4,3,1,2], [2,1,4,3], [3,4,2,1], [1,2,3,4] ],
数独の行のリストを含むリストです。行と列のチェックは問題ありません。 -> 行の all_different チェック、リスト全体の転置、転置されたリストの all_different チェック。
しかし、数独の動的サイズのため、ブロックの修正コードをコーディングできません。誰かアイデアはありますか?flatten(L) とオフセットを使用して正しいブロックを取得することを考えましたが、この方法でそれを行うのはかなり難しいようですか?
私を助けてください!
java - この数独のバックトラックが動かなくなるのはなぜですか?
数独バックトラッキングソルバーを書いていますが、行き詰まっていて、理由がわかりません。私の再帰呼び出しは大丈夫だと思います。私が欠けているものは何ですか?
入力は、1行のグリッド初期レイアウトでinput.txtファイルから読み取られます。
input.txt:
編集:グリッドの解決を完了していないとして「スタック」を意味します
これはサンプル出力です:
プログラム:
c++ - 数独ソルバーの複数のソリューション
以下のすべてに、9x9 数独ソルバーの概要がありますが、部分的なエントリを持つ特定の数独に複数のソリューションを組み込む方法がわかりません。誰かがこれを実行できますか?
このアルゴリズムはバックトラッキングを使用します (したがって、スタックの使用)
java - 数独-地域テスト
「力ずくの」ランダム性アプローチを使用して、数独ジェネレーターを作成しています。コードを使用して、x/y軸の重複番号を問題なくチェックできました。
「ボックス」または「リージョン」チェック(原点から3x3の正方形ごとにチェックする)を実装することにしましたが、コードに頭を悩ませているようには見えません。これが私がこれまでにしたことです。論理エラーがどこにあるのか完全にはわかりません(記録のために、プログラムはこのコードで実行されますが、領域を適切にチェックしません)
regionCheck.javaの内容:
途中のどこかで迷子になり、リージョンを「選択」してリージョンを反復処理する方法がわかりません。
完全なソースはこちら:http: //ideone.com/FYLwm
テストする領域を「選択」して、それを反復処理する方法についてのヘルプは、私が本当にアイデアがないので、非常にありがたいです。
javascript - 数独ボードを生成するためのバックトラック アルゴリズムのヘルプが必要
数独ボードを生成するためのアルゴリズムを作成しましたが、失敗しています。これに基づいて作成しましたが、これに遭遇する前に多くのコードを作成したため、異なります。
コード
と呼ばれる値を保持するために設定された多次元配列がありますmatrix
。matrix
行である9つの配列で構成され、これらのそれぞれが9つの列を保持します。したがって、行4列7の値を取得するには、使用します
すべての正方形を解く関数:
は、セルごとに 1 ~ 9 の整数の配列を保持するように初期化されることを除いて、まったく同じように多次元配列を作成するためのgeneratePossibleNumbersArray()
単なるヘルパー関数です。matrix
関数の実行中、populateMatrix()
これらの可能な数値はセルごとに削減されます。
問題
になるため、毎回マトリックスを完了する前に失敗しj
ます-1
。これは、より多くのセルが解決されると、アルゴリズムがセルの値を見つけるのが難しくなり、バックトラックするためです。しかし、最終的には までさかのぼってしまいj == -1
ます。
私は本当にこのアルゴリズムがうまくいくと思っていました。私はこれを回避するために一日中費やしましたが、私は困惑しているので、誰かがこれに当てることができる光は非常に高く評価されます.
「分かった、数独を解くための JavaScript 関数を書こう」と思いました。それはどれくらい難しいですか?私がどれほど間違っていたか。
[解決]
@Steve314 によるコメント (彼は現在削除されています!) に基づいて、アルゴリズムに追加matrix[i][j] = undefined
したところif(!found) { ...
、アルゴリズムが機能し、非常に高速になりました。
興味のある方は、完全なコードをご覧ください。
algorithm - 独自のソリューションで数独ボードを生成する方法
独自のソリューションで数独ボードをどのように生成しますか?私が考えたのは、ランダムなボードを初期化してから、いくつかの数字を削除することでした。しかし、私の質問は、ソリューションの独自性をどのように維持するかということです。