Re[80]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 26.12.10 23:30
Оценка: +1
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, samius, Вы писали:


S>>Писать генератор размещений без повторов. При его написании могут быть использованы эти функции. Но одними только ими вряд ли обойдется.

E>Ну покажи, как ты себе это представляешь? Типа просто цикл, которые клонирует переборщик и фильтрует его?

E>Ну там что-то вроде
E>переборщик перебратьРазмещенияБезПовторов( переборщик X, int count )
E>{
       if count == 0 остановить перебор
       для каджого x из X
           для каждого результата r перебратьРазмещенияБезПовторов(X без x, count-1)
               вернуть x склеенный с r
E>}


E>C+(D!=C?D)+(E!=C && E!=D?E)

рекурсии нет, заменить ее нечем — стеков нет. Передачи необходимых параметров переборщику — нет. удаления из массива нет, копий переменных внутри блока выражений делать нельзя.
Вобщем это решение не записать в РС. Как построить другое — Основная проблема — надо сказать переборщику — по каким буквам не ходить дальше.

Тут были тезисы ТС-а о том что его решение 5и случайных букв из алфавита настолько гибкое, что оно дескать трансформируется за нефиг делать в решение размещений без повторов и нифига не ломается от такой смены условий.
Уверен, что от него я не дождусь решения этой задачи на РС. Может твои идеи послушаю... На всякий случай еще раз уточню (не для тебя), что решения перебора всех вариантов с последующей фильтрацией не интересуют. Гибкость так гибкость.
Решение Владимира получает n!/(n-k)! ответов.
Моё в ответе ему — столько же, но оно может строить не все варианты, а только с интересующими номерами (для paging-а )
Решение задачи полного перебора имеет n! ответов. Их фильтрация займет n! времени.
Т.е. при n=30 и k=10, разница в количестве вариантов гигантская, т.е. последующая фильтрация не катит ну никак в сравнении с предоставленными Владимиром и мной решениями.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.