![]() |
|
|
![]()
|
|
| neosapient |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: нет Всего: 4 |
Помогите написать алгоритм, чтоб каждое последующее слово отлечалось от предыдущего на один символ (в собственном алфовите)
Пример: ГОРА ГОРЕ МОРЕ и так все возможные комбинации Визуально пример ![]() Допустим у меня весь алфавит состоит из двух символов (0 и 1) В слове 2 буквы, тогда всевозмежные комбинации (2символа*2буквы=4сочетания) идут в следующем порядке: 00 01 11 10 Если в слове 3 буквы: 000 001 011 010 110 100 101 111 (этот пример частично верен, т.к. из 111 в 000 нельзя перейти изменением одного символа, надо изменить три символа; хотя я уверен что правильный алгоритм поправит этот пример) А теперь надо чтоб алфавит состоял из 4 символов, а слово имеет 7 букв, и незабывайте о порядке, чтоб каждое последующее слово отлечалось от предыдущего на один символ Добавлено @ 09:47 Есть у кого идеи Это сообщение отредактировал(а) neosapient - 10.11.2006, 09:46 |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 1 Всего: 61 |
neosapient,
Это сообщение отредактировал(а) Kuvaldis - 10.11.2006, 11:41 -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| esperant0 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 4 Всего: 14 |
да
меняй каждый раз случайно выбранную букву в слове. через определенное количество шагов почти наверняка обойдешь все слова -------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
|||
|
||||
| neosapient |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: нет Всего: 4 |
Kuvaldis, Ваш текст программы похоже составлен на матлабе.
А можно перевести на С подобный язык. Просто смутула меня команда write - она что ли выводит на экран?
Спасибо, хоть буду знать как это называется. Так, а можно показать код, в котором представлен алгоритм с расширеным (не двоичным) алфавитом. |
|||
|
||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 1 Всего: 16 |
||||
|
||||
| neosapient |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: нет Всего: 4 |
Спасибо, конечно. Однако несовсем то, что искал. Я так понял, что этот метод перебирает слова последовательно, 00 01 10 11 А я хочу, чтоб каждое последующее слово отлечалось от предыдущего на один символ 00 01 11 10 <-> и следующее слово совпадает с первым 00 01 ... и т.д. ----------------------- Собрал, проект и вижу обыкновенный перебор всех чисел, с основой системы счисления 3 (записаных в обратном порядке, т.е. от большего к меньшему). Нет, не подходит. Мне надо устроить перебор, чтоб каждое последующее слово отлечалось от предыдущего на один символ Уже неделю как голову ломаю, видно надо искать математического гения, чтоб алгоритм составил. Это сообщение отредактировал(а) neosapient - 11.11.2006, 18:02 Присоединённый файл ( Кол-во скачиваний: 1 )
alpTest.rar 33,96 Kb |
|||
|
||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 1 Всего: 16 |
Аа, понял, пардон
|
|||
|
||||
| neosapient |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: нет Всего: 4 |
Ну, ни у кого идей не осталось?
|
|||
|
||||
| esperant0 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 4 Всего: 14 |
я уже дал вам алгоритм уловлетворяющий вашему критерию -------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
|||
|
||||
| neosapient |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: нет Всего: 4 |
Кажется дошло,
000 100 110 010 011 111 001 101 001 <-> и к началу 000 100 ... Суть в следующем (смотрите прикрепленный рисунок). В слове n букв, то есть n векторов базиса, иными словами имеем n мерное пространство. В данном случае в слове 3 буквы, имеем трехмерную матрицу. Каждая буква из слова принимает значение одного из символов из алфавита, соответствующего данной позиции буквы в слове (представлено числом клеток-значений в векторе). В данном случае каждая буква из слова принимает все символы из алфавита (здесь два символа 0 и 1). У алгоритма такие особенности: 1) смещение на соседнюю неиспользованую ранее клетку, происходит через соединяющую "стенку (пол или потолок)" - т.е. на одну позицию из возможных в данной системе координат. 2) алгоритм должен обойти все клетки 3) последняя клетка соприкосается со стартовой по одной из координат - т.е через соединяющую "стенку (пол или потолок)". 4) если мы упираемся в стенку по одному из векторов, следующий за последним элементом вектора идет первый элемент вектора; связь двунаправленая - работаем над полем (ну над кольцом как минимум). Входные параметры: 1) двумерный массив, первый индекс определяет вектор (букву, позицию в слове), второй индекс определяет символ алфавита для данного вектора (значение, которое принимает буква вданной позиции слова). 2) стартовое слово - случайно определено/задано Выходные параметры: массив слов, от стартового слова и до последнего, между ними перечислены все переходные слова; размер массива ответа равен произведению всех длин каждого из векторов (длина каждого из векторов = количество символов в соответствующем этому вектору алфавите = кол-во значений, которые может принять буква в соответствующей позиции в слове). Напишите пожалуйста алгоритм, лучше если это будет итерация, но рекурсия тоже подойдет. Это сообщение отредактировал(а) neosapient - 12.11.2006, 19:21 Присоединённый файл ( Кол-во скачиваний: 6 )
pic.JPG 4,67 Kb |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |