GQ08 II: combinaisons
Encore un petit assez simple mais attention, bonus pour celui qui l'écrit en C# classique sans utiliser la 'sugar syntax' de Linq.
Je voudrais lister l'ensemble des associations possibles avec les éléments de ces deux tableaux.
var values1 = new string[] { "1", "2", "3" };
var values2 = new string[] { "A", "B" };
var q = ?
foreach (var v in q)
Console.WriteLine(v);
Mitsu
Comments
Anonymous
August 06, 2008
PingBack from http://blog.a-foton.ru/2008/08/gq08-ii-combinaisons/Anonymous
August 06, 2008
public static IEnumerable<string> Combinaisons(IEnumerable<string> values1, IEnumerable<string> values2) { foreach (string v1 in values1) foreach (string v2 in values2) yield return string.Concat(v1, v2); } var q = Combinaisons(values1, values2);Anonymous
August 06, 2008
Sinon en LINQ ça donnerait ça : var q = from v1 in values1 from v2 in values2 select string.Concat(v1, v2);Anonymous
August 06, 2008
Eh oh Matthieu, on n'est pas la pour faire du C# 2.0 ! :p J'attends une écriture plus moderne, cependant je reviendrai sur ta solution un peu plus tard.Anonymous
August 06, 2008
C'est sûrement pas ce que t'attend mais tu peux faire ça : var values1 = new string[] { "1", "2", "3" }; var values2 = new string[] { "A", "B" }; Array.ForEach(values1, v1 => Array.ForEach(values2, v2 => Console.WriteLine(string.Concat(v1, v2))));Anonymous
August 06, 2008
var q = values1.SelectMany(v1 => values2.Select(v2 => string.Concat(v1, v2)));Anonymous
August 06, 2008
Mais Mathieu, laisse moi répondre un peu ^^ c'est bien : var q = values1.SelectMany(digit => values2.Select(c => digit+c)); (SelectMany transforme un IEnumerable<IEnumerable<T>> en IEnumerable<T>)Anonymous
August 06, 2008
Comment lit on "en français" le code donné par Mathieu ? Merci, j'ai un peu de mal.Anonymous
August 07, 2008
Voici la réponse au précédent Quizz . Pour la version simple: var q = from v1 in values1 from v2 in values2Anonymous
August 18, 2008
Bon, j'arrive après la bagarre, mais voilà ma solution sans le "syntax sugar" ;) var q = values1.Join(values2, s => 1, s => 1, (s1, s2) => s1 + s2); (un peu brutal, certes...)