Код:
Код: Выделить всё
HotKeySet("{esc}","es")
$file=FileOpen("comb.txt",2)
Dim $symb_array[69]
$symb_array[0]=""
$symb_array_start=$symb_array[0]
$symb_array_end=68
$wlength=InputBox("","Введите максимальную длину перебираемых слов")
Dim $out[$wlength]
$outlength=$wlength-1
$c=1
for $i=48 To 57 Step 1
afill($i)
Next
for $i=97 To 122 Step 1
afill($i)
Next
for $i=224 to 255 Step 1
afill($i)
Next
$n_up=0
For $i=0 To $outlength Step 1
$out[$i]=$symb_array_start
Next
While 1
$out[$outlength]=fpp($outlength)
flwr()
check();=1 Then Exit
WEnd
;~ ###################################################
Func es()
if MsgBox(4,"&","Выходим?")=6 Then Exit
EndFunc
Func fpp($index)
For $i=0 To $symb_array_end Step 1
if $symb_array[$i]=$out[$index] Then Return $symb_array[$i+1]
Next
EndFunc
Func flwr()
$tofile=""
For $j=0 To $outlength Step 1
$tofile&=$out[$j]
Next
FileWrite($file,$tofile&@CRLF)
EndFunc
Func check()
if $out[$outlength]=$symb_array[$symb_array_end] And $n_up=0 Then ;
$n_up+=1
offset($outlength)
EndIf
EndFunc
Func offset($i)
;~ MsgBox(0,"","offset($i)="&$i)
if $i<1 Then Exit
if $out[$i-1]<>$symb_array[$symb_array_end] Then
$out[$i-1]=fpp($i-1)
For $j=$i to $outlength Step 1
$out[$j]=$symb_array[1]
if $j=$outlength Then $out[$j]=$symb_array_start
Next
Else
$n_up+=1
offset($i-1);$n_up);+1)
EndIf
$n_up-=1
EndFunc
Func afill($char)
$symb_array[$c]=Chr($char)
$c+=1
EndFuncЕдинственный недостаток - если нужно перебирать разнорегистробуквенные слова, то работать придется с кодами символов, а не с символами, т.к. для автоита А=а...
