Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2016, 13:50   #11
kva52
 
Регистрация: 23.06.2014
Сообщений: 5
По умолчанию

В приведенных примерах кода лучше вместо continue написать break. Нечего попусту в цикле гонять.
как вариант можно предложить
Код:
    private static IEnumerable<string> CustomGenerator(int strLength, string chars)
    {
      StringBuilder sb = new StringBuilder(new string(chars[0],strLength), strLength);
      int[] indexes = new int[strLength];
      while (indexes[0] < chars.Length)
      {
        yield return sb.ToString();

        //корректируем indexes и меняем sb
        indexes[strLength - 1]++;
        for (int i = strLength - 1; i > 0; i--)
        {
          if (indexes[i] < chars.Length)
          {
            sb[i] = chars[indexes[i]];
            break;
          }
          indexes[i] = 0;
          sb[i] = chars[0];
          indexes[i - 1]++;
          if (i-1==0 && indexes[0] < chars.Length)
            sb[0] = chars[indexes[0]];
        }
      }//while
    }
kva52 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сократить код kostan3 Visual C++ 0 15.03.2013 14:08
сократить код Kirja23 Microsoft Office Excel 1 20.02.2013 22:34
сократить код kostan3 Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2013 17:24
Сократить Формулу Adrenalin_N Microsoft Office Excel 2 03.07.2011 17:28
Сократить код shapiro Помощь студентам 0 14.04.2010 17:38