|
|
|
| Ответ 002 на задачу N 5.
С условиями задачи можно ознакомится по ссылке.
<?php
/**************************************************************************************
cluster - 06b2d4b91b5c9eaa8c20a1c270f95b3c
Linux - e206a54e97690cce50cc872dd70ee896
Lisbon - fbfa6902f089e5a0fa2424bd460ecfd0
pyramid - 437233c74e25fe505293cd2e8ecc2696
subprogram - fb28e9240e83a5264566de844cc45523
1.5634 -время выполнения
**************************************************************************************/
function gettime() //функция записи времени
{
$part_time = explode ( ' ' , microtime () );
$real_time = $part_time [ 1 ] . substr ( $part_time [ 0 ] , 1 );
return $real_time;
}
$start_time = gettime();
$pas = array ("437233c74e25fe505293cd2e8ecc2696",
"fb28e9240e83a5264566de844cc45523",
"06b2d4b91b5c9eaa8c20a1c270f95b3c",
"e206a54e97690cce50cc872dd70ee896",
"fbfa6902f089e5a0fa2424bd460ecfd0");
$find_pas = array();
$find = 0;
$c_mas = count( $pas );
$words = fopen ( "d:linux.words" , "r" ) or die( "Error" );
while ( $word = fgets ( $words ) )
{
$hash = md5 ( strtolower ( preg_replace ( "/s/" ,"" , $word ) ) );
if ( in_array ( $hash , $pas ) ) //сравниваем хэши
{
$find_pas [ $hash ] = $word;
if ( ++$find == $c_mas ) //если нашли все слова - выход из цикла
break;
}
}
foreach ( $find_pas as $var => $value )
echo "$value - $var<br>";
$stop_time = gettime(); //время завершение выполнения скрипта
$time = bcsub ( $stop_time , $start_time , 4 ); // Время выполнения скрипта
echo $time;
?>
|
http://www.softtime.ru/info/task.php?id_article=75 | |
|
|
|
|
|
|
|
для: SoftTime
(09.02.2006 в 15:39)
| | Вот оригинальный ответ
<?php
/**************************************************************************************
cluster - 06b2d4b91b5c9eaa8c20a1c270f95b3c
Linux - e206a54e97690cce50cc872dd70ee896
Lisbon - fbfa6902f089e5a0fa2424bd460ecfd0
pyramid - 437233c74e25fe505293cd2e8ecc2696
subprogram - fb28e9240e83a5264566de844cc45523
1.5634 -время выполнения
**************************************************************************************/
function gettime() //функция записи времени
{
$part_time = explode ( ' ' , microtime () );
$real_time = $part_time [ 1 ] . substr ( $part_time [ 0 ] , 1 );
return $real_time;
}
$start_time = gettime();
$pas = array ("437233c74e25fe505293cd2e8ecc2696",
"fb28e9240e83a5264566de844cc45523",
"06b2d4b91b5c9eaa8c20a1c270f95b3c",
"e206a54e97690cce50cc872dd70ee896",
"fbfa6902f089e5a0fa2424bd460ecfd0");
$find_pas = array();
$find = 0;
$c_mas = count( $pas );
$words = fopen ( "d:\linux.words" , "r" ) or die( "Error" );
while ( $word = fgets ( $words ) )
{
$hash = md5 ( strtolower ( preg_replace ( "/\s/" ,"" , $word ) ) );
if ( in_array ( $hash , $pas ) ) //сравниваем хэши
{
$find_pas [ $hash ] = $word;
if ( ++$find == $c_mas ) //если нашли все слова - выход из цикла
break;
}
}
foreach ( $find_pas as $var => $value )
echo "$value - $var<br>";
$stop_time = gettime(); //время завершение выполнения скрипта
$time = bcsub ( $stop_time , $start_time , 4 ); // Время выполнения скрипта
echo $time;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(13.02.2006 в 00:00)
| | Пароли не совсем корректно расшифровываются - два выдаются с заглавной буквой, хотя в условиях сказано, что они все состоят из букв в нижнем регистре. Конструкция
preg_replace ( "/\s/" ,"" , $word )
|
явно лишняя не говоря уже о том, что регулярные выражения - это достаточно дорогостоящие по времени функции. Не используется функция file(), вместо неё используется связка fopen()+fgets() - это экономит память, но снижает читабельность и скорость. Конструкция ++$find == $c_mas также не способствует читабельности. | |
|
|
|
|
|
|
|
для: cheops
(13.02.2006 в 00:08)
| |
preg_replace ( "/\s/" ,"" , $word )
|
использовалась для верности... да, ее можно заменить...
А вот с функцией file() , у меня получалось по времени больше... почему-то... по этому переключился на fopen()+fgets(). | |
|
|
|