forfrends [?]
дальше не пробовал тенденция понятна. + кушает ОЗУ, так как создается в памяти масив со всеми комбинациями, и лишь в конце записывается в файл.
1. Я бы сказал так: я написал некий алгоритм, один из способов как это сделать используя свою идею. Писать сразу в файл никто не запрещал, вместо присоединения в переменную выполняете FileWrite.
2. Я нашёл код
inx несовершенным, незнание как работает StringSplit без разделителя, использование Dim, которое в 99% не должно использоваться вообще в скриптах. А также странное использование рекурсивного вызова ради каждого символа, при этом каждый раз проверять его длину, не проще ли в цикле задать длину, чтобы не делать пустых ходов.
3. Красота алгоритма - подстраиваться под язык программирования. На другом языке возможно тоже самое пришлось бы делать совершенно иным способом. Возможно некоторую нагрузочную работу переложить на внутренний движок интерпретатора, потому что реализация этого же алгоритма кодом AutoIt3 будет медленнее в 10 раз, из-за одной только проблемы скорости интерпретации.
4. Я сделал универсально, то есть задавать размеры можно заранее. Это накладывает вычислительные процессы внутри цикла. Естественно задав жёсткие значения можно ускорить немного цикл.
Ещё пару вопросов:
1. Зачем сохранять в файл? Не проще ли ковать железо не отходя от кассы?
2. Если количество символом менее 10, то можно тупо записать числа, добавляя 1 в цикле, а потом сделать 10 раз StringReplace, заменив цифры на нужные символы по позициям.