Ну и напоследок, победитель нашего конкурса генераторов прямого перебора
:
Код:
param(
[string]$str = 'abcdefghij',
[int] $lim = 6,
[string]$path = '.\arrangement_wr_csharp_2.txt'
)
add-type @"
using System;
using System.Collections.Generic;
public class Arrangement
{
static String Convert(string sym, int num, int tLen) {
var sym0 = sym[0];
var len = sym.Length;
var res = "";
int ind;
while (num > 0) {
ind = num%len;
num = num/len;
res = sym[ind] + res;
}
return res.PadLeft(tLen, sym0);
}
public static IEnumerable<String> ArrangWithRep(string sym, int len){
for (var i = 0; i < Math.Pow(sym.Length, len); i++)
yield return Convert(sym, i, len);
}
}
"@
measure-command{
$file = new-object io.streamwriter ([io.file]::open($path,'Create'))
foreach ($item in ([arrangement]::arrangwithrep($str,$lim))){
$file.writeline($item)
}
$file.close()
} | out-file time_arrangement_wr_csharp_2.txt
TotalSeconds : 4,6773432