Генерация всех сочетаний элементов массива - C#
Формулировка задачи:
Всем здравствуйте, существует массив в котором все буквы английского, как большие так и маленькие, и 10 цифр от 0 до 9. Получается массив из 62 элементов. Необходимо сгенерировать все возможные сочетания элементов массива длиной от 6 до 15 символов... и желательно результат сохранить в текстовый файл...
Всем заранее огромное спасибо, желательно писать с небольшими комментариями, т.к. я новичок.
Решение задачи: «Генерация всех сочетаний элементов массива»
textual
Листинг программы
using System.IO;
using System;
using System.Text;
namespace ConsoleApplicationTest
{
internal class Program
{
public static void Main(string[] args)
{
char[] arAlphabet = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; // используемый алфавит
int n = 6; // количество мест в комбинации
char[] arBuffer = new char[n];
const string fileName = "ResultGenerate.txt";
// файл при каждом запуске должен создаваться заново
StreamWriter writer = File.CreateText(fileName);
writer.Close();
// Накопитель строк.
StringBuilder stringBuilder = new StringBuilder((int) Math.Pow(arAlphabet.Length, n)* (n+2));
RecursionGenerateCombinationsToFile(arAlphabet, arBuffer, 0, stringBuilder);
// Записываем полученный результат в файл.
writer = File.AppendText(fileName);
writer.Write(stringBuilder.ToString());
writer.Close();
}
private static void RecursionGenerateCombinationsToFile(char[] arAlphabet, char[] arBuffer, int order,
StringBuilder stringBuilder)
{
if (order < arBuffer.Length)
for (int i = 0; i < arAlphabet.Length; i++)
{
arBuffer[order] = arAlphabet[i];
RecursionGenerateCombinationsToFile(arAlphabet, arBuffer, order + 1, stringBuilder);
}
else
{
for (int i = 0; i < arBuffer.Length; i++)
stringBuilder.Append(arBuffer[i]);
stringBuilder.AppendLine();
}
}
}
}