#11 2011.11.24 10:11

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Корзина функций.

ppc smile
Как за комп сяду посмотрю чеэта.

Неактивен

#12 2011.11.24 14:22

DarkRiDDeR
Участник
Откуда: Вам это не надо знать
Зарегистрирован: 2011.05.12
Сообщений: 163
Карма: 4
Профиль Веб-сайт

Re: Корзина функций.

Код:

1
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 секунду:

Код:

1
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:26)

Неактивен

#13 2011.11.24 19:17

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Корзина функций.

TLENS написал:

tipsun пытаюсь толком вникнуть в биты (рою всевозможные статьи по поводу). Смотри замену.

Код:

1
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 2011.11.24 19:18

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Корзина функций.

Ну да!
Добавлено спустя   1 минуту  34 секунды:
добавить один ноль с права в двоичной системе тоже самое что перемножить число на 2 (два нуля на четыре).

Неактивен

#15 2011.11.24 19:21

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Корзина функций.

Код:

1
span style="color: #0000BB"><?phpfunction power($b, $n) { return $b << ($n - 1); }echo power(5, 3);//20//а должно 125 = 5*5*5?>

Неактивен

#16 2011.11.24 19:21

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Корзина функций.

Сейчас проветю в чем дело

Неактивен

#17 2011.11.24 19:22

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Корзина функций.

Ок.

Неактивен

#18 2011.11.24 19:42

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Корзина функций.

Тьфу блин. Надо хоть иногда ложится поспать. Чета затупил. A <<= N ровняется A * 2 в N степени.
Ну собственно то что и надо было в функции переведения типов. А тестировал на двойке. Что и дало мне нужный результат.

Неактивен

#19 2011.11.24 19:50

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Корзина функций.

TLENS, ниче не понял smile

Код:

1
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:03)

Неактивен

#20 2011.11.26 20:12

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Корзина функций.

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 обычным символом минус.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
//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

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.010 s