2009-10-18 7 views
0

je dois tracer tous les résultats Lorsque jetant quatre pièces à la foisrésultat possible en C#

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()); 
    } 
} 

} 

La sortie était

System.String [], ........... ....

Qu'est-ce qui n'a pas fonctionné?

Répondre

11

vous choisissez les tableaux, vous devez être la sélection first, second ...

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

BTW vous n'avez pas besoin de créer différentes pièces identiques, vous pouvez lancer la même pièce plusieurs times:

 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 
+0

Ceci est une autre question, lors de la sélection que je souhaite omettre {chef, chef, chef, chef} et {queue, queue, queue,} comment est-il possible? – Isuru

+0

'où d'abord! = Seconde || deuxième! = troisième || troisième! = quatrième » – user7116

6

Comme l'a dit Motti, vous choisissez la mauvaise chose. Cependant, je voudrais souligner que cela peut être simplifié, que vous avez seulement besoin d'un tableau, et vous ne pas besoin d'un type anonyme:

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); 
    } 
} 

Pour répondre à ce commentaire, qu'exclure HHHH et TTTT vous veulent quelque chose comme:

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); 
    } 
} 
+0

Vu ta réponse après mon montage (grands esprits et tout ça (pas de plagiat ici, pas de sirree)). – Motti

+0

Comme motti a dit que j'espère que même une seule pièce suffit, encore dois-je aller pour les côtés de tableau? – Isuru

+0

désolé vous avez raison! Je l'ai eu M. Jon. – Isuru

Questions connexes