Консультация № 32139
25.12.2005, 03:49
0.00 руб.
0 3 3
Не подкажете алгоритм перебора символов....
Т.е. из массива символов создаётся база паролей от 1 до n символов.
Помогите, пжлуста....А то уже две ночи не сплю, не получается

Обсуждение

Неизвестный
26.12.2005, 00:21
общий
это ответ
Здравствуйте, Stamm!
Идея простая: рекурсивный алгоритм, а вот конкретная реализация... щас попробуем...
function Generate($qty, $string = ‘‘, &$result)
{
$symbols = ‘abcd‘;
$len = strlen($symbols);
for ($i = 0; $i < $len; $i++)
{
if ($qty == 0)
{
$result[] = $string;
return;
}
Generate($qty-1, $string.$symbols[$i], $result);
}
}
$result = array();
Generate(5, null, $result);
echo ‘<pre>‘;
print_r($result);
echo ‘</pre>‘;
вроде работает, но это точноне самый оптимальный вариант.... работает долго, как, впрочем, любой или почти любой рекурсивный алгоритм....
Неизвестный
26.12.2005, 10:00
общий
это ответ
Здравствуйте, Stamm!

Если честно, вопрос совершенно непонятный.
Неизвестный
26.12.2005, 15:49
общий
это ответ
Здравствуйте, Stamm!

использование rand в связке с ассоциативным массивом данных.
ответ в приложении ----

Приложение:
$a="asdfghjklqwertzuiyxcvbnm";$a_len=strlen($a);$pass_array=array();$need_pass_count=20;$act_count=0;while($act_count<$need_pass_count){ $new_pass=make_pass(); if(!$pass_array[$new_pass]){ $pass_array[$new_pass]=1; $act_count++; print $new_pass."\n";//debug }}function make_pass(){global $a,$a_len;$PASS_LEN=rand(1,20);$pass=‘‘;srand();while(strlen($pass)<$PASS_LEN){ $s=rand(0,$a_len); $pass.=$a[$s];}return $pass;}
Форма ответа