1

パスのリストを完了するのにかかる距離で並べ替えようとしています。私が使用しているPrologコードは以下のとおりです。

を呼び出すと、存在しないsortRoutesという Prolog からの存在エラーが表示されます。predsortただし、 sort モジュールを使用していますが、何も変わらないようです。

なぜこれが機能しないのか理解できないようです。私は何か間違ったことをしていますか?

ありがとう!

:- use_module(library(sort)).

sortRoutes(DistRoutes, SortedRoutes) :-
    predsort(distCompare, DistRoutes, SortedRoutes).

distCompare(Comp, E1, E2) :-
    my_nth(2, E1, Dist1),
    my_nth(2, E2, Dist2),
    compDists(Dist1, Dist2).

compDists(>, Dist1, Dist2) :-
    Dist1 > Dist2.
compDists(<, Dist1, Dist2) :-
    Dist1 =< Dist2.
4

1 に答える 1

0

distCompare であるべきだと思います

distCompare(Comp, E1, E2) :-
    my_nth(2, E1, Dist1),
    my_nth(2, E2, Dist2),
    compDists(Comp, Dist1, Dist2).
于 2013-10-27T12:08:58.473 に答える