我目前正在开发一个递归 Prolog 程序,将路线链接在一起,以创建伯明翰地区的基本GPS。目前我可以得到这样的输出:
输入
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.
Prolog 是一种强大的语言,所以我认为这很容易实现,但是我取出的许多书似乎都跳过了这一部分。据我所知,我必须使用类似于 write() 和 read() 的东西,尽管我不知道细节。
这里有人可以提供一些基本示例或更多信息链接的 Prolog 新手吗?
编辑:很多这些答案似乎非常复杂,解决方案应该只有大约 5-10 行代码。读入一个值不是问题,因为我可以按照以下方式做一些事情:
find:-
write('Where are you? '),
read(X),
nl, write('Where do you want to go? '),
read(Y),
loopForRoute(X,Y).
如果可以使用 write() 写出输出,我会更喜欢它,以便可以使用新行 (nl),以便它像上面的输出一样显示。
如果这是我的输入,那么我将如何安排顶级 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