блудный сын, что-то подобное получалось и у меня. Но "предаваемая дальше строка" и "номер цикла" меня не устраивали... показалось, что это кастыли. Но если работает, - поздравляю Можешь замерить что работает быстрее
[vs], считаю глупо гонять по рекурсиям избыточные данные. Произведите замер и пусть победит сильнейший я просто кино смотрю
На самом деле мой код не работает Чего-то ему не хватает. Никак не догадаюсь чего. Вроде бы вот оно, но не то
блудный сын, можно. уверен что можно.. лень только париться Думаю можно закрывать базар до момента, пока кто-нить не предоставит новое решение.
Рекурсией решить. Но это будет либо не «чистая» рекурсия, либо ты будешь потом дубликаты вычищать из результатов.
Ы! Если не поджимают системные ресурсы (а врядли они так поджимает, что жалко выполнить несколько (десятков, сотен,...) лишних циклов, можно использовать рэндомную генерацию ))) PHP: <?php function getall($data,$diff=100) { $data_len=strlen($data); $result=array(); for ($i;$i<$data_len;$i++) { $data_array[]=$data[$i]; } while ($test<$diff) { shuffle($data_array); $rnd=implode($data_array); if(!in_array($rnd,$result)) { $result[]=$rnd; $test=0; } else { $test++; } } return $result; } print_r(getall("100")); ?> +С большой долей вероятности получаем все значения +Получаем только уникальные варианты -Есть (пусть и крайне малая) вероятность поулчить не все значения -Лишняя трата ресурсов Чем больше $diff, те меньше вероятность получить не все возможные комбинации
vs, извини, но этот вариант никак мне не подходит. Мне обязательно нужно, чтобы выводились все слова и не беспорядочным образом, а по порядку, как в варианте ShamahNa
Ну из 10.000 циклов - всегда были все варианты Вероятность ошибки очень низкая. Перед ретуроном - sort($result); UPD. Если вводить длинное слово, то $diff=100 явно не достаточно. Надо как минимум - 1000 =)
Ошибки недопустимы. А циклов у меня будет максимум до 20. Значений (слов) может быть и больше миллиона.
Я имел ввиду что 10.000 раз под ряд скрипт дал все варианты для слова "123" =) Для миллиона ставь $diff=1000000 только черт знает сколько времени выполняться он будет :lol:
Мне уже тоже нечто похожее в голову приходило... Я правда думал положить цикл в файл и вызывать его нужное количество раз... Но тссс! Если кто узнает - засмеют!
[vs], ааа.. ты про это ну эт само собой. каждый символ я рассматриваю как уникальный, что написать ты сам выбираешь. Проверить строчку на повторяющиеся символы думаю ни для кого не проблема