В настоящее время я работаю над рекурсивной программой Prolog, которая объединяет маршруты для создания базового GPS района Бирмингема. На данный момент я могу получить вывод так:
Input
routeplan(selly_oak, aston, P).
выход
P = [selly_oak, edgbaston, ... , aston]
Я хотел бы, чтобы моя программа предоставляла какой-то интерфейс, поэтому, если бы я набрал что-то вроде:
Route from selly_oak to aston
Это даст мне:
Go from selly_oak to edgbaston
Go from edgbaston to ...
Finally, Go from ... to aston.
Пролог - мощный язык, поэтому я предполагаю, что это легко возможно, однако многие книги, которые я вынул, похоже, пропускают эту часть. Насколько я знаю, я должен использовать что-то вроде write () и read (), хотя детали мне неизвестны.
Может ли кто-нибудь из новичков Пролога привести некоторые базовые примеры или ссылки на дополнительную информацию?
РЕДАКТИРОВАТЬ: Многие из этих ответов кажутся очень сложными, где решение должно быть всего около 5-10 строк кода. Чтение значений не является проблемой, так как я могу сделать что-то вроде:
find:-
write('Where are you? '),
read(X),
nl, write('Where do you want to go? '),
read(Y),
loopForRoute(X,Y).
Я бы предпочел, чтобы выходные данные могли быть записаны с использованием write (), чтобы можно было использовать новую строку (nl), чтобы она отображала как вывод выше.
Если бы это был мой вклад, как бы я тогда организовал top routeplan () для работы с этими входами? Кроме того, если бы я добавил линии для этих станций в качестве дополнительного параметра, как бы это тогда было реализовано? Все ссылки определены в начале файла следующим образом:
rlinks(selly_oak, edgbaston, uob_line).
rlinks(edgbaston, bham_new_street, main_line).
Следовательно, с этой информацией было бы хорошо иметь возможность прочитать строку так.
Go from selly_oak to edgbaston using the uob_line
Go from edgbaston to ... using the ...
Finally, go from ... to aston using the astuni_line