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

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

9
2つの画像を比較するアルゴリズム
2つの異なる画像ファイル(選択した形式にかかわらず)を考えると、1つが別の画像ファイルの違法コピーであるかどうかを予測するプログラムを作成する必要があります。コピーの作成者は、回転、ネガの作成、または些細な詳細の追加(および画像の寸法の変更)などを行う場合があります。 この種の仕事をするためのアルゴリズムを知っていますか?



5
ポイントを時計回りにソートしますか?
x、yポイントの配列が与えられた場合、この配列のポイントを(全体的な平均中心点の周りで)時計回りにソートするにはどうすればよいですか?私の目標は、ポイントをライン作成関数に渡し、ラインが交差することなくできるだけ凸状に見える、凸状になるようにすることです。 それだけの価値があるので、私はLuaを使用していますが、どのような疑似コードもいただければ幸いです。 更新:参考までに、これはCiamejの優れた回答に基づくLuaコードです(「app」接頭辞は無視してください)。 function appSortPointsClockwise(points) local centerPoint = appGetCenterPointOfPoints(points) app.pointsCenterPoint = centerPoint table.sort(points, appGetIsLess) return points end function appGetIsLess(a, b) local center = app.pointsCenterPoint if a.x >= 0 and b.x < 0 then return true elseif a.x == 0 and b.x == 0 then return a.y > b.y end local …

15
合計が指定された数値に最も近い配列の3つの要素を見つける
整数の配列が与えられた場合、A 1、A 2、...、A n負の値と正の値を含む、および別の整数Sが与えられたとします。次に、配列内で3つの異なる整数を見つける必要があります。その合計は、指定された整数Sに最も近くなります。 。複数のソリューションが存在する場合、それらのいずれも問題ありません。 すべての整数がint32_tの範囲内にあると想定でき、合計の計算時に算術オーバーフローは発生しません。Sは特別なものではなく、ランダムに選ばれた数です。 3つの整数を見つけるためのブルートフォース検索以外の効率的なアルゴリズムはありますか?
155 arrays  algorithm 

7
1つのベクトルを別のベクトルにコピーする高速な方法
私は2つの方法を好む: void copyVecFast(const vec<int>& original) { vector<int> newVec; newVec.reserve(original.size()); copy(original.begin(),original.end(),back_inserter(newVec)); } void copyVecFast(vec<int>& original) { vector<int> newVec; newVec.swap(original); } どうやってやるの?
155 c++  algorithm  stl 

10
良いレート制限アルゴリズムとは何ですか?
疑似コード、またはそれ以上のPythonを使用できます。私はPython IRCボットのレート制限キューを実装しようとしていますが、部分的には機能しますが、トリガーされるメッセージが制限よりも少ない場合(たとえば、レート制限は8秒あたり5メッセージで、トリガーされるのは4秒のみ)、次のトリガーが8秒を超えると(たとえば、16秒後)、ボットはメッセージを送信しますが、キューがいっぱいになり、ボットは8秒待機します。

11
ダイクストラのアルゴリズムとAスターの違いは何ですか?
私はマリオAIコンテストのメンバーが何をしているかを見ていました。彼らの何人かはA *(A-Star)Pathing Algorithmを利用してかなりきちんとしたマリオボットを構築しています。 (マリオA *ボットの動作のビデオ) 私の質問は、A-Starとダイクストラの違いを教えてください。それらを見ると、彼らは似ているようです。 なぜ誰かが他のものを使用するのですか?特にゲームでのパスのコンテキストでは?

30
らせん状にループ
友人は、NxM行列の要素をループさせるアルゴリズムを必要としていました(NとMは奇数です)。私は解決策を考え出しましたが、私の同僚のSO'ersがもっと良い解決策を考え出せるかどうかを見たかったのです。 この質問への回答として自分のソリューションを投稿しています。 出力例: 3x3マトリックスの場合、出力は次のようになります。 (0、0)(1、0)(1、1)(0、1)(-1、1)(-1、0)(-1、-1)(0、-1)(1、-1 ) さらに、アルゴリズムは非正方行列をサポートする必要があるため、たとえば5x3行列の場合、出力は次のようになります。 (0、0)(1、0)(1、1)(0、1)(-1、1)(-1、0)(-1、-1)(0、-1)(1、-1 )(2、-1)(2、0)(2、1)(-2、1)(-2、0)(-2、-1)

6
Pythonで空の文字列を分割するとき、split()が空のリストを返すのに、split( '\ n')は['']を返すのはなぜですか?
私が使用していますsplit('\n')1つの文字列内の行を取得するには、それが見つけ''.split()、空のリストを返し[]ながら、''.split('\n')戻ります['']。そのような違いの特定の理由はありますか? そして、文字列の行を数えるより便利な方法はありますか?

5
マップタイリングアルゴリズム
地図 私は、perlinノイズハイトマップを使用してJavascriptでタイルベースのRPGを作成し、ノイズの高さに基づいてタイルタイプを割り当てています。 マップはこのように見えます(ミニマップビューで)。 画像の各ピクセルからカラー値を抽出し、タイル辞書のタイルに対応する(0〜255)の間の位置に応じて整数(0〜5)に変換するかなり単純なアルゴリズムがあります。次に、この200x200の配列がクライアントに渡されます。 次に、エンジンは配列の値からタイルを決定し、それらをキャンバスに描画します。つまり、山、海など、リアルな外観の特徴を持つ興味深い世界ができあがります。 次に、私がしたかったのは、隣人が同じタイプでない場合にタイルを隣人にシームレスに混ぜ合わせるようなある種のブレンドアルゴリズムを適用することでした。上記のサンプルマップは、プレーヤーがミニマップに表示するものです。画面上に、白い長方形でマークされたセクションのレンダリングバージョンが表示されます。タイルは、単色のピクセルとしてではなく、画像とともにレンダリングされます。 これは、ユーザーがマップに表示するものの例ですが、上記のビューポートが示す場所とは異なります! この見方で、私は移行を起こしたいと思っています。 アルゴリズム 異なるタイプのタイルの隣にある場合、ビューポート内のマップをトラバースし、各タイルの上部に別の画像をレンダリングする単純なアルゴリズムを思いつきました。(マップは変更しません!いくつかの追加画像をレンダリングするだけです。)このアルゴリズムのアイデアは、現在のタイルの近傍をプロファイルすることでした: これは、エンジンがレンダリングする必要のあるシナリオの例です。現在のタイルはXでマークされたタイルです。 3x3配列が作成され、その周りの値が読み込まれます。この例では、配列は次のようになります。 [ [1,2,2] [1,2,2] [1,1,2] ]; 私のアイデアは、可能なタイル構成の一連のケースを考え出すことでした。非常に単純なレベルで: if(profile[0][1] != profile[1][1]){ //draw a tile which is half sand and half transparent //Over the current tile -> profile[1][1] ... } これはこの結果を与えます: そこから遷移として働く[0][1]の[1][1]ではなく、から[1][1]の[2][1]、どこのハードエッジが残ります。したがって、その場合はコーナータイルを使用する必要があると考えました。私は2つの3x3スプライトシートを作成し、必要なタイルのすべての可能な組み合わせを保持すると考えました。次に、ゲーム内にあるすべてのタイルについてこれを複製しました(白い領域は透明です)。これは、タイルのタイプごとに16タイルになります(各スプライトシートの中央のタイルは使用されません)。 理想的な結果 したがって、これらの新しいタイルと正しいアルゴリズムを使用すると、サンプルセクションは次のようになります。 私が行ったすべての試みは失敗しましたが、アルゴリズムには常にいくつかの欠陥があり、パターンは奇妙になってしまいます。私はすべてのケースを正しくすることができないようで、全体的にそれを行うには悪い方法のようです。 解決策? したがって、この効果をどのように作成できるか、またはプロファイリングアルゴリズムを作成するための方向性に関する代替ソリューションを誰かが提供できるとしたら、私は非常に感謝します!

18
平らな構造から効率的に木を構築する方法は?
フラットな構造のオブジェクトがたくさんあります。これらのオブジェクトにはIDおよびParentIDプロパティがあり、ツリーに配置できます。それらは順不同です。各ParentIDプロパティは、必ずしもID構造内のと一致するとは限りません。したがって、それらはこれらのオブジェクトから出現するいくつかのツリーである可能性があります。 これらのオブジェクトをどのように処理して、結果のツリーを作成しますか? 私は解決策からそれほど遠くないですが、それは最適からは程遠いと確信しています... これらのツリーを作成して、データを適切な順序でデータベースに挿入する必要があります。 循環参照はありません。ParentID == nullの場合、またはParentIDが他のオブジェクトで見つからない場合、ノードはRootNodeです。

30
その行または列に0が含まれている場合、行列のすべてのセルを0に設定します。
この投稿を改善してみませんか?この質問に対する詳細な回答を提供します。これには、引用と、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 0と1を持つNxN行列が与えられます。含まれているすべての行を設定し0、すべてに0Sをし、含まれているすべての列セット0すべてに0秒。 例えば 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 結果は 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 …

30
3つ以上の数値の最小公倍数
複数の数値の最小公倍数をどのように計算しますか? これまでのところ、2つの数値の間でしか計算できません。しかし、それを拡張して3つ以上の数値を計算する方法はわかりません。 これまでのところ、これは私がやった方法です LCM = num1 * num2 / gcd ( num1 , num2 ) gcdでは、数値の最大公約数を計算する関数です。ユークリッドアルゴリズムの使用 しかし、3つ以上の数値を計算する方法がわかりません。
152 algorithm  math  lcm 

30
最もコンパクトなマッピングn→isprime(n)を制限Nまで作成する方法は?
当然、bool isprime(number)クエリできるデータ構造があるからです。範囲(1、N]のメモリ消費量が最も少ないデータ構造を生成するアルゴリズムである最適なアルゴリズム を定義します(ここでNは定数です。 私が探しているもののほんの一例:すべての奇数を表すことができます)たとえば、指定された範囲の数値(1、10)の1ビットで、3から始まります。1110 次の辞書はもっと絞れるでしょう?いくつかの作業で5の倍数を削除することもできますが、1、3、7、または9で終わる数字がビットの配列に存在する必要があります。 どうすれば問題を解決できますか?

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