問題タブ [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 投票する
1 に答える
268 参照

python - for ループでの変数の抽象化に失敗しました

私は Python で 4x4 数独ソルバーを作成しようとしています (私は初心者です!)。関数を定義してコードをクリーンアップしようとしているときに、よくわからない奇妙な動作に出くわしました。どうやら、これには違いがあります:

そしてこれ:

奇妙な式は、行と列をチェックするためのものです (ボックスはまだ完成していません)。この種の質問が既にある場合は、時間を無駄にして申し訳ありませんが、両方のコード スニペットを実行して、得られるさまざまな結果を観察してみてください。前もって感謝します。

(怒られそうな変な予感がするな。はぁ)

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

c++ - 入力ファイルから改行文字 (\n) をスキップする必要があります

ファイルを配列に読み込んでいます。各文字を読み取っていますが、テキストファイルの改行も読み取るという問題が発生します。

これは数独ボードです。文字を読み取るためのコードは次のとおりです。

私が言ったように、ファイルを読み取り、画面に表示しますが、 \n に遭遇したときに正しい順序ではありません

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

c# - リスト内のすべての値を相互に比較する

私はここで少し立ち往生していて、それ以上考えることができません。

各 CandidateDetail アイテムを同じ辞書内の他の CandidateDetail アイテムと最も効率的な方法で比較するにはどうすればよいですか?

例: 辞書には 5、6、1 の 3 つのキーがあります。したがって、3 つのエントリがあります。これらのキー エントリのそれぞれに、関連付けられたリストがあります。この場合、これら 3 つの数値のそれぞれが、各キーに関連付けられたリスト内に正確に 2 つの CandidateDetails アイテムを持っているとします。これはつまり、異なるセルまたは同じセルに 2 つの 5、2 つの 6、および 2 つの 1 があることを意味します。私が知りたいのですが:

if[5].1stItem.CellId == [6].1stItem.CellId => ヒットしました。つまり、同じセル内に 5 と 6 があることを意味します。if[5].2ndItem.CellId == [6].2ndItem.CellId => 完全です。残りの 5 と 6 は、別のセル内に一緒にあることがわかりました。if[1].1stItem.CellId == ...

ここで、1 を他の 5 および 6 と照合して、前の同じ 2 つのセル内に存在するかどうかを確認する必要があります。

おそらくLinq式が役立つでしょうか?私はここでかなり立ち往生しています...わかりません...多分私は間違ったアプローチを取っています。ゲーム数独の「隠しペア」を解こうとしています。:)

http://www.sudokusolver.eu/ExplainSolveMethodD.aspx

どうもありがとう、ケーブ

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

java - Javaでスレッドを再利用するにはどうすればよいですか?

私は、主な目的が生の速度であるコンソール数独ソルバーを構築しています。

これで、WorkerThreadsを起動して各セルの隣接セルを計算するManagerThreadができました。そのため、現在、セルごとに1つのWorkerThreadが開始されています。作業が完了した既存のスレッドを再利用するにはどうすればよいですか?

スレッドプールパターンが解決策のようですが、ジョブが完了した後でスレッドが停止するのを防ぐために何をすべきかわかりません。

ps:この特定のタスクで多くのパフォーマンスが得られるとは期待していません。コードのより複雑な部分に適用する前に、マルチスレッドがどのように機能するかを実験したいと思います。

ありがとう

0 投票する
1 に答える
2955 参照

c# - 数独で裸のトリプルを解く

ユニに戻って数学の授業にもっと注意を払うことを望みました。:)

ネイキッドトリプルにこの数式を実装するにはどうすればよいですか?

ネイキッドトリプル
ユニットUを共有する3つのセルC={c1、c2、c3}を取ります。3つの数値N = {n1、n2、n3}を取ります。Cの各セルが候補としてci⊆Nを持っている場合、Uの他のセルからすべてのni∈Nを削除できます。**

ユニット(ボックス、行、列など)をパラメーターとして受け取るメソッドがあります。ユニットには9個のセルが含まれているため、一度に3個のセルのすべての組み合わせを比較する必要があります。ボックスから、さらに計算するためにそれらをスタックまたはコレクションに入れます。

次のステップは、これらの3つのセルの組み合わせを1つずつ取得し、それらの候補を3つの数値と比較することです。繰り返しますが、これらの3つの数字は、1から9までの任意の組み合わせにすることができます。必要なのはそれだけです。

しかし、どうすればよいでしょうか。いくつの組み合わせが得られますか?セルに対して3x9 = 27の組み合わせを取得し、次に数値(N)に対して同じ組み合わせを取得しますか?

従来のC#ループでこれをどのように解決しますか?ラムダ式はありません。私はすでに十分に混乱しています:)

コード: ここでクラスを表すために、クラスを短くする必要がありました。

候補者

箱:

ボード

助けてくれてありがとう、

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

sudoku - 数独初期ボードの作成

数独ゲームの初期状態の数独パズルを取得できるアルゴリズムまたは方法はありますか。できれば、さまざまなレベルの難易度を持つことができますか?

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

c - 力ずくの数独ソルバー: バックトラッキング?

数独パズルを解決するためのブルート フォース アルゴリズムの実装は、 1 ~ 9 の数字のいずれかを配置することが不正な動きになるセルが発見された場合に失敗します。

実装は C で書かれており、ボードは 9x9 配列で表されます。ソルバーは、9 から正当な数に到達するまでカウントダウンし、到達できない場合は、代わりにゼロを出力します。

ゼロは、入力されるセルも表します。ゼロの文字列 (空のボード) が入力である場合の出力 (切り捨てられた) は次のとおりです。

最後の 3 つのゼロがあるのは、以前に入力された値が変更されていないためです。ソルバーがこのように失敗しないようにするにはどうすればよいですか?

0 投票する
1 に答える
871 参照

python - 数独ソルバーをCからPythonに移植する際の問題

私は最近、プログラミングを練習するためにCで数独ソルバーを書きました。それを完了した後、私は言語間の比較とより多くの練習のためにPythonで同等のプログラムを書くことに決めました、そしてこれが問題があるところです。whileループの外で宣言したグローバル変数(sudokupossibilities [] [] [])は、ループ内では使用できないようです。デバッグ用にprintステートメントを追加しようとしましたが、whileループの外側で正しく設定されているようです(すべて1)が、ループに入ると、値はほとんどゼロで、いくつかの値があります。これを修正する唯一の方法は、「for k in range(9):」の後にステートメントを追加して、そこにステートメントを設定することです。これにより、次のステートメントが廃止され、プログラムの速度が低下します。以下のPythonバージョンとその後のCバージョンのソースコードを含めました。

Cバージョン:

Python3.1とC99を使用しています。また、コードの品質に関係することもありがたいです(ただし、プログラムに関数が不足していることはわかっています。Cバージョンに追加し、動作後にPythonバージョンに追加する予定です)。

ありがとう。

編集:以下の未解決のパズル。

0 1 0 9 0 0 0 8 7
0 0 0 2 0 0 0 0 6
0 0 0 0 0 3 2 1 0
0 0 1 0 4 5 0 0 0
0 0 2 1 0 8 9 0 0
0 0 0 3 2 0 6 0 0
0 9 3 8 0 0 0 0 0
7 0 0 0 0 1 0 0 0
5 8 0 0 0 6 0 9 0

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

iphone - 数独グリッドの UIKit コントロール?

私は最近、C でアルゴリズムの数独ソルバーを完成させました。これは、パズルを解くために 3 つの異なるアプローチが取られるものです。これは、Project Euler ソリューション用に私が書いたコードです。かなり楽しい、追加するかもしれません...

とにかく、この小さなソルバーを iPhone アプリに組み込むことに本当に興味があります。画面にグリッドを表示するためにどのようなアプローチをとるべきか、私は本当に途方に暮れています。私が想像できる最悪の方法は、81 個の個別の UITextFields に対して 81 個の個別のアウトレットを持つことです... ココア アプリでは、単にそれらを NSMatrix に埋め込んで処理を進めますが、iPhone には NSMatrix に代わるものはありません。

HTMLファイルを生成してUIWebViewに表示することを考えていますが、それでも最善の方法ではないようです。あなたは何をお勧めします?

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

java - 効率的な数独ソルバーの構築

はい、これは新しいものではなく、すでに多くの問題が出回っていることは承知していますが (独自のタグさえあります)、Java で Sudoku Solver を作成したいと考えています。効率的。

おそらく、プログラムでこれを行う最も簡単な方法は、大量の for ループを各列と行で解析し、各セルの可能な値を収集してから、1 つの可能性だけでセルを除外することです (数値が 1 つしか含まれていないか、またはパズルが解けるまで、この数字を含む行/列の唯一のセルです)。もちろん、このアクションについて完全に考えると、すべてのプログラマーの心に危険信号が表示されます。

私が探しているのは、可能な限り最も効率的な方法でこの吸盤を解決するための方法論です (あまり多くのコードを含めないようにしてください - 私はその部分を自分で理解したいと思っています)。

可能であれば、数学的アルゴリズムは避けたいと思っています。それらは簡単すぎて、100% 私の仕事ではありません。

誰かが Sudoku パズルを解くための段階的で効率的な思考プロセスを (人間またはコンピュータによって) 提供できれば、私はとても幸せです :)。私は漠然としたものを探しています (それは挑戦です) が、私を始めるのに十分な情報を提供します (完全に迷うことはありません)。

どうもありがとう、

ジャスティアン・マイヤー

編集:

私のコードを見て、私は次のことを考えました: これらの解法状態 (つまり、数独グリッド) を格納する可能性にはどのようなものがあるでしょうか。2D 配列と 3D 配列が思い浮かびます。どれが一番いいでしょうか?2D は表面から管理する方が簡単かもしれませんが、3D 配列は「ボックス」/「ケージ」番号も提供します。

編集:

どうでも。3D 配列を使用します。