|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » *Решено* | Задача по комбинаторике. Генератор комбинаций |
|
|
*Решено* | Задача по комбинаторике. Генератор комбинаций
|
Ветеран Сообщения: 908 |
Профиль | Отправить PM | Цитировать Народ, может кто подкинет идею, как конструктивно сделать код, генерирующий все возможные комбинации какого-дибо набора символов.
|
|
Отправлено: 23:16, 14-01-2005 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Surround
Мало данных для анализа, как говоривает кое-кто из моих знакомых И не говорите так: "конструктивно сделать код". Очень коряво звучит. Это относительно новое слово-паразит, "конструктивно". Ещё недавно было "концептуально". Перорально, млин. |
Отправлено: 00:25, 15-01-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 908
|
Профиль | Отправить PM | Цитировать hasherfrog
извиняюсь, я имел в виду, чтобы код был не грузный и не отнимал большое количество ресурсов на перебор есть набор символов, скажем A и B. Нужно составить, например, все возможные 6-символьные комбинации из этих знаков, причем, чтобы ни одни подряд более 3х раз не повторялся. |
Последний раз редактировалось Surround, 15-01-2005 в 07:23. Отправлено: 06:53, 15-01-2005 | #3 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать hasherfrog
Цитата hasherfrog:
Surround Цитата Surround:
program Project1; {by Savant} {$APPTYPE CONSOLE} uses SysUtils, Classes; const js = 2; { Кол-во различных символов } jp = 3; { Максимально допустимое кол-во повторяющихся символов} jm = 6; { Кол-во символов в строке } a: array[1..js] of Char = ('A','B'); var i: Integer; { ИМХО byte/shortint не рекомендую использовать, при вычислениях он приводится к Cardinal/Integer } b: array[1..jm] of Char; res: TStrings; function passed: Boolean; { Проверяет текущее значение b на допустимость по кол-ву повторений } var x,y: Integer; c: array[1..jp+1] of Char; begin Result:=True; for x:=1 to js do begin for y:=1 to jp+1 do c[y]:=a[x]; if Pos(c,b) <> 0 then Result:=False; end; end; procedure moving(k,j: Integer); var i: Integer; begin for i:=j to js do begin b[k]:=a[i]; if passed then if res.IndexOf(b)=-1 then res.Add(b); if k > 1 then moving(k-1,1); end; end; begin res:=TStringList.Create; try for i:=1 to jm do b[i]:=a[1]; for i:=1 to jm do moving(i,2); for i:=0 to res.Count-1 do WriteLn(res.Strings[i]); finally res.Free; end; ReadLn; end. BBBAAA BABAAA AABAAA ABBAAA BBABAA BAABAA AAABAA ABABAA BABBAA AABBAA ABBBAA BBBABA BBAABA BAAABA ABAABA BABABA AABABA ABBABA BBABBA BAABBA AAABBA ABABBA BABBBA AABBBA BBBAAB BBAAAB ABAAAB BABAAB AABAAB ABBAAB BBABAB BAABAB AAABAB ABABAB BABBAB AABBAB ABBBAB BBBABB BBAABB BAAABB ABAABB BABABB AABABB ABBABB BBABBB BAABBB AAABBB ABABBB p.s.: я тут несколько по геморному скопировал код, если чо не компилится, сообщайте. |
||
Отправлено: 15:35, 15-01-2005 | #4 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Savant
>> Уж точно не я, данных вполне достаточно Ну-ну Условие "что бы каждый символ не повторялся бы более 3-х раз" Вы, очевидно, прочитали в голове Surround с помощью телепатии? И решение, похоже, неверное. Вариант решения (уже 2, 3-й по порядку) - не удовлетворяет вышеупомянутому условию. |
|
Отправлено: 16:36, 15-01-2005 | #5 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать hasherfrog
Не повторялся бы подряд более трёх раз! |
Отправлено: 16:39, 15-01-2005 | #6 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Savant
Да, действительно Ну что ж, поздравляю с победой |
Отправлено: 17:06, 15-01-2005 | #7 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать hasherfrog
Победой в чём? Подожди поздравлять, вот когда явится Surround, посмотрит на всё ЭТО, и не скажет "полный отстой", тогда можешь поздравить |
Отправлено: 17:14, 15-01-2005 | #8 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Кстати, задачи, где речь идёт о комбинациях из 2-х символов. можно решать и по-другому
Нетрудно заметить, что общее количество комбинаций в данном случае (без дополнительного условия о 3-х) описывается двоичными числами от 0 до 2**6, т.е. символ==бит. И остается только проверить все числа от 0 до 63 на это самое условие... |
Отправлено: 17:15, 15-01-2005 | #9 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать hasherfrog
Цитата:
Цитата Savant:
|
||
Отправлено: 17:18, 15-01-2005 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интернет - Генератор кодов ссылок? | Yez | Программное обеспечение Windows | 0 | 26-05-2009 18:12 | |
Log/Monitoring - генератор пакетов | Busla | Сетевые технологии | 2 | 25-04-2009 10:58 | |
[решено] Генерация комбинаций | morgan1991 | AutoIt | 13 | 29-01-2009 23:33 | |
Генератор случайных чисел | Murrey | Хочу все знать | 3 | 22-08-2006 13:00 | |
генератор кода | Trojn | Мобильные ОС, смартфоны и планшеты | 5 | 04-04-2004 04:06 |
|