Создание коллекции для последующей обработки - C#
Формулировка задачи:
Доброго времени суток.
Подскажите, каким образом лучше написать метод по формированию коллекции, к примеру состоящую из массива типа char, которая будет автоматически сформирована из чисел от 0 до 9 и букв к примеру латинского алфавита.
Причем в данной коллекции не должно присутствовать повторяющихся значений и размерность (количество символов в одной ячейке) должна задаваться в качестве параметра.
Например:
01234
01235
01236
...
98765
Если с буквами, то:
0123
0124
...
zyxt
zyxv
Решение задачи: «Создание коллекции для последующей обработки»
textual
Листинг программы
- static void Main()
- {
- // Простой вывод на экран (в конце false)
- foreach (char[] c in Generator.Strings("abc", 3, false))
- Console.WriteLine(c);
- // Создание списка
- List<char[]> strings = Generator.Strings("abc1", 2).ToList();
- foreach (char[] c in strings)
- Console.WriteLine(c);
- Console.ReadKey();
- }
- class Generator
- {
- IEnumerable<char> Alphabet;
- char[] Return;
- bool Copy;
- Generator(IEnumerable<char> Alphabet,int Size, bool Copy)
- {
- this.Alphabet = Alphabet;
- this.Return = new char[Size];
- this.Copy = Copy;
- }
- IEnumerable<char[]> GetStrings(int Deep = 0)
- {
- if (Deep == Return.Length)
- {
- yield return Copy ? (char[])Return.Clone() : Return;
- }
- else
- {
- foreach (char c in Alphabet)
- {
- Return[Deep] = c;
- foreach (var r in GetStrings(Deep + 1))
- yield return r;
- }
- }
- }
- public static IEnumerable<char[]> Strings(IEnumerable<char> Alphabet, int Size, bool Copy = true)
- {
- return new Generator(Alphabet, Size, Copy).GetStrings();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д