Вы не зашли.
Главная » PHP » Корзина функций.
#11. tipsun Off (19)
Moderator
2011.11.24 10:10
ppc smile
Как за комп сяду посмотрю чеэта.
#12. DarkRiDDeR Off (4)
Участник
2011.11.24 14:02
Код:
span style="color: #0000BB"><?php//Функция "Удаления каталога с файлами" function delete_dir($dir){ if($scandir = scandir($dir = $dir . '/')){$x = 0; foreach($scandir as $value){ if($x > 1){$value = $dir . $value;if(is_dir($value)) delete_dir($value);else unlink($value); }++$x; } }return rmdir($dir); }
?>
Добавлено спустя   3 минуты  41 секунду:
Код:
span style="color: #0000BB"><?php/*Функция SpiderDetect - принимает $_SERVER['HTTP_USER_AGENT'] и возвращает имя кравлера поисковой системы или false.*//*База ботов - http://www.user-agents.org/Кому охото могут всех записать, но это уже будет наверно перебор :)*/ function SpiderDetect($USER_AGENT){$engines = array(array('Aport', 'Aport robot'),array('Google', 'Google'),array('msnbot', 'MSN'),array('Rambler', 'Rambler'),array('Yahoo', 'Yahoo'),array('AbachoBOT', 'AbachoBOT'),array('accoona', 'Accoona'),array('AcoiRobot', 'AcoiRobot'),array('ASPSeek', 'ASPSeek'),array('CrocCrawler', 'CrocCrawler'),array('Dumbot', 'Dumbot'),array('FAST-WebCrawler', 'FAST-WebCrawler'),array('GeonaBot', 'GeonaBot'),array('Gigabot', 'Gigabot'),array('Lycos', 'Lycos spider'),array('MSRBOT', 'MSRBOT'),array('Scooter', 'Altavista robot'),array('AltaVista', 'Altavista robot'),array('WebAlta', 'WebAlta'),array('IDBot', 'ID-Search Bot'),array('eStyle', 'eStyle Bot'),array('Mail.Ru', 'Mail.Ru Bot'),array('Scrubby', 'Scrubby robot'),array('Yandex', 'Yandex'),array('YaDirectBot', 'Yandex Direct')); foreach ($engines as $engine){if(strpos($USER_AGENT, $engine[0]) !== false) return($engine[1]); }return (false); }?>
Отредактировано DarkRiDDeR (2011.11.24 14:02)
#13. tipsun Off (19)
Moderator
2011.11.24 19:07
TLENS написал:
tipsun пытаюсь толком вникнуть в биты (рою всевозможные статьи по поводу). Смотри замену.
Код:
span style="color: #0000BB"><?phpfunction power ($b, $n) { return $b << ($n - 1);}
Считаю это самая быстрая функция так как просто происходит сдвиг бита.
for ($i = 0; $i < 10; $i ++)
    power (1272, 73739);
Разница 0.3536 и 0.0001
Она у тебя в степень возводит или что?
#14. TLENS Off (14)
Moderator
2011.11.24 19:07
Ну да!
Добавлено спустя   1 минуту  34 секунды:
добавить один ноль с права в двоичной системе тоже самое что перемножить число на 2 (два нуля на четыре).
#15. tipsun Off (19)
Moderator
2011.11.24 19:07
Код:
span style="color: #0000BB"><?phpfunction power($b, $n) { return $b << ($n - 1); }echo power(5, 3);//20//а должно 125 = 5*5*5?>
#16. TLENS Off (14)
Moderator
2011.11.24 19:07
Сейчас проветю в чем дело
#17. tipsun Off (19)
Moderator
2011.11.24 19:07
Ок.
#18. TLENS Off (14)
Moderator
2011.11.24 19:07
Тьфу блин. Надо хоть иногда ложится поспать. Чета затупил. A <<= N ровняется A * 2 в N степени.
Ну собственно то что и надо было в функции переведения типов. А тестировал на двойке. Что и дало мне нужный результат.
#19. tipsun Off (19)
Moderator
2011.11.24 19:07
TLENS, ниче не понял smile

Код:
span style="color: #0000BB"><?phpecho '<pre>';echo 2 ^ 1; echo PHP_EOL; //3 bitsecho 25 ^ 5; echo PHP_EOL; //28 bitsecho 125 ^ 5; echo PHP_EOL; //120 bitsecho 125 ^ 25; echo PHP_EOL; //100 bitsecho '</pre>';/*The above example will output: --------- --------- -- --------- result value op test --------- --------- -- --------- Bitwise AND( 0 = 0000) = ( 0 = 0000) & ( 5 = 0101)( 1 = 0001) = ( 1 = 0001) & ( 5 = 0101)( 0 = 0000) = ( 2 = 0010) & ( 5 = 0101)( 4 = 0100) = ( 4 = 0100) & ( 5 = 0101)( 0 = 0000) = ( 8 = 1000) & ( 5 = 0101) Bitwise Inclusive OR( 5 = 0101) = ( 0 = 0000) | ( 5 = 0101)( 5 = 0101) = ( 1 = 0001) | ( 5 = 0101)( 7 = 0111) = ( 2 = 0010) | ( 5 = 0101)( 5 = 0101) = ( 4 = 0100) | ( 5 = 0101)(13 = 1101) = ( 8 = 1000) | ( 5 = 0101) Bitwise Exclusive OR (XOR)( 5 = 0101) = ( 0 = 0000) ^ ( 5 = 0101)( 4 = 0100) = ( 1 = 0001) ^ ( 5 = 0101)( 7 = 0111) = ( 2 = 0010) ^ ( 5 = 0101)( 1 = 0001) = ( 4 = 0100) ^ ( 5 = 0101)(13 = 1101) = ( 8 = 1000) ^ ( 5 = 0101)*/?>
Отредактировано tipsun (2011.11.24 20:08)
#20. TLENS Off (14)
Moderator
2011.11.26 20:08
Brian W. Kernighan, Dennis M. Ritchie
Упражнение 3.3. Напишите функцию expand(s1,s2), заменяющую сокращенную запись наподобие a-z в строке s1 эквивалентной полной записью аbс...хуz в s2. В s1 допускаются буквы (прописные и строчные) и цифры. Следует уметь справляться с такими случаями, как a-b-c, a-z0-9 и -a-b. Считайте знак - в начале или в конце s1 обычным символом минус.
Код:
//C
#include <stdio.h>
#define EOF '\n'
#define MAXLENGTH 1000
void expand(int a[], int b[]);
 
int main ()
{
int a[MAXLENGTH], b[MAXLENGTH], c, i;
for (i = 0; i < MAXLENGTH; i++)
a[i] = b[i] = '\0';
while (1)
{
printf("In: ");
for (i = 0; (c = getchar()) != EOF; i ++)
if (i < MAXLENGTH) a[i] = c;
if (++i < MAXLENGTH) a[i] = '\0';
expand(a, b);
for (i = 0; i < MAXLENGTH && b[i] != '\0'; i++)
putchar(b[i]);
putchar('\n');
for (i = 0; i < MAXLENGTH; i++)
a[i] = b[i] = '\0';
}
 
getchar();
}
void expand (int a[], int b[])
{
int i, j;
for (i = j = 0; i < MAXLENGTH && a[i] != EOF && a[i] != '\0'; i ++, j)
{
if (b[j] != '\0' || j > MAXLENGTH) break;
if (a[i] == '-')
{
if (((a[i - 1] >= 'a' && a[i - 1] <= 'z') && (a[i + 1] >= 'a' && a[i + 1] <= 'z')) || ((a[i - 1] >= 'A' && a[i - 1] <= 'Z') && (a[i + 1] >= 'A' && a[i + 1] <= 'Z')))
{
if (a[i+1] > a[i-1])
for (int l = a[i-1] + 1; l < a[i+1]; l++)
{
if (b[j] != '\0' || j > MAXLENGTH) break;
b[j++] = l;
}
else b[j++] = '-';
}
else if ((a[i - 1] >= 'a' && a[i - 1] <= 'z') && (a[i + 1] >= 'A' && a[i + 1] <= 'Z'))
{
for (int l = a[i-1] + 1; l != a[i+1]; l++)
{
if (b[j] != '\0' || j > MAXLENGTH) break;
b[j++] = l;
if (l == 'z')
l = 'A' - 1;
}
 
}
else if (a[i-1] >= '0' && a[i+1] <='9')
{
if (a[i+1] > a[i-1])
for (int l = a[i-1] + 1; l < a[i+1]; l++)
{
if (b[j] != '\0' || j > MAXLENGTH) break;
b[j++] = l;
}
else b[j++] = '-';
}
else
b[j++] = '-';
 
}
else
b[j++] = a[i];
}
b[j++] = '\0';
return;
}
ps. Бонус справляется с такой записью как a-Z
Страниц: 1 2 Все
Главная
WEB
PunBB Mod v0.6.2
0.015 s