Здравствуйте, samius, Вы писали:
S>Ну что, не согласен что создание по цепочке будет проще восприниматься? Да и никакие угадывалки не надо писать на основе анализаторов булевских выражений. Берем за основу предыдущий набор значений, и по нему достраиваем. В задаче размещений — фильтруем, где-то еще — добавляем
Не согласен. Эта операция заточена ровно на одну задачу. Так неправильно делать.
Кроме того, такие простые модификации не сложно и из формул вытащить...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, samius, Вы писали:
PC_>>Помойму первое даже лучше для понимания чем цифра. S>С первым — ты увеличил стоимость решения задачи.
Почему? Какая разница хранить пароль или номер?
S>Если я тебе дам генерировать столько паролей, что в памяти не поместится? S>Между прочим, F# генерирует указанный пароль 10из30, притом что оперативка кончается даже на всех паролях 5из30.
Зачем хранить все пароли, чтобы их фильтровать?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, samius, Вы писали:
S>Да, а потом посмотрим, может ли его решение без изменений продолжать с любого номера
С любого номера продолжать неудобно, да и дорого. Надо сами номера считать, а потом от номера к позициям счётчика перейти...
А если ты о коде, который будет продолжать с любого места, то его не сильно сложнее написать, чем с abcde...
А в некотором смысле, даже проще
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
S>Затем что ты там что-то лепил о гибких решениях, которые не должны меняться от легких изменений условий. S>Потом бодал меня по сложности и т.п. И я тебе показал что решение на F# делать умеет, а твое — нет.
Не понятно, зачем вообще уметь нумеровать варианты любого переборщика. А вдруг он умеет сразу пачками варианты перебирать как-то? Или порядок перебора выбирает в зависимости от доступной на момент выполнения памяти/числа голов/другой аппаратуры и т. д.?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, ambel-vlad, Вы писали:
AV>За какой объем? Ты ж говорил, что на твоем языке все пишется за десятки секунд.
Ха, там сначала надо вики долго курить и перечисленные алгоритмы заботать...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, samius, Вы писали:
S>>Аха, как с 30^5
E>Не ссорьтесь, горячие финские парни! Тем более из-за ерунды. E>Я так думаю, что 30^5 от 30*29*28*27*26 отличается процентов на 20...
На 42 E>Так что в качестве оценки 30^5 очень даже ничего...
А 30^20 — уже чего...
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, samius, Вы писали:
S>>Чего это за хрень? Продолжи с номера 42 что ли
E>Я вот не пойму, зачем вообще по номерам позиционироваться? Начать с заданной строки НАМНОГО ПРОЩЕ...
Во-первых это было в условии, если что...
А во-вторых — не намного и проще-то. Зайти в нужную ветку дерева итераций можно как по буквам, так и по номеру (остаток от деления номера на число решений (K-1) даст номер внешнего цикла, и т.п.). Если же ты о лексикографическом сравнении сгенерированных паролей с сохраненной строкой — то это таки не то.
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, samius, Вы писали:
S>>Ну что, не согласен что создание по цепочке будет проще восприниматься? Да и никакие угадывалки не надо писать на основе анализаторов булевских выражений. Берем за основу предыдущий набор значений, и по нему достраиваем. В задаче размещений — фильтруем, где-то еще — добавляем
E>Не согласен. Эта операция заточена ровно на одну задачу. Так неправильно делать.
Это набор операций, с помощью которых можно решать разные задачи. В том числе можно и расширять диапаон перебора, в отличии от решения с только лишь заданием фильтра, как ты предлагаешь. Неоднократно в топике мелькали задачи, где взять диапазон счетчика из контекста просто неоткуда.
E>Кроме того, такие простые модификации не сложно и из формул вытащить...
А со сложными как быть? Отложить до РС-4?
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, samius, Вы писали:
PC_>>>Помойму первое даже лучше для понимания чем цифра. S>>С первым — ты увеличил стоимость решения задачи. E>Почему? Какая разница хранить пароль или номер?
Никакой, если по сохраненному заходить в дерево итераций.
Никакой, если фильтровать пароли от нуля.
Но разница есть между входом в любое место дерева и фильтрацией всех паролей.
S>>Если я тебе дам генерировать столько паролей, что в памяти не поместится? S>>Между прочим, F# генерирует указанный пароль 10из30, притом что оперативка кончается даже на всех паролях 5из30.
E>Зачем хранить все пароли, чтобы их фильтровать?
В общем случае — незачем.
Но элементарная логика декомпозиции задач генерации перестановок и фильтрации намекает на то что должны быть отдельные решения для перестановок и фильтрации, и что если их соединить, получится алгоритм поиска размещений. Это нормальная практика — комбинировать решения. Ты же вместе с ТС предлагаешь для решения задачи размещений создать решение для перестановок, извратить его фильтрацией, а для задачи получения перестановок (которую возможно нужно будет решать) использовать другой код. Это негибко. Я к этому не привык. Я привык к декомпозиции решений. Ну и зарапортовался малость.
Красиво поступил Владимир — использовал функции высшего порядка, решив одновременно несколько задач.
Есть еще один ответ на твой вопрос. Все пароли фильтровать можно эффективнее. Но это все равно хуже, чем не получать ненужные.
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, samius, Вы писали:
S>>Да, а потом посмотрим, может ли его решение без изменений продолжать с любого номера
E>С любого номера продолжать неудобно, да и дорого. Надо сами номера считать, а потом от номера к позициям счётчика перейти...
Чего там считать? Деление с остатком? Ну не знаю. Не такое уж оно и дорогое, что бы на нем экономить.
Я не вижу разницы.
E>А если ты о коде, который будет продолжать с любого места, то его не сильно сложнее написать, чем с abcde... E>А в некотором смысле, даже проще
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, samius, Вы писали:
S>>Затем что ты там что-то лепил о гибких решениях, которые не должны меняться от легких изменений условий. S>>Потом бодал меня по сложности и т.п. И я тебе показал что решение на F# делать умеет, а твое — нет.
E>Не понятно, зачем вообще уметь нумеровать варианты любого переборщика.
Для Paging-а хотя бы
M>>Вы явно клоны. E>Долго думал над этой версией? E>Как ты думаешь, кто из пользователей фейковый?
M>>Твои сообщения получают положительные оценки и конструктивное общение от PC_2, содержащие такие же умные слова от меня, samius'а и владимира кочеткова — швыряние какашками
E>Да? Объясни, что было конструктивного в твоём сообщении о том, что для того, чтобы ввести в язык RND PC_2 понадобилось её как-то назвать?
Вы явно клоны. Перчитай внимательно мое сообщение. Там говорится о том, что PC_2 обсирает другие языки, в частности, из-за того, что там много встроенных функций, в ответ на что я говорю что? Иди читай
Здравствуйте, ambel-vlad, Вы писали:
AV>Так что там с окончательным решением задачки? Можешь не обращать внимание на то, что индексы у нас начинаются с 1, а у тебя с 0. Это не существенно.
Я так тебя понял, что ты просишь описать переборщик каких-то частичных сумм в двумерном массиве. Только я не понял, каких именно...
Если список сумм по первой/второй координате, то это вообще не проблема, однако. Что-то типа
x.I.J\J\+
Но ты хочешь какую-то другую сумму. Только я не понял, зачем ты хочешь её от ТС. Сам, что ли не можешь записать?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, samius, Вы писали:
S>Но разница есть между входом в любое место дерева и фильтрацией всех паролей.
Тоже нет.
Вообще, для твоей задачи -- остановить/продолжить перебор -- уметь считать итерации не надо.
S>Но элементарная логика декомпозиции задач генерации перестановок и фильтрации намекает на то что должны быть отдельные решения для перестановок и фильтрации, и что если их соединить, получится алгоритм поиска размещений. Это нормальная практика — комбинировать решения. Ты же вместе с ТС предлагаешь для решения задачи размещений создать решение для перестановок, извратить его фильтрацией, а для задачи получения перестановок (которую возможно нужно будет решать) использовать другой код. Это негибко. Я к этому не привык. Я привык к декомпозиции решений. Ну и зарапортовался малость.
Про другой код не понимаю. Тебя всё время сносит на обсуждение каких-то процедурных аспектов перебора. В частности вопрос "а в каком порядке вы перебираете" -- он очень процедурный, однако. На самом деле УДОБНОЙ конструкции, чтобы задать такой вопрос в RS сейчас нет. Насколько я понимаю задумку PC_2 в окончательной версии будет можно сказать что-то типа "перебирай параллельно пары чисел и строк, пока не встретишь строку, которой соответствует 1000000" S>Красиво поступил Владимир — использовал функции высшего порядка, решив одновременно несколько задач.
У него получилась всё та же фильтрация в последнем итераторе...
S>Есть еще один ответ на твой вопрос. Все пароли фильтровать можно эффективнее. Но это все равно хуже, чем не получать ненужные.
Это я тоже не понимаю.
Вот научиться писать что-то вроде "перебирай пароли о сих до сих" -- это прикольно. Это тоже сейчас в RS не особо хорошо получается. И тоже, опять, хочется сказать, что-то типа того, что столько-то пропускаем, а потом столько-то крутим. При этом это "сколько" определяется одним переборщиком, а пропускают в другом, перебирающим, как бы параллельно.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
AV>>Так что там с окончательным решением задачки? Можешь не обращать внимание на то, что индексы у нас начинаются с 1, а у тебя с 0. Это не существенно.
E>Я так тебя понял, что ты просишь описать переборщик каких-то частичных сумм в двумерном массиве. Только я не понял, каких именно... E>Если список сумм по первой/второй координате, то это вообще не проблема, однако. Что-то типа
E>x.I.J\J\+
E>Но ты хочешь какую-то другую сумму. Только я не понял, зачем ты хочешь её от ТС. Сам, что ли не можешь записать?
Здравствуйте, samius, Вы писали:
S>Напишешь?
Зачем? Ты что не знаешь, как это сделать? Я могу подсказать идею.
Типа пишешь объект, который имеет в себе текущую букву и множество, которое она может пробежать.
Делаешь ему функцию или конструктор, который даёт такой же объект, но с профильтрованным множеством поиска и установленный в самую первую доступную букву. Ну как-то так.
Ну делаешь массив таких, по цепочке созданных объектов, и потом дёргаешь у них Next() алгоритмом "счётчик"...
Соответственно, для старта с конкретной строки, надо просто сразу по ней вектор счётчиков родить и всё. Даже стартовые значения букв искать не надо
Давай я напишу, но оставлю там две ошибки, а ты отладишь потом?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, samius, Вы писали:
E>>Не понятно, зачем вообще уметь нумеровать варианты любого переборщика. S>Для Paging-а хотя бы
Пока не понял о чём ты?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, samius, Вы писали:
S>>Но разница есть между входом в любое место дерева и фильтрацией всех паролей. E>Тоже нет. E>Вообще, для твоей задачи -- остановить/продолжить перебор -- уметь считать итерации не надо.
Paging — постраничный вывод значений. Сгенерить сзначения для страницы X.
S>>Но элементарная логика декомпозиции задач генерации перестановок и фильтрации намекает на то что должны быть отдельные решения для перестановок и фильтрации, и что если их соединить, получится алгоритм поиска размещений. Это нормальная практика — комбинировать решения. Ты же вместе с ТС предлагаешь для решения задачи размещений создать решение для перестановок, извратить его фильтрацией, а для задачи получения перестановок (которую возможно нужно будет решать) использовать другой код. Это негибко. Я к этому не привык. Я привык к декомпозиции решений. Ну и зарапортовался малость.
E>Про другой код не понимаю. Тебя всё время сносит на обсуждение каких-то процедурных аспектов перебора. В частности вопрос "а в каком порядке вы перебираете" -- он очень процедурный, однако. На самом деле УДОБНОЙ конструкции, чтобы задать такой вопрос в RS сейчас нет. Насколько я понимаю задумку PC_2 в окончательной версии будет можно сказать что-то типа "перебирай параллельно пары чисел и строк, пока не встретишь строку, которой соответствует 1000000"
Туманно S>>Красиво поступил Владимир — использовал функции высшего порядка, решив одновременно несколько задач. E>У него получилась всё та же фильтрация в последнем итераторе...
У него в алгоритме фильтрации нет. Она навесная, а алгоритм универсальный. В РС нет такой возможности комбинировать алгоритмы.
S>>Есть еще один ответ на твой вопрос. Все пароли фильтровать можно эффективнее. Но это все равно хуже, чем не получать ненужные. E>Это я тоже не понимаю.
Что именно из этого?
E>Вот научиться писать что-то вроде "перебирай пароли о сих до сих" -- это прикольно. Это тоже сейчас в RS не особо хорошо получается. И тоже, опять, хочется сказать, что-то типа того, что столько-то пропускаем, а потом столько-то крутим. При этом это "сколько" определяется одним переборщиком, а пропускают в другом, перебирающим, как бы параллельно.
Ты о Paging?
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, samius, Вы писали:
S>>Напишешь? E>Зачем? Ты что не знаешь, как это сделать? Я могу подсказать идею. E>Типа пишешь объект, который имеет в себе текущую букву и множество, которое она может пробежать. E>Делаешь ему функцию или конструктор, который даёт такой же объект, но с профильтрованным множеством поиска и установленный в самую первую доступную букву. Ну как-то так.
Хм. На C/F# я справлюсь, не сомневайся. И без объектов даже.
Я предлагал написать тебе такое на РС, но ты видимо о чем-то другом, раз про объекты и конструкторы
E>Давай я напишу, но оставлю там две ошибки, а ты отладишь потом?
Напиши на РС