Prolog 第一名和第二名之间的距离,或第一名和第三名之间的距离-序言

Prolog 第一名和第二名之间的距离,或第一名和第三名之间的距离-序言,prolog,distance,Prolog,Distance,标题可能会让人困惑,所以我会在这里更好地解释它 我创建了一些查询来存储两个地方之间的距离数据。 例如: miles_between(60, aberdeen, dundee). 这意味着阿伯丁和邓迪之间的距离是60英里 我创建了另一个查询,X和Y之间的距离就是Y和X之间的距离 我希望能够创建这个查询:第一位和第二位之间的距离是第一位到第二位的英里数,或者第一位到第三位的英里数加上第三位和第二位之间的距离 我不完全确定怎么做。我目前创建了我认为是此查询代码的开头: equal_distance(

标题可能会让人困惑,所以我会在这里更好地解释它

我创建了一些查询来存储两个地方之间的距离数据。 例如:

miles_between(60, aberdeen, dundee).
这意味着阿伯丁和邓迪之间的距离是60英里

我创建了另一个查询,X和Y之间的距离就是Y和X之间的距离

我希望能够创建这个查询:第一位和第二位之间的距离是第一位到第二位的英里数,或者第一位到第三位的英里数加上第三位和第二位之间的距离

我不完全确定怎么做。我目前创建了我认为是此查询代码的开头:

equal_distance(X,Y,Z) :- miles_between(X,Y,Z); miles_between(X,Z,Y).
如果有人能一步一步地向我解释需要做什么,并解释我做错了什么,那就太好了!谢谢:)


如果这个问题很难理解,我深表歉意。

就术语而言,
miles_-between(60,阿伯丁,邓迪)。
是事实,而不是疑问。:)如果两个城市之间的距离有两个定义可以应用,那么可以使用两个不同的谓词子句来定义它们。一个是,
等距离(英里,起点,终点):-Miles\u-between(英里,起点,终点)。
另一个是,
等距离(英里,起点,终点):-Miles\u-between(英里1,起点,X),Miles\u-between(英里2,X,终点),英里等于英里1+英里2。
但我不明白你为什么叫它
等距
。这里的“平等”是什么?啊,对不起,我已经好几年没学prolog了,几乎忘记了我所知道的一切!是的,一开始我误读了问题,没有更新代码。我现在称之为总距离。事实上,我已经设法解决了这个问题,我将很快添加一个答案来解释它。感谢您的反馈!:)