問題タブ [combinations]
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.
algorithm - 一方の数値が他方より大きい場合に、2 つの数値の可能な結果の数
結果を計算するアルゴリズムを作成しようとしています。しかし、組み合わせ論の助けが必要です。
1 から 10 までの 2 つの数を選択する必要があるとします。数え方の基本的な規則から、制限がない場合、可能な結果の数は 10 * 10 = 100 です。 2番目を選択した結果)。
最初の数が 2 番目の数よりも大きくなければならない場合、考えられる結果の数はいくつですか?
python - 組み合わせと順列を効率的にカウントする
順列と組み合わせをカウントするコードがいくつかあり、多数の場合にうまく機能するようにしようとしています。
大規模な中間結果を回避する順列のより良いアルゴリズムを見つけましたが、組み合わせについてはまだ改善できると思います。
これまでのところ、nCr の対称性を反映するために特別なケースを用意しましたが、不必要に大きな中間結果である factorial(r) の呼び出しを回避するより良いアルゴリズムを見つけたいと思っています。この最適化を行わないと、最後の doctest で factorial(99000) を計算するのに時間がかかりすぎます。
組み合わせを数えるより効率的な方法を提案できる人はいますか?
c# - Path.Combine とドット表記
Path.Combine
絶対パスと相対パスを正しく組み合わせるのに役立つメソッドに似たものを探しています。たとえば、私はしたいです
c:\alpha\gamma
代わりc:\alpha\..\gamma
に降伏するPath.Combine
。これを達成する簡単な方法はありますか?言うまでもなく、.
パスまたは複数の..
パス (例: ..\..\
) を正しく機能させるには、ピリオドも必要です。
algorithm - 「ドミノコンビネーション」アルゴリズムを探しています
私はコーダーとしての見習い期間を完了するつもりであり、素晴らしい j2me プロジェクトに取り組もうとしていますが、私が望んでいたほど数学アルゴリズムが得意ではないことを認めなければなりません。
私の問題は、特定の値のセットから可能なすべての「ドミノ ペア」を作成することです。例: 可能な値は 0 から 6 までです。これらの値を持つドミノ トークンを想像してみてください。出力は次のようになります。
00
01
02
03
04
05
06
11
12
13
...
各ペアは 1 回しか表示されませんが、2 つの等しい値を持つペアが存在する可能性があります。
私はすでにこの問題を検索しましたが、この特定の問題の解決策が見つからなかったか、アルゴリズムがどのように機能するかを本当に理解していませんでした。
説明とアルゴリズムをいただければ幸いです。代替ソリューションも自由に投稿してください。解決策があるだけでなく、それを理解することも望んでいます;)
c# - 繰り返しのない組み合わせ
コレクションがありますList<Car>
。
このコレクションの各アイテムを、繰り返しなしで他のアイテムと比較する方法。
元:
- 反復:
この車はアウディで、セカンドカーはBMWです
これは許可されていません:
n 反復
この車はBMWで、2番目の車はアウディです
より明確:
車を2回比較したくないだけです(最初の繰り返しで車1と車2を比較し、次の車2はベース車で、車1は2番目の車です)
私のひどい英語でごめんなさい
c# - 最も (速度) 効果的な方法で、ポイントのすべての有効な組み合わせ
要素の組み合わせを生成することに関して、かなりの数の質問があることは承知していますが、これには、新しい質問をする価値のあるひねりがあると思います。
私のお気に入りのプロジェクトでは、後でアプリケーションの実行時の動作を改善するために、多くの状態を事前に計算する必要があります。私が苦労しているステップの1つはこれです:
2 つの整数の N 個のタプルが与えられた場合 (これらは私のユース ケースではありませんが、ここではポイントと呼びましょう。大まかに言えば X/Y に関連しています)、特定のルールのすべての有効な組み合わせを計算する必要があります。
ルールは次のようなものかもしれません
- 「含まれるすべての点は、同じ X 座標を持つ他のすべての点を除外します」
- 「含まれるすべてのポイントは、奇数のX座標を持つ他のすべてのポイントを除外します」
この事実が選択プロセスの改善につながることを願っていますが、入力するにつれて数学のスキルが復活しているだけで、エレガントなアルゴリズムを思いつくことができません.
- ポイントのセット (N) は小さく始まりますが、すぐに 64 を超えます (「ビットマスクとして長く使用する」ソリューションの場合)
- 私はこれを C# で行っていますが、根本的な考え方を説明していれば、どの言語のソリューションでも問題ありません。
ありがとう。
Vlad の回答に応じて更新します。
たぶん、質問を一般化するという私の考えは悪いものでした。上記の私のルールはその場で考案されたものであり、単なるプレースホルダーです。1 つの現実的なルールは次のようになります。
- 「含まれるすべての点は、選択した点の上の三角形の他のすべての点を除外します」
そのルールと (2,1) を選択することにより、除外します
- (2,2) - 真上
- (1,3) (2,3) (3,3) - 次の行
- 等々
したがって、ルールは固定されており、一般的ではありません。残念ながら、最初に提供した X/Y サンプルよりも複雑です。
algorithm - 任意の長さまでの任意のアルファベットのすべての組み合わせを生成する
単一の文字を保持する任意のサイズの配列があるとします。任意の長さまで、これらの文字の可能なすべての組み合わせを計算したいと思います。
したがって、私の配列が [1, 2, 3] であるとしましょう。ユーザー指定の長さは 2 です。可能な組み合わせは [11, 22, 33, 12, 13, 23, 21, 31, 32] です。
配列を並べ替えるだけでなく、任意の長さを許可する適切なアルゴリズムを見つけるのに本当に苦労しています。ああ、速度は絶対に重要というわけではありませんが、適度に高速であるべきです。
algorithm - 値の単一のランダムな組み合わせを選択するアルゴリズム?
明確な値があり、それらをランダムy
に選択したいとします。x
これを行うための効率的なアルゴリズムは何ですか?時間を呼び出すこともできますが、が大きいrand()
x
とパフォーマンスが低下します。x
y
ここでは組み合わせが必要であることに注意してください。各値は同じ確率で選択される必要がありますが、結果での順序は重要ではありません。確かに、順列を生成するアルゴリズムはどれでも適格ですが、ランダムな順序を必要とせずにこれをより効率的に行うことが可能かどうか疑問に思います。
0から上限NまでのK個の非反復整数のリストを効率的に生成するには、この順列のケースをどのようにカバーしますか。
c++ - 複数のベクトルのデカルト積
以前にも同様の質問がありましたが、私の質問と完全に一致するものは見つかりませんでした。
それぞれが 200 ~ 500 の 4 桁の整数を保持する 4 つのベクトルがあります。各ベクトルの正確な要素数はさまざまですが、特定の値に修正できました。これら 4 つのベクトルの要素の可能な組み合わせをすべて見つける必要があります。
例えば:
v1[10, 30] v2[11, 45] v3[63, 56] v4[82, 98]
だから私はこのようなものを得るだろう:
[10、11、63、82]; [30、11、63、82]; [10、45、63、82]; [10, 45, 56, 82] など..
このアルゴリズムの一般的な名前はありますか?オンラインでいくつかの参照を見つけることができますか? それ以外の場合は、C++ でこれを実装するためのヒントが役立ちます。アルゴリズムを実行する必要があるのは 1 回だけなので、パフォーマンスはそれほど問題ではありません。STL には何かが組み込まれていますか?