Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 05:24 07.07.25 
Клубове/ Компютри и Интернет / PHP Пълен преглед*
Информация за клуба
Тема Re: Помощ за цикъл с масив [re: daxen]
Автор croesus (?!?)
Публикувано07.09.07 17:59  




$arr[0] = "A";
$arr[1] = "B";
$arr[2] = "C";
$arr[3] = "D";

function extend_array($max_str_len, &$arr_ref)
{
$search_arr = array("0","1","2","3");
$replace_arr = array("A","B","C","D");
$index_offset = 4;
for($i = 2;$i <= $max_str_len;$i++)
{
for($j = 0;$j < pow(4, $i);$j++)
{
$next_num = base_convert($j, 10, 4);
$next_num = str_repeat("0", $i - strlen($next_num)).$next_num;
$arr_ref[$index_offset + $j] = str_replace($search_arr, $replace_arr, $next_num);
}
$index_offset += pow(4, $i);
}
}
extend_array(4, $arr);

print_r($arr);


Идеята е малко шашава - ако "редим" стринговете с определена дължина и почваме с индекс 0, то за всеки елемент на масива стойността му ще е равна на индекса му, само че в четворична система (при заменки A=0, B=1, C=2, D=3).


Обратното също е вярно - ако вземем числата от 0 до 4^N и ги обърнем в четворична система, след което направим заменките - 0=A, 1=B, 2=C, 3=D, то ще получим неповтарящите се комбинации от четирите букви, които търсиш. Тъй като обаче масива от стрингове с дължина N се долепя до вече готовите с дължини 1, 2, ... N-1 то първият му индекс няма да е 0, а ще малко изместен, което се постига с променливата $index_offset. Редът пък $next_num = str_repeat("0", $i - strlen($next_num)).$next_num; е понеже base_convert не връща пълнотекстови стрингове (т.е. "0012", вместо "12") и изпуска началните нули, които са важни в нашия случай, понеже нулата я заменяме с А.



Цялата тема
ТемаАвторПубликувано
* Помощ за цикъл с масив daxen   06.09.07 22:07
. * Re: Помощ за цикъл с масив croesus   07.09.07 14:54
. * Re: Помощ за цикъл с масив daxen   07.09.07 16:12
. * Re: Помощ за цикъл с масив croesus   07.09.07 17:59
. * Re: Помощ за цикъл с масив daxen   07.09.07 18:57
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.