gpt4 book ai didi

mapping - 序言中的输入

转载 作者:行者123 更新时间:2023-12-04 06:51:42 24 4
gpt4 key购买 nike

我目前正在开发一个递归 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

最佳答案

对于这类事情,我通常会创建 shell 谓词。所以在你的情况下...

guided:-
print('Enter your start point'),nl,
read(Start),
print('Enter your destination'),nl,
read(Dest),
routeplan(Start, Dest, Route),
print_route(Route).

而 print_route/1 可能是这样的递归:
print_route([]).

print_route([[A,B,Method]|Tail]):-
print_route(Tail),
print('Go from '), print(A),
print(' to '), print(B),
print(' by '), print(Method), nl.

我假设 routeplan/3 谓词的第三个变量是一个列表列表。此外,它是通过添加到尾部来构建的。如果不是,它应该很容易适应。在评论中提问。

关于mapping - 序言中的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/676707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com