タグ付けされた質問 「algorithm」

アルゴリズムは、問題に対する抽象的な解決策を定義する明確に定義された一連のステップです。このタグは、問題がアルゴリズム設計に関連している場合に使用します。

22
三目並べゲームオーバーを決定するためのアルゴリズム
私は三目並べのゲームをJavaで書いており、ゲームの終了を判断する私の現在の方法は、ゲームが終了する可能性のある次のシナリオを説明しています。 ボードがいっぱいで、勝者はまだ宣言されていません:ゲームは引き分けです。 クロスが勝った。 サークルが勝ちました。 残念ながら、それを行うために、これらのシナリオの事前定義されたセットをテーブルから読み取ります。ボード上に9スペースしかないため、これは必ずしも悪いことではなく、テーブルは少し小さいですが、ゲームが終了したかどうかを判断するより良いアルゴリズム的な方法はありますか?誰かが勝ったかどうかの判断は問題の核心です。9つのスペースがいっぱいであるかどうかを確認することは簡単です。 テーブルメソッドが解決策になるかもしれませんが、そうでない場合は何ですか?また、ボードのサイズが異なる場合はどうなりn=9ますか?何それは、言ってはるかに大きいボードれた場合n=16、n=25など連続して配置項目の数を引き起こし、上にあるように勝つためにx=4、x=5など?すべてに使用する一般的なアルゴリズムn = { 9, 16, 25, 36 ... }?

12
良い世界地図生成アルゴリズムを探しています[終了]
休業。この質問はもっと焦点を合わせる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 この質問を改善する 私は文明のようなゲームに取り組んでおり、地球のような世界地図を生成するための優れたアルゴリズムを探しています。私はいくつかの代替案を試してみましたが、まだ本当の勝者を見つけていません。 1つのオプションは、Perlinノイズを使用して高さマップを生成し、世界の約30%が土地になるように水を追加することです。パーリンノイズ(または同様のフラクタルベースの手法)は地形に頻繁に使用され、かなり現実的ですが、結果として得られる大陸の数、サイズ、および位置を制御する方法はあまりありません。ゲームプレイの観点から持っています。 2番目のオプションは、ランダムに配置された1タイルシード(タイルのグリッドで作業しています)から開始し、大陸の目的のサイズを決定し、各ターンで既存の大陸に水平または垂直に隣接するタイルを追加します。希望のサイズに達しました。他の大陸についても繰り返します。この手法は、Civilization 4で使用されているアルゴリズムの一部です。問題は、最初の数大陸を配置した後、他の大陸に囲まれている開始場所を選択できるため、新しい場所に適合しないことです。また、大陸を近づけすぎて、大陸よりも川のように見える傾向があります。 グリッドベースのマップ上に現実的な大陸を生成し、その数と相対的なサイズの制御を維持するための優れたアルゴリズムを知っている人はいますか?
97 algorithm  map  terrain 

11
ユークリッドのアルゴリズムの時間の複雑さ
ユークリッドの最大の共通分母アルゴリズムの時間の複雑さを判断するのが困難です。この擬似コードのアルゴリズムは次のとおりです。 function gcd(a, b) while b ≠ 0 t := b b := a mod b a := t return a aとbに依存しているようです。私の考えでは、時間の複雑さはO(a%b)です。あれは正しいですか?それを書くより良い方法はありますか?

5
動的プログラミングを理解したい人のための簡単な例[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 5年前に閉鎖。 この質問を改善する ダイナミックプログラミングを学びたい人のために、扱いやすく理解できる例を探しています。動的プログラミングとは何かについて、ここで良い答えがあります。フィボナッチ数列は良い例ですが、表面を傷つけるには小さすぎます。アルゴリズムのクラスはまだ受講していませんが、春に向けて私のリストに載っていれば幸いです。


4
どのようにドキュメントをルセンインデックス化しますか?
Luceneに関するドキュメントを読んだ。また、私はこのリンク(http://lucene.sourceforge.net/talks/pisa)のドキュメントを読みました。 Luceneがドキュメントにインデックスを付ける方法と、Luceneがインデックス付けに使用するアルゴリズムがわかりません。 上記のリンクでは、Luceneがこのアルゴリズムをインデックス作成に使用していると述べています。 増分アルゴリズム: セグメントインデックスのスタックを維持する 着信ドキュメントごとにインデックスを作成する スタックに新しいインデックスをプッシュする b = 10をマージファクターとします。M = 8 for (size = 1; size < M; size *= b) { if (there are b indexes with size docs on top of the stack) { pop them off the stack; merge them into a single index; push the …

10
数値のExcelのような列名を取得するアルゴリズム
私はいくつかのExcelドキュメントを生成するスクリプトに取り組んでおり、数値を対応する列名に変換する必要があります。例えば: 1 => A 2 => B 27 => AA 28 => AB 14558 => UMX そのためのアルゴリズムはすでに作成していますが、それを行うためのより簡単な方法とより速い方法のどちらがよいのかを知りたいです。 function numberToColumnName($number){ $abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $abc_len = strlen($abc); $result_len = 1; // how much characters the column's name will have $pow = 0; while( ( $pow += pow($abc_len, $result_len) ) < $number ){ …

30
プログラマーパズル:ゲーム全体でチェス盤の状態をエンコードする
厳密には質問ではなく、パズルのようなものです... 長年にわたり、私は新入社員の技術面接にいくつか携わってきました。「Xテクノロジーを知っていますか」という標準的な質問をする以外に、私は彼らが問題にどのように取り組むかについての感触を得ることも試みました。通常、面接の前日にメールで質問を送信し、翌日までに解決策が見つかると期待します。 多くの場合、結果は非常に興味深いものになります-間違っていますが、興味深いものです。その人が特定のアプローチをとった理由を説明できれば、その人は私の推奨を得るでしょう。 だから私はスタックオーバーフローの聴衆に向けて私の質問の1つを投げると思いました。 質問:チェスゲーム(またはそのサブセット)の状態をエンコードするために考えられる最もスペース効率の良い方法は何ですか?つまり、駒が合法的に配置されたチェス盤が与えられた場合、この初期状態と、ゲーム内のプレーヤーが取ったその後のすべての合法的な動きの両方をエンコードします。 答えに必要なコードはなく、使用するアルゴリズムの説明のみです。 編集:ポスターの1つが指摘したように、私は移動の時間間隔を考慮しませんでした。オプションの追加としてそれについても説明してください:) EDIT2:補足説明のために...エンコーダー/デコーダーはルールに対応していることを忘れないでください。実際に保存する必要があるのはプレーヤーの選択だけです。それ以外は、エンコーダー/デコーダーが認識していると見なすことができます。 EDIT3:ここで勝者を選ぶのは難しいでしょう:)たくさんの素晴らしい答え!

4
Sieve of Eratosthenesアルゴリズムの時間の複雑さ
ウィキペディアから: アルゴリズムの複雑さは O(n(logn)(loglogn))ビット操作です。 どうやってそこに着くの? 複雑さというloglogn用語が含まれているということは、sqrt(n)どこかにあることを私に教えてくれます。 最初の100個の数字(n = 100)でふるいを実行していると仮定します。数字を複合としてマークするのに一定の時間がかかる(配列の実装)と仮定すると、使用mark_composite()する回数は次のようになります。 n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2) そして、次の素数を見つけるには(たとえば、の7倍数であるすべての数に取り消し線を引いた後にジャンプする5)、操作の数はになりますO(n)。 したがって、複雑さはになりますO(n^3)。同意しますか?


16
学校の時間割を作成するためのアルゴリズム
学校の時間割を作成するアルゴリズムの既知の解決策があるかどうか疑問に思っていました。基本的に、それは、与えられたクラス-サブジェクト-ティーチャーの関連付けに対して(教師とクラスの両方で)「時間分散」を最適化することです。入力で互いに関連付けられた一連のクラス、レッスンの主題、教師があり、時刻表は午前8時から午後4時の間に収まると想定できます。 そのための正確なアルゴリズムはおそらくないだろうと思いますが、誰かがそれを開発するための良い近似やヒントを知っているかもしれません。


17
2つの画像間の類似性を測定するにはどうすればよいですか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 2年前休業。 この質問を改善する 1つのアプリケーション(Webページの場合もある)のスクリーンショットを以前に撮ったスクリーンショットと比較して、アプリケーションが正しく表示されているかどうかを確認します。アスペクトが少し異なる可能性があるため、完全一致の比較は必要ありません(Webアプリの場合、ブラウザーによっては、一部の要素が少し異なる場所にある可能性があります)。スクリーンショットがどの程度類似しているかの目安になります。 すでにそれを行うライブラリ/ツールはありますか?どのように実装しますか?

2
boost :: hash_combineのマジックナンバー
boost::hash_combineテンプレート関数は、ハッシュ(と呼ばれる参照取りseed)及びオブジェクトv。docsによると、それseedはvby のハッシュと結合します seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); これは決定論的であることがわかります。XORが使用される理由がわかります。 追加は、類似した値を広く分離してマッピングするのに役立つので、ハッシュテーブルをプローブしても問題が発生しないと思いますが、誰かが魔法の定数を説明できますか?

2
std :: setのstd :: back_inserter?
これは簡単な質問だと思います。私はこのようなことをする必要があります: std::set<int> s1, s2; s1 = getAnExcitingSet(); std::transform(s1.begin(), s1.end(), std::back_inserter(s2), ExcitingUnaryFunctor()); もちろん、std::back_inserterがないため機能しませんpush_back。 std::inserterイテレータも必要ですか?使っstd::inserterたことがないのでどうすればいいかわかりません。 誰かがアイデアを持っていますか? もちろん、私のもう1つのオプションは、のベクトルを使用して、s2後でそれを並べ替えることです。多分それは良いですか?
94 c++  algorithm  stl 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.