[C#] Générateur de combinaisons de mots

csharp

Une fois n’est pas coutume, j’ai eu une problématique intéressante en C# avec mes élèves ingénieurs.

La problématique était la suivante: réaliser une fonction qui génère toutes les combinaisons possibles de mots en connaissant les lettres possibles et la taille des mots. Après plusieurs minutes (une bonne heure en fait) je suis parvenu à faire çà:

static public IEnumerable<string> CreateCombinations(IEnumerable<char> input, int length)
        {
            foreach (var c in input)
            {
                if (length == 1)
                    yield return c.ToString();
                else
                {
                    foreach (var s in CreateCombinations(input, length - 1))
                        yield return c.ToString() + s;
                }
            }
        }

Pour l’utiliser c’est simple:

static void Main(string[] args)
        {
            StreamWriter sw = new StreamWriter("out.txt", false);
            foreach (var s in CreateCombinations("abcdefghijklmnopqrzstuvwxyz", 2))
            {
                sw.WriteLine(s);
            }
            sw.Close();
            Console.WriteLine("end");
            Console.ReadLine();
        }

Merci Internet car j’ai trouvé l’astuce en fouillant un grand nombre de forums. Pas si simple que çà !

Leave a Reply

Your email address will not be published. Required fields are marked *