Re[83]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 27.12.10 08:51
Оценка: :)
S>Но я вижу что ты уверен что твой алгоритм имеет туже сложность, как алгоритм, который представил Владимир...
S>А на самом деле только лишь на последнем шаге (при добавлении финальной буквы к каждому из уже полученных паролей длиной k-1) тебе придется каждый пароль проверить на факт содержания в нем каждого символа из алфавита. Причем n-1 из этих проверок будут явно лишними.
S>Только на последнем шаге алгоритмическая стоимость генерации увеличивается в n(k-1) раз.
S>Твой алгоритм лучше полного перебора с последующей фильтрацией. Но намного ли?

Это спор о реализации транслятора, а не о языке.
Ты никогда не можешь точно знать как работает РС, потому как он довольно таки декларативен.
Вот например в декларативном SQL func1(1) + func(2) это тоже ниразу не вызов двух функций, как мог бы подумать тот же сишник.
По семантике, да, вызываются две функции, результаты складываются. А реально оптимизатор может разобрать в ноль эти функции сделать из них одну и еще и переписать
там все полностью.

S>Ладно, теперь я меняю условия задачи. Логично предположить что мы используем генерилку для брутфорса (хохмы для). Генерилка проверяет пароли по мере получения (кстати, твои не лезут в память 32х разрядного приложения уже при параметрах 5 из 30). И каждую минуту сбрасывает на винт число проверенных паролей, потому как хакеру периодически нужны ресурсы системы для решения других задач и он хочет продолжить счет с последнего сохраненного номера.

S>Вот так неожиданно меняются требования в реальном мире. Проявляй гибкость.
S>Наперед скажу, что в моем решении менять ничего не надо. Пропустить 10000 элементов (skip 10000 (p 30 10)) результирующей последовательности занимает 0,24s и 10001-ый элемент равен 'abcdefg3vl' при алфавите ['a'..'z']++['1'..'4']. Пропуск миллиона вариантов занимает <20 сек. Уже проблема, но я знаю, что подкрутить что бы пропуск занимал ничтожное время.

Вообщето скип, это почти тот же фильтр результата.
Сам знаешь что нормальная реализация начинает сразу с середины перебор,
а не чтото там скипит.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.