問題タブ [knuth]

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 に答える
275 参照

c - D.Knuth のダンシング リンク アルゴリズムの用語の説明

D.Knuth のWeb サイトから DLX アルゴリズムをダウンロードしました。D.Knuth が問題の概要を示す最初のセクションで、列を「プライマリ」列とその他の列に分けます。これらの「プライマリ」列はどれですか? 前もって感謝します。

0 投票する
0 に答える
136 参照

algorithm - シングルトンはアルゴリズムであり、knuth でカバーされていますか

少し前に Game Programming Gems のコピーを所有し、アプリケーションでシングルトンを使用しました。シングルトンがアルゴリズムと見なされるかどうか、そうでない場合は何ですか?. 次に、Knuth のアルゴリズムの本を購入する可能性が高く、Singletons のような方法論がその本でカバーされているかどうか知りたいですか?

0 投票する
0 に答える
1281 参照

python - Python の首謀者 Minimax アルゴリズム

ここで詳しく説明されているように、マスターマインドを解決するためのドナルド・クヌースのアルゴリズムを実装しようとしています: http://en.wikipedia.org/wiki/Mastermind_(board_game)#Five-guess_algorithm

ほとんどのコードは機能していますが、(クラスのget_guessメソッドで) Minimax ステップを機能させることができません。Mastermind minimax アルゴリズムComputerGuesserについては既に調べましたが、何が間違っているのかわかりません。

助けていただければ幸いです、ありがとう。

フィードバッククラス

ユーティリティ メソッド

コンピューター推測者

編集: コードを実行すると (いくつかの print ステートメントが追加されます)、次の結果が生成されます。

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

java - Javaでシェルソート用にKnuthシーケンスを適切に実装するにはどうすればよいですか?

誰かが、Knuth シーケンスを使用する Java のシェルソートの簡単な作業サンプルを提供できますか? 私はインターネット上のいくつかの場所を見ましたが、私にとってうまくいく説明を見つけることができません. 概念レベルでシェルソートを理解しています-これは、ギャップが1に達するまで時間の経過とともに縮小するギャップで行われる挿入ソートであるため、本質的に挿入ソートです。ただし、Knuth シーケンスは (k * 3 - 1)/2 であり、最初のいくつかのギャップのリストは通常​​ [1、4、13、40、121.. など] として表されます。

私の質問は、これをどのように実装するのですか? 開始ギャップは実際には 1 ですか、それともソートされるリストのサイズよりも大きい直前にこのシーケンスによって生成された値ですか? ギャップが 1 から始まった場合、シェル ソートを正しく理解していると、目的が達成できなくなります。誰かがこれに光を当てることができますか?このことを理解するための重要な何かを見逃しているように感じます。

前もって感謝します。

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

c - 順列のためのクヌースのアルゴリズムを理解しようとしている

私は最近、自分のアルゴリズム クラスの 1 つで、Knuth のアルゴリズムを使用して、malloc された配列に格納された順列を作成するように指示されました。

セットアップは次のとおりです。

array は、順列を保持する malloced 配列へのポインタです。最初は n 個の値を格納しており、各位置はインデックス + 1 を保持しています。

したがって、n が 10 の場合、配列は最初は次のようになります。

[1、2、3、4、5、6、7、8、9、10]

「rand」変数は、1 から n までの変数を保持します。(この例では、1 ~ 10)。

Swap は、ビット排他的 OR スワップ (XOR) を行う関数であると想定されています。

最終結果は、1-n の順列になるはずです。

[5, 6, 2, 8, 7, 4, 1, 3, 10, 9] は、可能な順列の 1 つとして有効です。

ただし、[1, 1, 5, 7, 8, 2, 3, 5, 5, 6] は順列ではないため無効です。重複があります。

しかし、私たちが使用するように言われたこのコードの表と裏を作ることはできません:

したがって、配列の 2 番目の要素から始めます。(i = 1)

次に、2 つのパラメーターの XOR を試みます。

最初: &array[i]

これは、malloced 配列へのポインターのアドレスです。(ダブルポインタですよね?)

そして、2 番目のパラメーターはまったく同じものです。malloc された配列へのポインターのアドレス。

アドレスに対して XOR を実行する方法と理由を教えてください。

私は何を理解していませんか?

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