問題タブ [game-theory]
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.
python - Gambit ゲーム理論のコードが Python スクリプトを使用して実行されないのはなぜですか?
game1.py:
これは、次のエラーを示す私のコードです。
/usr/lib/python2.7/site-packages/setuptools-5.7-py2.7.egg/pkg_resources.py:1049: UserWarning: /home/raja/.python-eggs is writable by group/others and vulnerable to attack when used with get_resource_filename. Consider a more secure location (set with .set_extraction_path or the PYTHON_EGG_CACHE environment variable).
Pythonコンソールで同じコードを実行すると、正常に動作するエラーが発生しません..
algorithm - 連続する 2 つのプラスをマイナスに反転するゲーム
私はあるインタビューでこの質問をされました。質問は次のようになります
'+' と '-' の文字列があります (例: ++----++++++-+--+ )。プレーヤー 1 とプレーヤー 2 の 2 人のプレーヤーがいます。各ターンで、プレーヤーの 1 人が任意の 2 つの連続する「+」、つまり ++ を選択し、それらを -- に裏返すことができます。したがって、最初の文字列が ++----++++++-+--+ の場合、プレーヤーには次の 6 つの選択肢 (2 - 7) があります (最初の選択肢は参照用です)。
- ++----++++++-+--+
- ------++++++-+--+
- ++--------++++-+--+
- ++----+--+++-+--+
- ++----++--++-+--+
- ++----+++--+-+--+
- ++----++++---+--+
プレイヤーは1人ずつ手番を行います。最後の手を打ったプレイヤーが勝ちます (または負けます - 違いはありません)。
最初の文字列が与えられ、プレーヤー 1 が最初のターンを実行した場合、誰が勝つかを知る必要がありますか?
これは、各プレーヤーが最適なプレイを試み、各ステップで彼を勝利の位置に移動させる動きをするという、古典的なゲーム理論の問題のように思えます。
これを解決するためにどのようにアプローチできるかについてのアイデアはありますか?
PS - 解決よりもアプローチに興味があります。http://www.codechef.com/wiki/tutorial-game-theoryを読みましたが、ここで同じロジックを適用できませんでした。
algorithm - 組み合わせゲーム。両方のプレーヤーが最適にプレーした場合、どちらが勝ちますか
プレイヤーAとプレイヤーBはゲームを最適にプレイし、交互に動きます。それらは 1 から始まります。自分のターンの各プレイヤーは、現在の数字に [2,9] の任意の整数を掛けます。プレーヤーのターンの後、その数がn以上の場合、そのプレーヤーが勝ちます。
Aがスタート。nが与えられた場合、誰が勝ちますか?
例えば、
数字の 2、3、..、9 が当たりの数字です (プレイヤー A が勝ちます)。
数字 10、11、..、18 は負け数字です (プレイヤー A が負けます)
数字 19、20、..、162 は当選番号です。
勝つための戦略とは?これを解決するために Sprague-Grundy の定理をどのように適用できますか?
matlab - MATLAB での Sprague–Grundy の定理
MATLAB で「 Sprague–Grundy の定理」を実装しようとしています。この定理は基本的に、配列内の最小の除外要素を見つけようとします。たとえば、配列 [0 1 3 4 5] では、値は 2 になります。さらに、関数は、配列内の異なる行に沿って再帰できる必要があります。行列 (具体的には、グラフ理論からの隣接行列) たとえば、隣接行列があるとします。
10000
10000
0 0 0 1 0
0 1 0 0 0
0 0 1 0 0
この行列を入力として使用し、関数が 5 行目から開始された場合、行 "0 0 1 0 0" を反復し、3 列目に 1 が表示されると、関数は 3 列目に再帰します。行、次に 4 番目、次に 2 番目、そして 1 番目に再帰します。
私が問題を抱えているのは、関数入力がmatrix/arrayである再帰を行うことです。関数入力が整数の場合、再帰は十分に単純だと思いますが、行列/配列では、値を「追跡」して必要な最終配列を取得する方法がわかりません。これまでのところ、これは私のmatlabコードです:
python-2.7 - 白黒の木から頂点を削除するための優れた構造
各頂点が白または黒である Python 2.7 で (数学的な観点から) ツリーをプログラムしたいと考えています。次に、葉を削除して新しいツリーを作成できるようにしたいと考えています。ルートは、接続が 1 つしかない場合はリーフになる可能性があるため、削除できることに注意してください。
リストに異なるツリーの値を保存できるように、ツリーの ID を見つける方法はありますか? また、さまざまな小さな木のループを作成したいと考えています。たとえば、8 つ以下の頂点を持つすべての木で、考えられるすべての白黒の色を使用します。
1 つのアイデアは、そうでなければ複雑になりすぎる可能性があるため、二分木から始めることです。
これに適した構造はありますか?
algorithm - 2 人がコインを取る、ハッキーな解決策
パズルは次のとおりです。
n 個のコインが一列に並び、コインにはさまざまな値があります。コインがなくなるまで、2 人のプレイヤーが交代で列の端からコインを 1 枚取ります。より多くのお金を持つプレイヤーが勝ちます。n が偶数の場合、最初のプレイヤーが O(1) メモリと O(n) 時間で勝つか負けるかを決定できるハッキーなアルゴリズムはありますか?
動的計画法で問題を解決しましたが、ハッキーなアルゴリズムが何であるかがわかりません。検索した後、ここから解決策を見つけました:
の場合は理解できますがodd_s != even_s
、常に最初の人が勝つのですが、状況が理解できませんodd_s == even_s
でした。次の場合、勝利戦略がないことをどのように証明しodd_s == even_s
ますか?
c++ - NFS Most Wanted 2005 の作成に使用されたテクノロジ
最重要指名手配のブラック エディションは 2005 年にリリースされ、ゲームのプログラミングに C++ を使用したことを知っています。誰かが C++ のマスター知識を持っているとします。彼は NFS 2005 のようなゲームを作成したいと考えています。プログラミングを始めるために必要なツールは何ですか。NFS について私が知っていることは、ゲームが既存のエンジンを使用して作成されていないということです。たぶん私は間違っています。しかし、そうでない場合は、それらのグラフィックに使用されたものです。トラックは無視してください。ゲーム全体を完璧にするために実装されたテクノロジーを知りたいだけです。