用于计算两点之间距离的毕达哥拉斯定理。序言
Pythagorean theorem for calculating distance between two points. Prolog
我们都知道勾股定理公式是:a2 + b2 = c2。我想实现这个公式,用于计算两点之间的距离。这是我的城市坐标数据(以公里为单位):
city(amsterdam, 121.813/487.362).
city(breda, 112.095/398.291).
city(eindhoven, 161.871/382.839).
city(groningen, 233.871/582.030).
city(haarlem, 103.690/488.416).
city(hertogenbosch, 149.225/412.119).
city(leeuwarden, 182.605/583.855).
city(maastricht, 176.830/318.793).
city(rotterdam, 92.548/437.734).
city(utrecht, 135.923/456.419).
city(zwolle, 203.252/503.130).
我为此实施了一个程序,但它似乎不起作用:
estimate(State/NextState, Estimate) :-
city(State, X/Y),
city(NextState, X1/Y1),
X2 is X1 - X,
Y2 is Y1 - Y,
Estimate is X2^2 + Y2^2,
DifferentVar is sqrt(Estimate),
estimate(State/NextState, DifferentVar).
如果查询类似这样它 returns false:
?- estimate(amsterdam/utrecht, X).
false.
?- estimate(utrecht/amsterdam, X).
false.
这个我也试过了,但是不行:
estimate(State/NextState, Estimate) :-
city(State, X/Y),
city(NextState, X1/Y1),
Estimate is sqrt((X1 - X)^2 + sqrt(Y1 - Y)^2).
我检查了每一个 'subgoal',我找不到错误或错误的实现。在我看来,每个 'subgoal' 都达到了,但它仍然是 returns 错误。如果有人能进一步帮助我,我将不胜感激!
估计规则应该是:
estimate(State/NextState, Estimate) :-
city(State, X/Y),
city(NextState, X1/Y1),
X2 is X1 - X,
Y2 is Y1 - Y,
Estimate is sqrt(X2^2 + Y2^2).
请注意,只有最后一行发生了变化(接下来的 2 行被删除了)。
我们都知道勾股定理公式是:a2 + b2 = c2。我想实现这个公式,用于计算两点之间的距离。这是我的城市坐标数据(以公里为单位):
city(amsterdam, 121.813/487.362).
city(breda, 112.095/398.291).
city(eindhoven, 161.871/382.839).
city(groningen, 233.871/582.030).
city(haarlem, 103.690/488.416).
city(hertogenbosch, 149.225/412.119).
city(leeuwarden, 182.605/583.855).
city(maastricht, 176.830/318.793).
city(rotterdam, 92.548/437.734).
city(utrecht, 135.923/456.419).
city(zwolle, 203.252/503.130).
我为此实施了一个程序,但它似乎不起作用:
estimate(State/NextState, Estimate) :-
city(State, X/Y),
city(NextState, X1/Y1),
X2 is X1 - X,
Y2 is Y1 - Y,
Estimate is X2^2 + Y2^2,
DifferentVar is sqrt(Estimate),
estimate(State/NextState, DifferentVar).
如果查询类似这样它 returns false:
?- estimate(amsterdam/utrecht, X).
false.
?- estimate(utrecht/amsterdam, X).
false.
这个我也试过了,但是不行:
estimate(State/NextState, Estimate) :-
city(State, X/Y),
city(NextState, X1/Y1),
Estimate is sqrt((X1 - X)^2 + sqrt(Y1 - Y)^2).
我检查了每一个 'subgoal',我找不到错误或错误的实现。在我看来,每个 'subgoal' 都达到了,但它仍然是 returns 错误。如果有人能进一步帮助我,我将不胜感激!
估计规则应该是:
estimate(State/NextState, Estimate) :-
city(State, X/Y),
city(NextState, X1/Y1),
X2 is X1 - X,
Y2 is Y1 - Y,
Estimate is sqrt(X2^2 + Y2^2).
请注意,只有最后一行发生了变化(接下来的 2 行被删除了)。