Создание коллекции для последующей обработки - C#

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

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

Доброго времени суток. Подскажите, каким образом лучше написать метод по формированию коллекции, к примеру состоящую из массива типа char, которая будет автоматически сформирована из чисел от 0 до 9 и букв к примеру латинского алфавита. Причем в данной коллекции не должно присутствовать повторяющихся значений и размерность (количество символов в одной ячейке) должна задаваться в качестве параметра. Например: 01234 01235 01236 ... 98765 Если с буквами, то: 0123 0124 ... zyxt zyxv

Решение задачи: «Создание коллекции для последующей обработки»

textual
Листинг программы
  1. static void Main()
  2. {
  3.     // Простой вывод на экран (в конце false)
  4.     foreach (char[] c in Generator.Strings("abc", 3, false))
  5.         Console.WriteLine(c);
  6.  
  7.     // Создание списка
  8.     List<char[]> strings = Generator.Strings("abc1", 2).ToList();
  9.     foreach (char[] c in strings)
  10.         Console.WriteLine(c);
  11.  
  12.     Console.ReadKey();
  13. }
  14.  
  15. class Generator
  16. {
  17.     IEnumerable<char> Alphabet;
  18.     char[] Return;
  19.     bool Copy;
  20.  
  21.     Generator(IEnumerable<char> Alphabet,int Size, bool Copy)
  22.     {
  23.         this.Alphabet = Alphabet;
  24.         this.Return = new char[Size];
  25.         this.Copy = Copy;
  26.     }
  27.  
  28.     IEnumerable<char[]> GetStrings(int Deep = 0)
  29.     {
  30.         if (Deep == Return.Length)
  31.         {
  32.             yield return Copy ? (char[])Return.Clone() : Return;
  33.         }
  34.         else
  35.         {
  36.             foreach (char c in Alphabet)
  37.             {
  38.                 Return[Deep] = c;
  39.                 foreach (var r in GetStrings(Deep + 1))
  40.                     yield return r;
  41.             }
  42.         }
  43.     }
  44.  
  45.     public static IEnumerable<char[]> Strings(IEnumerable<char> Alphabet, int Size, bool Copy = true)
  46.     {
  47.         return new Generator(Alphabet, Size, Copy).GetStrings();
  48.     }
  49. }

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


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

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

12   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы