Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Генерация комбинаций

Ответить
Настройки темы
[решено] Генерация комбинаций

Аватара для morgan1991

Старожил


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

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


Скажите пожалуйста, можно ли средствами автоита сгенереровать .тхт документ с всеми возможными комбинациями клавиатуры от 6 до 20 символов, на каждой новой строчке новая комбинация?

-------
Хочу научиться писать драйвера на с++


Отправлено: 21:43, 23-01-2009

 

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


Сообщения: 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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


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

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


Цитата 266903582:
для автоита А=а »
Но зато не A==a

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 00:37, 29-01-2009 | #12


Аватара для morgan1991

Старожил


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

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


Спасибо всем! А как ещё изменить это:
Цитата 266903582:
На данный момент финальная версия такова: »
Так чтобы генерировалось без русских букв?

-------
Хочу научиться писать драйвера на с++


Последний раз редактировалось morgan1991, 08-02-2009 в 00:16.


Отправлено: 15:05, 29-01-2009 | #13


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


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

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


morgan1991, Без русских так:
Код: Выделить весь код
 HotKeySet("{esc}","es")
$file=FileOpen("comb.txt",2)
Dim $symb_array[37]
	$symb_array[0]=""
	$symb_array_start=$symb_array[0]
	$symb_array_end=36
$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
$n_up=0
For $i=0 To $outlength Step 1
	$out[$i]=$symb_array_start
Next
While 1
	$out[$outlength]=fpp($outlength)
	flwr()
	check()
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)
	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)
	EndIf
	$n_up-=1
EndFunc
Func afill($char)
	$symb_array[$c]=Chr($char)
	$c+=1
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:33, 29-01-2009 | #14



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Генерация комбинаций

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] генерация fileinstall morgan1991 AutoIt 3 30-03-2009 18:53
[решено] JavaScript. Генерация html-кода. System Failure Вебмастеру 3 20-07-2007 15:28
генерация новых ключей для ikey rivera Защита компьютерных систем 0 19-01-2006 09:49
Генерация кода <a>. Perl. benya Вебмастеру 1 18-08-2005 19:54
*Решено* | Задача по комбинаторике. Генератор комбинаций Surround Программирование и базы данных 14 18-02-2005 02:16




 
Переход