Я очень новичок в Прологе и натолкнулся на загадку логики, которую, кажется, легко реализовать, но потратив 2 дня на поиск в Интернете, я все еще не могу понять, как ее решить в Прологе.
Три лягушки и три жабы выстроены в линию в конфигурации, показанной на рисунке «Начальное состояние» ниже.Лягушки справа, а жабы слева.С помощью серии действительных движений амфибий вы должны преобразовать состояние в состояние цели, также проиллюстрированное ниже.
Но лягушки и жабы могут двигаться только в соответствии со следующей спецификацией:
- Только одна амфибия (то есть лягушка или жаба) может двигаться за один раз.
- Лягушки могут двигаться только влево, а жабы могут двигаться только вправо.
- Каждое движение - это простой обходили переход.
- Сканирование - это перемещение в соседнее пустое пространство.
- Переход - это перемещение в пустое пространство, которое находится в двух пространствах от начального пространства, так что пространствомежду началом и концом прыжка занята другая амфибия.
- Лягушки могут прыгать только через жаб, а жабы могут прыгать только через лягушек.
![Illustration of the starting and goal states](https://i.stack.imgur.com/gtkfy.png)
Редактировать
Я хочу реализовать все возможные шаги, которые могут сделать лягушки и жабы, вручную, я решил эту проблему, но я хочуреализовать его так, чтобы программа разрешала его, покавыполняя наименьшее количество ходов.
Вот что я пытаюсь сделать:
начальное состояние: [frog1, frog2, frog3, gap, toad3, toad2, toad1]
переход_1: [лягушка1, лягушка2, пробел, лягушка3, жаба3, жаба2, жаба1] переход_2: [лягушка1, лягушка2, жаба3, лягушка3, пробел, жаба2, жаба1]
.
.
.
конечное состояние :: [toad3, toad2, toad1, пробел, frog1, frog2, frog3]