Prolog管映射同一条线
我是prolog的新手,我对如何进行这项工作感到非常困惑,您的帮助将帮助我了解我还需要为进一步的任务做些什么 我要检查两个车站是否在同一条线上, 地点如下:Prolog管映射同一条线,prolog,Prolog,我是prolog的新手,我对如何进行这项工作感到非常困惑,您的帮助将帮助我了解我还需要为进一步的任务做些什么 我要检查两个车站是否在同一条线上, 地点如下: % Locations % %Central Line location(nh,central). location(lg,central). location(oc,central). location(tc,central). location(cl,central). location(ls,central). location
% Locations %
%Central Line
location(nh,central).
location(lg,central).
location(oc,central).
location(tc,central).
location(cl,central).
location(ls,central).
location(bg,central).
% victoria
location(br,victoria).
location(vi,victoria).
location(oc,victoria).
location(ws,victoria).
location(kx,victoria).
location(fp,victoria).
% Northern
location(eu,northern).
location(ws,northern).
location(tc,northern).
location(em,northern).
location(ke,northern).
% Metropolitan
location(fr,metropolitan).
location(bs,metropolitan).
location(kx,metropolitan).
location(ls,metropolitan).
location(al,metropolitan).
% Bakerloo
location(wa,bakerloo).
location(pa,bakerloo).
location(oc,bakerloo).
location(em,bakerloo).
location(ec,bakerloo).
所以我需要做一个sameLine()规则来检查两个站是否在同一条线上,以及它是哪条线上。我想做:
sameLine(location1,location2,line) :-
location(location1,line),
location(location2,line).
这是否检查两个车站是否在同一条线上?如何显示它是哪一行?您知道Prolog中的变量必须以大写字母或
开头吗?因此,您的sameLine/3
定义不正确。否则,如果Location1
和Location2
都在线line
,那么sameLine/3
所做的就是成功。您的意思是变量应该是Location()。或位置(FR,大都会)???正如我所说的,我完全不了解任何东西。location(…)
是一个谓词,而不是一个变量。例如,您需要sameLine(位置1,位置2,行)
。检查Prolog介绍性文档,了解Prolog中的正确语法。尤其是因为你是初学者,文档和教程是你的朋友。哇,你的教授真差劲。上周,你们班有五个同学来这里就这一个问题寻求帮助。sameline/3
如果你把变量大写,就行了。现在你有了原子,它就不起作用了。例如,sameLine(位置1,位置2,行):-…