|
|
|
| Ответ 001 на задачу N 5.
С условиями задачи можно ознакомится по ссылке.
pass1 = subprogram
pass2 = pyramid
pass3 = cluster
pass4 = linux
pass5 = lisbon
Найдено за 0.888239145279 секунд!
<?
$start_time = microtime();
$start_array = explode(" ",$start_time);
$start_time = $start_array[1] + $start_array[0];
$f = fopen("linux.words","r") or die("ошибка");
while (!feof($f))
{
$str = strtolower(fgets($f));
$str = trim($str);
$strmd5 = md5($str);
if ($strmd5 == 'fb28e9240e83a5264566de844cc45523')
$pass1 = $str;
elseif ($strmd5 == '437233c74e25fe505293cd2e8ecc2696')
$pass2 = $str;
elseif ($strmd5 == '06b2d4b91b5c9eaa8c20a1c270f95b3c')
$pass3 = $str;
elseif ($strmd5 == 'e206a54e97690cce50cc872dd70ee896')
$pass4 = $str;
elseif ($strmd5 == 'fbfa6902f089e5a0fa2424bd460ecfd0')
$pass5 = $str;
if (isset($pass1) && isset($pass2) && isset($pass3) && isset($pass4) && isset($pass5))
{
echo 'pass1 = '.$pass1.'<br>pass2 = '.$pass2.'<br>pass3 = '.$pass3.'<br>pass4 = '.$pass4.'<br>pass5 = '.$pass5.'<br>';
$end_time = microtime();
$end_array = explode(" ",$end_time);
$end_time = $end_array[1] + $end_array[0];
$time = $end_time - $start_time;
echo "<br><center>Найдено за $time секунд!</center>";
fclose($f);
exit;
}
}
$end_time = microtime();
$end_array = explode(" ",$end_time);
$end_time = $end_array[1] + $end_array[0];
$time = $end_time - $start_time;
echo "<br><center>Не найдено за $time секунд!</center>";
fclose($f);
?>
|
http://www.softtime.ru/info/task.php?id_article=75 | |
|
|
|
|
|
|
|
для: SoftTime
(09.02.2006 в 11:17)
| | Функция trim() здесь явно лишняя, использование каскада elseif снижает читабельность и не даёт ничего для скорости, так как лишь в 5 случаях из 45000 будут вычисляться все условия до конца. Кроме того, согласно логике, если хотя бы один пароль не будет найден - мы не узнаем ни одного из паролей, а это может запутать. Но вычисления производятся очень шустро. | |
|
|
|