|
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 58
|
|
Перебор вариантов29.05.2020, 11:26. Показов 6050. Ответов 72
Метки комбинаторика (Все метки)
Здравствуйте, нужна помощь новичку (мне).
Есть набор k букв, каждой букве может соответствовать несколько значений, например: А: 1,2,7 Б: 3,6 В: 4 Г: 5 Все значения разные. Вопрос: как организовать цикл, чтобы на каждой итерации выдавался набор значений по одному от каждой буквы? То есть в этом примере по 4 значения. Чтобы в итоге перебрались все варианты. Следует сказать, что букв может быть до 33, количество значений не ограничено.
0
|
|
| 29.05.2020, 11:26 | |
|
Ответы с готовыми решениями:
72
перебор вариантов... Перебор всех вариантов
|
|
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 58
|
|
| 01.06.2020, 20:32 [ТС] | |
|
У меня все работает отлично! Даже разгадал оба примера от преподавателя. Правда, слово "врабнушнпбн"("абракадабра") с заменами
аааааббббррркд уврнбрапенабнш Он искал аж 2 минуты :/ А другие слова вроде бы быстро отгадывает. Сейчас пытаюсь перенести этот код в формс, по аналогии с тем, что вы присылали. Спасибо большое ещё раз. Добавлено через 3 минуты Вам тоже большое спасибо, выглядит действительно рабочим. Протестирую потом
0
|
|
|
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
|
||
| 01.06.2020, 21:05 | ||
1
|
||
|
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
|
|||
| 02.06.2020, 08:23 | |||
ккк 123 то у меня формируются такие варианты 1о1 1о2 1о3 2о1 2о2 2о3 3о1 3о2 3о3 то-есть одна и та же буква в слове может быть заменена одновременно разными предложенными для неё вариациями. А вы говорите, что если буква в слове повторяется, то для проверки меняются все одинаковые буквы на одно значение и ваш вариант перебора получится куда меньше 1о1 2о2 3о3 Поэтому абракадарба и высчитывается так долго (у себя я так и не дождался кстати..). Так как для перебора всех вариантов подстановки букв в моей текущей реализации, для этого слова выходит чуть больше чем 10 миллионов вариаций.. Я надеялся, что кто товарища escoult наверняка сработает правильнее и быстрее, но с абракадаброй он почему-то не выдал положительного результата и вывел что слово не найдено.
1
|
|||
|
1533 / 540 / 127
Регистрация: 09.01.2018
Сообщений: 1,756
|
||||||||||||
| 02.06.2020, 08:30 | ||||||||||||
|
Я вчера еще заинтересовался этим и потестировал на длинном словаре.
1
|
||||||||||||
|
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 58
|
|
| 02.06.2020, 08:30 [ТС] | |
|
samana, а можете это пофиксить, пожалуйста?)
0
|
|
|
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
|
|||
| 02.06.2020, 08:35 | |||
Сейчас посмотрю, может я что-то неправильно скопировал из вашего варианта или сделал опечатку при вводе правил замены.
1
|
|||
|
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 58
|
||
| 02.06.2020, 08:45 [ТС] | ||
|
samana,
И если ваш последний код я ещё как-то пытаюсь по аналогии с вашим примером перенести в forms, то код escoult я совсем не знаю, как... Нужно каждый класс в отдельный файл заносить или как? Куда записать содержимое main-а? Я не знаю, честно(
0
|
||
|
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
|
||||||
| 02.06.2020, 08:45 | ||||||
|
escoult, Не могу понять причину, но почему-то не находит "абракадабра".
На всякий случай закину сюда весь ваш код целиком, чтобы было легче запустить для теста. Кликните здесь для просмотра всего текста
1
|
||||||
|
1533 / 540 / 127
Регистрация: 09.01.2018
Сообщений: 1,756
|
||||||||
| 02.06.2020, 08:58 | ||||||||
1
|
||||||||
|
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 58
|
||
| 02.06.2020, 09:02 [ТС] | ||
|
escoult,
0
|
||
|
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
|
||
| 02.06.2020, 09:09 | ||
|
Идя такая, что преподаватель загадывает слово (из словаря) например мир затем придумывает варианты, где каждой букве могут соответствовать другие буквы, например мммрр 12345 то-есть в слове мир, буква м может быть заменена на любую из 123, а буква р на любую из 45. Допустим для м выбрали 1, а для р выбрали 5 тогда слово мир зашифровалось так 1о5 (букве о не предоставили вариаций, поэтому она записывается без изменений). И это зашифрованное 1о5 нам никто не сообщает, а сообщают лишь хеш этого 1о5, те варианты подстановки, которые были использованы мммрр 12345 и сам словарь. Задание по хешу и правилам замены - найти оригинальное слово в словаре, то-есть мир.
1
|
||
|
1533 / 540 / 127
Регистрация: 09.01.2018
Сообщений: 1,756
|
||
| 02.06.2020, 09:11 | ||
|
На WInForm вам не нужно трогать Main (он чаще всего изменяется в проектах, но пока не делайте этого). Постарайтесь понять, что на форму вы выводите информацию, всего лишь. В консоль вы тоже выводите информацию, только другим способом. А работа с бизнес-логикой приложения не изменяется. Вы также будете отправлять данные в метод как и в консоли, только теперь будете брать их из формы. И выводить результаты на форму. То есть вместо того чтобы писать Console.WriteLine(), вы выведете результат в какой то контролл на форме. Для начала, если трудно понять, пишите управляющий код в классе Form. То есть, то что написано в Main, там где создаются экземпляры класса и происходит работа, вы можете написать в этом классе. А вместо Console.WriteLine() пишите куда вывести результат.
1
|
||
|
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 58
|
|
| 02.06.2020, 09:15 [ТС] | |
|
escoult, спасибо. Но ведь main это функция, а form это класс. То есть мне нужно в классе form внутри создать какую-то функцию, аналогичную main, но просто с другим названием?
0
|
|
|
1533 / 540 / 127
Регистрация: 09.01.2018
Сообщений: 1,756
|
||||||||||||||
| 02.06.2020, 09:51 | ||||||||||||||
|
Если вы хотите потестировать слово "абракадбра", то вам нужно зашифровать именно слово "абракадабра". А у вас в коде зашифровано слово, которого в словаре нет. Добавлено через 9 минут Да, об этом и речь. Когда управляющий код должен начинать вычисление? Предположим, когда пользователь нажал на кнопку "Старт". У этой кнопки есть обработчик события Click. Т.е., что делать когда это событие наступит. Создайте метод, назовите его например StartHacking(параметры) и в нем создавайте экземпляры класса, в общем все то, что написано в Main. А затем этот метод вызовите в обработчике события кнопки. Сначала получите все необходимые параметры, а затем вызовите этот ваш метод. п.с. Постарайтесь не проводить аналогию с Main в консоли. Так пишется для простоты, "на коленке" так сказать. Если писать все правильно, то в Main консольного приложения будет только строчка, которая запустит приложение (например AppRun()). И все, больше там ничего не будет. Вся остальная работа будет происходить в других методах вне Main. Это когда по быстрому надо что-то написать, то пишут прямо в Main. Добавлено через 21 минуту samana, я набросал тест для разных слов
1
|
||||||||||||||
|
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
|
||
| 02.06.2020, 09:56 | ||
|
Вот ссылка на пост из этой темы, где об этом сказано https://www.cyberforum.ru/post14600946.html
1
|
||
|
1533 / 540 / 127
Регистрация: 09.01.2018
Сообщений: 1,756
|
|||||||
| 02.06.2020, 10:24 | |||||||
В вашем примере, где тест не выполняется, слово в словаре "абракадабра", а шифрованное слово вот это "врабнушнпбн". Но это результат перестановок для другого слова. Я его взял в одном из постов, это абракадабра по смыслу, но не по фактичекому значению. Я сделал в нем перестановки и потестировал.
1
|
|||||||
|
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 58
|
|
| 02.06.2020, 10:35 [ТС] | |
|
escoult, ну вообще "врабнушнпбн" и есть результат замены букв в слове "абракадабра" по правилу
аааааббббррркд на уврнбрапенабнш Если вы об этом, конечно... Преподаватель сам проводит замены, дает нам "врабнушнпбн" и правило замен, а при проверке работоспособности нашей программы она должна вывести "абракадабра", из словаря.
0
|
|
|
1533 / 540 / 127
Регистрация: 09.01.2018
Сообщений: 1,756
|
||
| 02.06.2020, 10:49 | ||
|
В этой замене одна и та же буква в слове заменяется на различные символы из набора замен. То есть буква а сначала заменяется на в, затем на б, затем на у и так далее. Вот почему мы с samana никак не можем понять друг друга. Мой код этого не делает, он использует один символ для замены одинаковых букв. Если оно так, как вы говорите,то это существенно увеличит количество вариантов. Ну и да, генератор ключей надо переделывать.
1
|
||
|
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 58
|
||
| 02.06.2020, 10:53 [ТС] | ||
|
escoult,
0
|
||
|
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 58
|
||||||
| 02.06.2020, 11:55 [ТС] | ||||||
|
samana, escoult, посмотрите, пожалуйста. Перенес код samana (который долго ищет)
0
|
||||||
| 02.06.2020, 11:55 | |
|
Перебор всех возможных вариантов
Диаграммы вариантов использования
Как сделать один из 3 вариантов? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|