Создание коллекции для последующей обработки - 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(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д