ABCがそれぞれ以下値を持っていたとします。
A=1,2,3,4
B=1,2
C=1,2,3
ABCそれぞれから1つの値を取り出して組み合わせを作った場合
A1,B1,C1
A1,B1,C2
A1,B1,C3
・
・
・
となり、組み合わせは24パターンとなります。
この24パターンでできる限りABCの組み合わせの遠い順で並び替えてみたものが下記の「組み合わせ並び順結果」になります。
----組み合わせ並び順結果----
1番目 = A1,B1,C1
2番目 = A2,B2,C2
3番目 = A1,B2,C3
4番目 = A2,B1,C3
5番目 = A3,B1,C2
6番目 = A3,B2,C1
7番目 = A1,B1,C2
8番目 = A1,B1,C3
9番目 = A1,B2,C1
10番目 = A1,B2,C2
11番目 = A2,B1,C1
12番目 = A2,B1,C2
13番目 = A2,B2,C1
14番目 = A2,B2,C3
15番目 = A3,B1,C1
16番目 = A3,B1,C3
17番目 = A3,B2,C2
18番目 = A3,B2,C3
19番目 = A4,B1,C1
20番目 = A4,B1,C2
21番目 = A4,B1,C3
22番目 = A4,B2,C1
23番目 = A4,B2,C2
24番目 = A4,B2,C3
例えば2番目の組み合わせ(A2,B2,C2)が出現した時点では既出の1番目の組み合わせ(1,B1,C1)と比較してABCどれもカブっていないのでカブり数は0となります。
4番目の組み合わせ(A2,B1,C3)が出現した時点では、
4番目の組み合わせは、1番目の組み合わせ(A1,B1,C1)のBと、2番目の組み合わせ(A2,B2,C2)のAと、3番目の組み合わせ(A1,B2,C3)のCがカブっています。
1〜3番目の組み合わせでそれぞれカブり数が1となります。
この場合各番目での最大カブり数は1となります。
7番目の組み合わせ(A1,B1,C2)が出現した時点では、
7番目の組み合わせは、1番〜4番と6番の組み合わせと比較してそれぞれ1つずつカブっていて、5番の組み合わせ(A3,B1,C2)はBとCの2つがカブっています。
この場合最大カブり数は2となります。
このように出来るだけ組み合わせが遠い順に並び変えたものが「組み合わせ並び順結果」となります。
ただこの「組み合わせ並び順結果」は私が一つずつ考えて並べたもので、この順番で無くても組み合わせが遠い順ならどんな並びでも構いません。
以上を踏まえて、例えば11番目の組み合わせを求める計算式があれば教えていただきたいと思います。
プログラムで全ての「組み合わせ並び順結果」を計算することはできるのですが、組み合わせ数が多いとリソースが追いつかないので順番のみでリアルタイムに割り出す方法を探しています。
言語はPHPで書いていますが、プログラムでなくても計算式でも構いません。
散々考えてみても実現できたかったのですが、実現可能でしょうか?
それだけでもわかればと思います。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/20 01:55 編集