Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Универсальный цикл

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]  [41-45] 

 
 автор: BinLaden   (31.05.2008 в 20:42)   письмо автору
 
   для: Trianon   (31.05.2008 в 20:37)
 

Издрежки прошлой жизни...

   
 
 автор: Port_Artur1   (31.05.2008 в 20:42)   письмо автору
 
   для: Trianon   (31.05.2008 в 20:37)
 

Огромное ВАМ всем спасибо. ОЧЕНЬ выручили теперь дальше пойдет всё как по маслу. Классно!

   
 
 автор: Trianon   (31.05.2008 в 20:37)   письмо автору
 
   для: BinLaden   (31.05.2008 в 20:29)
 

Собственно, я только что заметил - в Вашем варианте ведь тоже явная рекурсия применена.
Откуда тогда такая ирония в ответе Киналю? :)

   
 
 автор: BinLaden   (31.05.2008 в 20:29)   письмо автору
 
   для: Trianon   (31.05.2008 в 20:28)
 

Да нет, всё замечательно. :)

   
 
 автор: Trianon   (31.05.2008 в 20:28)   письмо автору
 
   для: BinLaden   (31.05.2008 в 20:27)
 

Да нет... просто на вопрос ответил...

Что-то не нравится? :)

   
 
 автор: Trianon   (31.05.2008 в 20:28)   письмо автору
 
   для: BinLaden   (31.05.2008 в 20:18)
 

пожалуйста :)

   
 
 автор: BinLaden   (31.05.2008 в 20:27)   письмо автору
 
   для: Trianon   (31.05.2008 в 20:24)
 

Это Вы г-на Киналя спасли?

   
 
 автор: Trianon   (31.05.2008 в 20:24)   письмо автору
 
   для: Port_Artur1   (31.05.2008 в 12:24)
 

<?php

function generate($prefix$plane)
{
   if(empty(
$plane))
   {
       echo 
"$prefix<br/>\r\n";
       return;
   }

   
$slice $plane[0];
   foreach(
$slice as $digit)
       
generate($prefix.$digit$plane[1]);
}

$pon = array(
'1'=> array("1","2","3","4"),
'2'=> array("4","2","3","7"),
'3'=> array("1","2"),
'4'=> array("8","2","3","4"),
'5'=> array("1","5","3"),
'6'=> array("9","2","3","7"),
'7'=> array("3","6","7","8"),
'8'=> array("3","4","6","8"),
'9'=> array("1","2","3"),
'0'=> array("1","2","3","4")
);

$num "378";

$plane = array();

$i strlen($num);
while( --
$i >= )
    
$plane = array($pon[$num[$i]], $plane);

generate(""$plane);
?>

   
 
 автор: BinLaden   (31.05.2008 в 20:19)   письмо автору
 
   для: Port_Artur1   (31.05.2008 в 20:14)
 

Попробуйте так:

<?php

$pon 
= array(
array(
1234),
array(
1234),
array(
4237),
array(
12),
array(
8234),
array(
153), 
array(
9237),
array(
3678),
array(
3468),
array(
123)
);

function 
reduce_arr(&$pon,  $keys)
{
    
$a = array();

    
$keys = (string) $keys;

    if( !
ctype_digit($keys) )
    {
        return 
false;
    }

    for(
$i 0$i strlen($keys); $i++)
    {
        
$a[] = $pon[$keys[$i]];
    }

    return 
$a;
}

function 
permutation()
{
    global 
$a;
    static 
$nest_lvl,  $prefix;

    
$nest_lvl++;

    if( 
$nest_lvl == count($a) )
    {
        foreach( 
$a[$nest_lvl 1] as $val )
        {
            echo 
$prefix $val "\r\n";
        }
    }
    else
    {
        foreach( 
$a[$nest_lvl 1] as $k => $val )
        {
            
$prefix .= $val;
            
permutation();
            
$prefix substr($prefix0, -1);
        }
    }

    
$nest_lvl--;
}

$a reduce_arr($pon'378');
permutation();
?>


Коряво, правда. Не нравится зависимость от имён.

   
 
 автор: BinLaden   (31.05.2008 в 20:18)   письмо автору
 
   для: Киналь   (31.05.2008 в 20:09)
 

> Проще будет применить рекурсию.

Киналь, примените, нам хочется посмотреть :)

   

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]  [41-45] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования