Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Пользователь


Сообщения: 67
Благодарности: 13

Профиль | Отправить PM | Цитировать


На данный момент финальная версия такова:
Код: Выделить весь код
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
Единственный недостаток - если нужно перебирать разнорегистробуквенные слова, то работать придется с кодами символов, а не с символами, т.к. для автоита А=а...
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:23, 28-01-2009 | #11