Оптимизировать код перебора комбинаций - C#

Узнай цену своей работы

Формулировка задачи:

Цель кода: перебор комбинаций символов из заданного набора и запись в файл. Примерно за полчаса сгенерировалось около 700 тыс. вариантов. Можно ли как то ускорить процесс?
        void parse()
        {
            string dict = "abcdefghijklmnopqrstuvwxy123456789!@#$%^&*()_+}{|\\/[].,№;:?"; //length=59
            StringBuilder word = new StringBuilder();
            word.Append("1234567890");
            string result = "";
            #region foreach
            foreach (char c0 in dict)
            {
                word[0] = c0; result += "L"+word.ToString() + Environment.NewLine;
                {
                    foreach (char c1 in dict)
                    {
                        word[1] = c1; result += "L" + word.ToString() + Environment.NewLine; count++;
                        foreach (char c2 in dict)
                        {
                            word[2] = c2; result += "L" + word.ToString() + Environment.NewLine; count++;
                            foreach (char c3 in dict)
                            {
                                word[3] = c3; result += "L" + word.ToString() + Environment.NewLine; count++;
                                foreach (char c4 in dict)
                                {
                                    word[4] = c4; result += "L" + word.ToString() + Environment.NewLine; count++;
                                    foreach (char c5 in dict)
                                    {
                                        word[5] = c5; result += "L" + word.ToString() + Environment.NewLine; count++;
                                        foreach (char c6 in dict)
                                        {
                                            word[6] = c6; result += "L" + word.ToString() + Environment.NewLine; count++;
                                            foreach (char c7 in dict)
                                            {
                                                word[7] = c7; result += "L" + word.ToString() + Environment.NewLine; count++;
                                                foreach (char c8 in dict)
                                                {
                                                    word[8] = c8; result += "L" + word.ToString() + Environment.NewLine; count++;
                                                    foreach (char c9 in dict)
                                                    {
                                                        word[9] = c9; result += "L" + word.ToString() + Environment.NewLine; count++;
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            #endregion
            SaveFileDialog sfd = new SaveFileDialog();
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                System.IO.File.WriteAllText(sfd.FileName + ".txt", result);
            }
        }

Решение задачи: «Оптимизировать код перебора комбинаций»

textual
Листинг программы
           var word = "1234567890".ToCharArray();
            StringBuilder result = new StringBuilder();
            foreach (char c0 in dict)
            {
                word[0] = c0; result.Append('L').Append(word, 0, word.Length).AppendLine();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5