我可以使用findall知道列表中哪个项目的价格最低吗?

时间:2016-11-27 20:18:54

标签: list prolog

我正在实施一种算法,将两个城市之间的所有路径放在一个列表中。此列表保存了路径和获取该路径的总价格。该列表如下所示:

[(12, [A,B,C,D]), (15, [B,C,D,E]), ... ]

在我拥有此列表中的所有路径之后,我想知道哪一个是最便宜的。我知道我可以自己做,但我想知道是否有任何方法可以使用findall/3来完成这项任务。

1 个答案:

答案 0 :(得分:0)

我假设你有一个断言的数据谓词类似于:

insert_data :-
    assert(cities(CITYA,3)), assert(cities(CITYB,2)).

你可能想要做的是:

my_query(City, L) :-findall(Name, (cities(City,Weight),
    setup(City1,Weight1),
    setup(City2,Weight2), 
    Weight2-Weight1),L),!.