За последние 24 часа нас посетили 51556 программистов и 1452 робота. Сейчас ищет 751 программист ...

Как упростить множественные вложенные циклы?

Тема в разделе "PHP для новичков", создана пользователем блудный сын, 6 авг 2008.

  1. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    [vs], спасибо за наводку! eval мне оказалось гораздо проще понять чем вложенные циклы! Вот что получилось:
    PHP:
    1.  
    2. <?php
    3. $c="abcd";//символы
    4. $d=strlen($c);//количество символов
    5. $n=4; // Число вложенных циклов (длина нужного нам слова)
    6.  
    7. $slovo='$slovo=';
    8.  
    9. for ($i=1; $i<=$n; $i++)
    10.     {
    11.     $ocicl=$ocicl.'for($c'.$i.'=$start'.$i.';$c'.$i.'<$d;$c'.$i.'++){';
    12.     $ccicl=$ccicl.'}';
    13.     $slovo=$slovo.'$c[$c'.$i.'].';
    14.     }
    15.  
    16. $slovo=$slovo.'"";';
    17. $echo='echo $slovo."<br>";';
    18.  
    19. eval ("$ocicl$slovo$echo$ccicl");
    20. ?>
    21.  
    Не код, а песня! :)
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    блудный сын
    ))))))))))))))) молодец!!
     
  3. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    бе... eval... бе :)) а чем мой вариант не устроил, он хоть немного научный подход использует.
    А замеры что показывают?
     
  4. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Тебе спасибо! Я эту функцию первый раз использую! Мне понравилось!
    А замеры для твоего научного варианта очень неутешительные! :) Для 6 вложенных циклов и 10 символов (т.е. для 1 млн. вариантов) твой вариант в среднем выполняется 12 секунд, а мой 4сек.!!!!!!!!!!!!
     
  5. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Твой вариант скрипта
    Набор символов: abcdefg
    Длинна слова: 6
    Замер1 = 8.6733510494232с
    Замер2 = 6.0486798286438с
    Замер3 = 9.8724629878998с
    Замер4 = 8.1491799354553с
    Замер5 = 7.840423822403с
    Выскакивает куча нотисов

    Мой вариант
    Замер1 = 4.9428889751434с;
    Замер2 = 5.4136519432068с;
    Замер3 = 5.6861548423767с;
    Замер4 = 5.2607588768005с;
    Замер4 = 4.423309803009с;
    Замер5 = 4.6767790317535;

    Но при длине в 7 символов все сказочным образом меняется. :) ни один скрипт до конца за отведенные для него 30 сек не отрабатывает, но твой доходит до bca.... а мой только bad... Видимо, процесс (функция) перевода начинает затрачивать много времени.. :) вот тебе и научный подход :)
     
  6. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Ээээ! Так неправильно! Я забыл добавить, что для чистоты эксперимента отменил вывод на экран! На экран вывожу только время выполнения скрипта. Иначе вывод на экран съедает все время и за ним реального положения вещей плохо видно. Попробуй без вывода на экран.
     
  7. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Ну, еще раз.
    Набор символов: 0123456789
    Длина слова 6:
    Количество комбинаций = 10^6=1000000

    Твой вариант:
    Замер1 = 1.8778150081635
    Замер2 = 1.8806281089783
    Замер3 = 1.8813960552216
    Замер4 = 1.8884930610657


    Мой вариант:
    Замер1 = 8.6428229808807
    Замер2 = 8.4162909984589
    Замер3 = 8.6074450016022
    Замер4 = 8.4026279449463

    В общем, порвал :) Да и не важно. все равно евол мне не нравится. :) и я не оптимизировал код. Думаю есть более оптимальные алгоритмы перевода :):) :) но не важно.. молодец!!! а я спасибо так и не дождался :)
     
  8. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    СПА-СИ-БО!!!!
     
  9. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    блудный сын, да ну.. не за что. Ты сам все сделал! :)