1
私は、グリッドベースのマップを持っている、と私は私の2点間の対角距離を与える述語を開発しようとしている、これは私が持っているもので、プロローグ、対角距離
dist_diagonal((X,Y),(X,W),Passos,D):-
dist_ortogonal((X,Y),(X,W),D1),
D is D1 + Passos.
dist_diagonal((X,Y),(Z,Y),Passos,D):-
dist_ortogonal((X,Y),(Z,Y),D1),
D is D1 + Passos.
dist_diagonal((X,Y),(Z,W),Passos,_):-
X>Z,
Y<W,
Passos1 is Passos+1,
X1 is X-1,
Y1 is Y+1,
dist_diagonal((X1,Y1),(Z,W),Passos1,_).
dist_diagonal((X,Y),(Z,W),Passos,_):-
X<Z,
Y<W,
Passos1 is Passos+1,
X1 is X+1,
Y1 is Y+1,
dist_diagonal((X1,Y1),(Z,W),Passos1,_).
私がしようとすると、それをテスト:
dist_diagonal((5,4),(3,8),0,D).
私はtrue
の代わりに私の述語と間違って何D
の値を取得しますか?
PS:これは、Y<Z
という紛らわしい点でのみ使用することにします。 PS2:ユークリッド距離ではなく、8種類の動きを使って距離を計算していることに注目してください。 Diagonal distance
ありがとうございました!!!! – user3636673
助けてくれてうれしい!! – coder