2

3 つ以上のグループで一意に繰り返される 3 つの値の組み合わせの完全なセットを取得できる手順を作成する必要があります。

たとえば、3 つのグループ (R1 - R2 - R3) と 3 つの値 (A - AB - B) を持つことができ、考えられるすべての組み合わせを 3 つのグループに分割する必要があります。

このような:

Groups    1°   2°   3°   4°   5°   .......

R1        A -  A -  AB - AB - AB   ...
R2        A -  A -  A  - A  - BB   ...
R3        A -  AB - A  - A  - A    ...

可能なすべてのシーケンスが存在し、決して繰り返されないようにする必要があります。

残念ながら、私はプログラミングの世界に不慣れで、組み合わせ論の知識がありません。扱い方が思いつかなかった…

わかりにくかったら申し訳ありませんが、助けていただける方によろしくお願いします。

4

1 に答える 1

1

値のすべての組み合わせが必要だと思います....

これがC#でそれを行う一般的な方法です...

static IEnumerable<IEnumerable<T>> Combinations<T>(IEnumerable<T> list, int length)
{
    if (length == 1) return list.Select(t => new T[] { t });

    return Combinations(list, length - 1)
        .SelectMany(t => list, (t1, t2) => t1.Concat(new T[] { t2 }));
}

そして、あなたはそれをこのように呼びます...

    var groups = new List<string>() { "R1", "R2", "R3" };
    var values = new List<string>() { "AA", "AB", "BB" };
    var combinations = Combinations(values, groups.Count);
    var i = 0;
    var stringFormat =  string.Join(", ", groups.Select(x => x +"={"+ i++ +"}"));
    // stringFormat looks like "R1={0}, R2={1}, R3={2}"
    foreach (var value in combinations)
    {
        var arrayOfValues = value.ToArray();  // each value is a list of the combinations.
        Console.WriteLine(string.Format(stringFormat, arrayOfValues));
    }

あなたはあなたの経験不足について言及したので、従うのが簡単なハードコードされた方法でそれを行うことを含めました...

    var values = new List<string>() { "AA", "AB", "BB" };
    foreach (var value1 in values)
    {
        foreach (var value2 in values)
        {
            foreach (var value3 in values)
            {
                Console.WriteLine(string.Format("R1 = {0}, R2 = {1}, R3 = {2}", value1, value2, value3));
            }
        }
    }

出力は次のようになります...

R1=AA, R2=AA, R3=AA
R1=AA, R2=AA, R3=AB
R1=AA, R2=AA, R3=BB
R1=AA, R2=AB, R3=AA
R1=AA, R2=AB, R3=AB
R1=AA, R2=AB, R3=BB
R1=AA, R2=BB, R3=AA
R1=AA, R2=BB, R3=AB
R1=AA, R2=BB, R3=BB
R1=AB, R2=AA, R3=AA
R1=AB, R2=AA, R3=AB
R1=AB, R2=AA, R3=BB
R1=AB, R2=AB, R3=AA
R1=AB, R2=AB, R3=AB
R1=AB, R2=AB, R3=BB
R1=AB, R2=BB, R3=AA
R1=AB, R2=BB, R3=AB
R1=AB, R2=BB, R3=BB
R1=BB, R2=AA, R3=AA
R1=BB, R2=AA, R3=AB
R1=BB, R2=AA, R3=BB
R1=BB, R2=AB, R3=AA
R1=BB, R2=AB, R3=AB
R1=BB, R2=AB, R3=BB
R1=BB, R2=BB, R3=AA
R1=BB, R2=BB, R3=AB
R1=BB, R2=BB, R3=BB
于 2013-07-16T23:26:30.570 に答える