Здравствуйте, PC_2, Вы писали:
PC_>Здравствуйте, samius, Вы писали:
S>>Позор за алгоритмическую оценку решения.
PC_>Я тебя уже который раз говорю — нормально сформулируй задачу. PC_>А то ты как флюгер, то ты решаешь задачу подбора паролей, то у тебя уже какая то PC_>лотерейная задача 5 из 30 то еще что-то.
PC_>Сформулируй что ты хочешь вообще.
Устал формулировать. Поищи сам. А потом, ты опять не поймешь что я хочу, и буду как попугай. Развлекайся без меня.
Здравствуйте, samius, Вы писали:
S>Здравствуйте, PC_2, Вы писали:
PC_>>Это пока общая концептуальная мысль была на счет навесов, PC_>>нужно еще тут много думать. PC_>>Здесь какбы до сути главное докопаться.
S>Аха, как с 30^5
Помойму ты хрень сморозил.
Твой вопрос сгенерить 5 из 30.
Это 5 неповторяющихся символов по алфавиту 30.
Следовательно РС сделает цикл 30^5 и отфильтрует все не нужное.
Судя по тому что цикл на 1 млн занял 45 секунд, то на 2,5 млн, будет гдето 2минуты.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, samius, Вы писали:
S>Здравствуйте, PC_2, Вы писали:
E>>>>Я бы не был так уверен... Ну, во всяком случае без профилирования... S>>>Хм. Получение миллионного пароля 17 сек ( и над этим можно работать и увести к долям секунды), получение первого миллиона паролей — полторы минуты.
PC_>>Замерял в РС вотето,
PC_>>
PC_>>!x='0'..'9'
PC_>>i<6?a+='+x'+i
PC_>>^('s,=' + a)
PC_>>
S>Прошу прощения модераторов и Егора, но ты либо ..., либо просто хочешь меня выбесить и преуспеваешь в этом S>Для задачи 5 из 10и S>00:00:00.2906668 — получение всех с вычислением S>Миллионного там нет. Их всего-то 10*9*8*7*6. Где ты видишь млн там вообще?
В смысле, опять ты всех запутал со своими задачами.
Формулирую предельно ясно.
45 секунд в РС занимает генерация всех строк от
000000 до 999999.
Коих миллион. Вышеприведенный пример это и делает.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
S>>Для задачи 5 из 10и S>>00:00:00.2906668 — получение всех с вычислением S>>Миллионного там нет. Их всего-то 10*9*8*7*6. Где ты видишь млн там вообще?
PC_>В смысле, опять ты всех запутал со своими задачами. PC_>Формулирую предельно ясно. PC_>45 секунд в РС занимает генерация всех строк от PC_>000000 до 999999.
PC_>Коих миллион. Вышеприведенный пример это и делает.
А чего ты его цифру ровняешь с решением другой задачи? Я чет не понял. Давай уж тогда пиши доставание миллионного из 5x30, или давай я тебе покажу время генерации всех строк от 000000 до 999999 на C#-е
Здравствуйте, samius, Вы писали:
S>Проход по высоте дерева итераторов, а не перебор итераторов.
Ну, судя по времени, там пропускают только нижний этаж...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, samius, Вы писали:
S>>Проход по высоте дерева итераторов, а не перебор итераторов.
E>Ну, судя по времени, там пропускают только нижний этаж...
Это было о достижимом результате, а не о существующей реализации
Здравствуйте, PC_2, Вы писали:
AV>>Это образец понятности? А то я, например, ничего не понял. Что значит "SR", что значит "a"? PC_>Потому что глупо было както несколько страниц сравнивать вызов библиотечной функции в перле PC_>и не вызов а сам алгоритм сортировки в РС, пришлось обломать перл в его же стиле
Напомню условия задачи,
есть динамически задаваемый алфавит, к примеру от a-z
есть динамически задаваемая длина пароля, допустим 4 символа.
Сгенерить все строки от aaaa до zzzz
Давай Перлист, присоединяйся
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
S>>давай я тебе покажу время генерации всех строк от 000000 до 999999 на C#-е
PC_>покажи на функциональном языке, чтоб там с ленивостью, состояниями автоматов и всетакое ...
let rec px xs = function
| 0 -> seq [seq []]
| n -> seq { for x in xs do
for r in px xs (n-1) ->
Seq.append [x] r }
PC_>ЗЫ: PC_>Но не забывай что алфавит 0-9 это чисто случайный алфавит, можно выбрать любой другой на теже десять символов
Хоть из ста енотов
00:00:18.1934755 — получение всех паролей.
00:00:08.1582394 — только миллионный
Здравствуйте, samius, Вы писали:
S>00:00:18.1934755 — получение всех паролей. S>00:00:08.1582394 — только миллионный
18 секунд против 45, это откровенно говоря хреновый результат.
Первая же волна оптимизаций в интерпретаторе РС принесет уже многократное
увелечение скорости. Например в этой задаче переделать конкатенацию строк на StringBuilder,
это уже профит в несколько раз ...
Резюме:
Получается решение слило многократно по краткости
Слило потенциально по скорости работы
Со скипом еще есть оговорки.
Поскольку ф шарп завис гдето между и между.
Решение откровенно плохое по сравнению с Си,
и несколько лучше чем фильтр в конце, как было предложено в РС ...
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
PC_>Здравствуйте, samius, Вы писали:
S>>00:00:18.1934755 — получение всех паролей. S>>00:00:08.1582394 — только миллионный
PC_>18 секунд против 45, это откровенно говоря хреновый результат.
На разном железе, заметь
PC_>Первая же волна оптимизаций в интерпретаторе РС принесет уже многократное PC_>увелечение скорости. Например в этой задаче переделать конкатенацию строк на StringBuilder, PC_>это уже профит в несколько раз ...
Я тоже не билдером строки складываю
PC_>Резюме: PC_>Получается решение слило многократно по краткости PC_>Слило потенциально по скорости работы
Только если потенциально, потому как я предлагал мериться на задаче размещений. Временная сложность для задачи о размещении у твоего решения значительно выше.
PC_>Со скипом еще есть оговорки. PC_>Поскольку ф шарп завис гдето между и между. PC_>Решение откровенно плохое по сравнению с Си,
Ты так и не привел решение на СИ, которое бы генерило размещения с середины. Пока не приведешь хотя бы ссылку, не вспоминай о нем. PC_>и несколько лучше чем фильтр в конце, как было предложено в РС ...
Оно хуже алгоритмически, потому не интересно. Кстати, можешь теперь говорить не "в РС", а "мной", потому как Егор предложил решение на уровне предложенного мной.
Ну вот и чудно. Тему с паролями можно закрыть.
особенно после оптимизации на первом переборщике.
Относительно задачи на счет размещений, предлагаю приостоновить свободное плаванье
по сферическим примерам и занятся собственно делом. А именно обсудить регекспы,
всетаки хочется пойти попинать Немерлистов слепо верящих в возможности метапрограммирования
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
PC_>Кстате на счет скипа. PC_>Егор тут правильно заметил, что разница между 18 секундами и 8 секундами скорей всего заключается в самом внутреннем итераторе.
PC_>Так вот в РС это тоже сделать черезвычайно просто
PC_>если например у нас генерация паролей с aaaaa до zzzzz, PC_>и в переведущий раз мы прошли от ааааа до скажем ххххх.
PC_>То первый переборщик мы можем инициировать смело по алфавиту х-z
А второй чем?
PC_>и получим двадцатикратный прирост производительности.
инициировать-то можно. Запиши это PC_>Собственно где и скрыта та самая итерация по всего одному итератору
Ты о чем? Там дерево итераторов, если чо
PC_>Все, Ф Шарп раскусили, у него профитов не осталось в этом примере
Его профиты в комбинировании
Здравствуйте, PC_2, Вы писали:
PC_>Код для примера выше, с пропуском лишних комбинаций
PC_>
PC_>!y = 'x'..'z' //первый переборщик итерируем только на остатке
PC_>!x='a'..'f' //остальные разряды идут по полному алфавиту
PC_>i<3?a+='+x'+i
PC_>^('s,=y' + a)
PC_>