多输入prolog中的菜单驱动程序?
我正在设计一个菜单驱动的prolog代码来查找距离 我的代码如下所示多输入prolog中的菜单驱动程序?,prolog,Prolog,我正在设计一个菜单驱动的prolog代码来查找距离 我的代码如下所示 road(arad, zerind, 75). road(arad, sibiu, 140). road(arad, timisoara, 118). depth_first([[Goal|Path]|_],Goal,[Goal|Path],0). depth_first([Path|Queue],Goal,FinalPath,N) :- extend(Path,NewPaths), append(NewP
road(arad, zerind, 75).
road(arad, sibiu, 140).
road(arad, timisoara, 118).
depth_first([[Goal|Path]|_],Goal,[Goal|Path],0).
depth_first([Path|Queue],Goal,FinalPath,N) :-
extend(Path,NewPaths),
append(NewPaths,Queue,NewQueue),
depth_first(NewQueue,Goal,FinalPath,M),
N is M+1.
extend([Node|Path],NewPaths) :-
findall([NewNode,Node|Path],
(road(Node,NewNode,_),
\+ member(NewNode,Path)), % for avoiding loops
NewPaths).
run:-
write('Enter the ORIGIN City: '),read(S),
write('Enter the Destination City: '),read(D),
write('Type of search: '),nl,
write('1. depth_first search 2. exit'),nl,
write('Enter your option:'),nl,
read(X),choice(X).
choice(X):-X=:=1,
depth_first([[S]],D,P,C), writeln([P]).
每次我运行代码时,控制台只打印true并退出。我知道我犯了一些错误,但我从最后一个小时就想不出来了
如果我在控制台中以
depth_first([[arad]],zerind,P,C)
它运行并打印
更新:
“深度优先([[S]],D,P,C),writeln([P])”这只是在文本位置打印数字
run:-
write('Enter the ORIGIN City: '),read(S),
write('Enter the Destination City: '),read(D),
write('Type of search: '),nl,
write('1. depth_first search 2. exit'),nl,
write('Enter your option:'),nl,
read(X),choice(X).
此时,运行谓词定义停止(以句号结束)。
选择谓词开始:
choice(X):-X=:=1,
depth_first([[S]],D,P,C), writeln([P]).
所以run/0成功了,什么也不做。这就是你的错误。这对你有帮助吗?没有,它只是打印一个数字[[u 12372]],我想让它打印文本。他们还有其他打印方式吗?我只是指出了你的错误来帮助你。如果你不明白什么,发一个新问题。我还没有完成你的家庭作业。如果你的序言给了你关于单例变量的警告,请理解并修复它们。搜索StackOverflow以获得有关这一点为何重要的大量答案。如果您的Prolog没有给出关于单例变量的警告,请使用更好的Prolog。