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

我是prolog的新手,我对如何进行这项工作感到非常困惑,您的帮助将帮助我了解我还需要为进一步的任务做些什么

我要检查两个车站是否在同一条线上, 地点如下:

% 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,行):-…