[vs], спасибо за наводку! eval мне оказалось гораздо проще понять чем вложенные циклы! Вот что получилось: PHP: <?php $c="abcd";//символы $d=strlen($c);//количество символов $n=4; // Число вложенных циклов (длина нужного нам слова) $slovo='$slovo='; for ($i=1; $i<=$n; $i++) { $ocicl=$ocicl.'for($c'.$i.'=$start'.$i.';$c'.$i.'<$d;$c'.$i.'++){'; $ccicl=$ccicl.'}'; $slovo=$slovo.'$c[$c'.$i.'].'; } $slovo=$slovo.'"";'; $echo='echo $slovo."<br>";'; eval ("$ocicl$slovo$echo$ccicl"); ?> Не код, а песня!
бе... eval... бе ) а чем мой вариант не устроил, он хоть немного научный подход использует. А замеры что показывают?
Тебе спасибо! Я эту функцию первый раз использую! Мне понравилось! А замеры для твоего научного варианта очень неутешительные! Для 6 вложенных циклов и 10 символов (т.е. для 1 млн. вариантов) твой вариант в среднем выполняется 12 секунд, а мой 4сек.!!!!!!!!!!!!
Твой вариант скрипта Набор символов: 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... Видимо, процесс (функция) перевода начинает затрачивать много времени.. вот тебе и научный подход
Ээээ! Так неправильно! Я забыл добавить, что для чистоты эксперимента отменил вывод на экран! На экран вывожу только время выполнения скрипта. Иначе вывод на экран съедает все время и за ним реального положения вещей плохо видно. Попробуй без вывода на экран.
Ну, еще раз. Набор символов: 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 В общем, порвал Да и не важно. все равно евол мне не нравится. и я не оптимизировал код. Думаю есть более оптимальные алгоритмы перевода но не важно.. молодец!!! а я спасибо так и не дождался