Так что я работал над чем-то, чтобы помочь мне лучше понять Пролог. Я взял традиционную проблему кувшин с водой , но добавил немного трудностей. Таким образом, мой код работает довольно хорошо. Единственное, что осталось сделать, - это сделать хорошее форматирование для вывода. В настоящее время он показывает только минимальный путь, найденный в моем коде для заполнения кувшина. (см. пример ниже)
До сих пор я думал, как мне это сделать, но у меня нет понятия как это сделать в Прологе.
Финальный список моего оптимального пути отформатирован так: [ [x(a,b),y(c,d),z(e,f)], [], [], ...]
Я хочу достичь этого формата (более подробный вывод см. Ниже):
a -> b
c -> d
etc
- Во-первых, я печатаю начальную букву как жидкую (в нашем случае - 1. В противном случае первый элемент в списке - это начальная модель). Затем я беру первый подсписок и сравниваю его с предыдущим, чтобы увидеть, какой из кувшинов перешел на другой, и распечатать его. Затем продолжайте, пока список не станет пустым.
В настоящее время он показывает это:
?- problem.
[[jug(3,0),jug(5,0),jug(8,8)],[jug(3,0),jug(5,5),jug(8,3)],
[jug(3,3),jug(5,2),jug(8,3)],[jug(3,0),jug(5,2),jug(8,6)],
[jug(3,2),jug(5,0),jug(8,6)],[jug(3,2),jug(5,5),jug(8,1)],
[jug(3,3),jug(5,4),jug(8,1)],[jug(3,0),jug(5,4),jug(8,4)]]
true .
Какой правильный путь для текущей конфигурации кувшинов. (Позже я добавлю способ сделать n кувшинов)
Я бы хотел, чтобы это было показано (в моем коде вы можете видеть индекс, который я хочу для каждого из них):
?- problem.
1 -> 2
2 -> 3
3 -> 1
2 -> 3
1 -> 2
2 -> 3
3 -> 1
true.
Я бы хотел получить помощь по этому поводу, так как все, что я пытаюсь, - это логический беспорядок
Спасибо, ребята / девушки <3 </p>