0

すべての結果をたどらなければならない 一度に4枚のコインを投げるとき

public void TossCoin()
{
    var coin1 = new string[]{ "Head", "Tail" };
    var coin2 =new string[] { "Head", "Tail" };
    var coin3 =new string[] { "Head", "Tail" };
    var coin4 =new string[] { "Head", "Tail" };
    var outcome =from first in coin1 
                 from second in coin2
                 from third in coin3
                 from fourth in coin4 
                 select new {possibility= coin1+","+coin2+","+coin3+","+coin4};

    foreach (var oc in outcome)
    {
        Console.WriteLine(oc.possibility.ToString());
    }
}

}

出力は

System.String[]、...

何が悪かったのか ?

4

2 に答える 2

11

配列を選択しています。選択する必要がありfirstますsecond...

select new { possibility = first + "," + second + "," + third + "," + fourth };

ところで、異なる同一のコインを作成する必要はありません。同じコインを数回投げることができます。

        var coin = new string[] { "Head", "Tail" };
        var outcome =
             from first in coin
             from second in coin
             from third in coin
             from fourth in coin
             select new { possibility = first + "," + second + "," + third + "," + fourth 
于 2009-10-18T15:33:13.630 に答える
6

モッティが言ったように、あなたは間違ったものを選んでいます。ただし、必要な配列は 1 つだけであり、匿名型は必要ないため、これを単純化できることを指摘したいと思います。

public void TossCoin()
{
    string[] sides = { "Head", "Tail" };
    var outcome = from first in sides 
                  from second in sides
                  from third in sides
                  from fourth in sides 
                  select first + "," + second + "," + third + "," + fourth;

    foreach (string oc in outcome)
    {
        Console.WriteLine(oc);
    }
}

コメントに答えるには、HHHH と TTTT を除外するには、次のようにします。

public void TossCoin()
{
    string[] sides = { "Head", "Tail" };
    var outcome = from first in sides 
                  from second in sides
                  from third in sides
                  from fourth in sides
                  where !(first == second && second == third && third == fourth)
                  select first + "," + second + "," + third + "," + fourth;

    foreach (string oc in outcome)
    {
        Console.WriteLine(oc);
    }
}
于 2009-10-18T15:38:32.167 に答える