1

我正在尝试按完成路径所需的距离对路径列表进行排序。我正在使用的 Prolog 代码如下。

当我打电话时sortRoutes,我从 Prolog 收到一个存在错误,predsort说不存在。但是,我正在使用排序模块,这似乎并没有改变任何东西。

我似乎无法弄清楚为什么这不起作用。我做错什么了吗?

谢谢!

:- 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 回答