#1 09.12.05 14:42
Списки в Прологе
Есть такая задача, которую не могу никак решить:
Написать программу для отношений:
ЧЕТНАЯ_ПЕРЕСТАНОВКА(Список1,Список2) и
НЕЧЕТНАЯ_ПЕРЕСТАНОВКА(Список1, Список2),
где Список2 - это переставленный Список1 за четное или за нечетное число ша-гов. Например,
ЧЕТНАЯ_ПЕРЕСТАНОВКА ([1,2,3],[2,3,1])
НЕЧЕТНАЯ_ПЕРЕСТАНОВКА ([1,2,3],[2,1,3])
Offline
#3 10.12.05 11:53
Re: Списки в Прологе
Так как больше о задаче ничего не известно, то суть перестановок мне видится так: списки просматриваются слева направо, если текущий элемент в Списке1 не равен элементу с тем же индексом в Списке2, то меняются местами текущий и следующий элементы в Списке1, индекс увеличивается на единицу и процесс повторяется. Если же эти элементы равны, то сразу индекс увеличивается на единицу и процесс повторяется. Дойдя до конца списка весь процесс повторяется заново, пока не будет получен Список2.
Алгоритм сходен с сортировкой пузырьком.
Есть задумка сделать такую рекурсию: ЧЕТНАЯ_ПЕРЕСТАНОВКА - истинна, если после одной правильной перестановки НЕЧЕТНАЯ_ПЕРЕСТАНОВКА - истинна. Перестановка является правильной, если она приближает Список1 к Списку2.
Исправлено ordorub (10.12.05 11:56)
Offline

