假设我有以下数据:以mers(大陆,国家,病例,死亡)的形式
mers("middle east", "kingdom of saudi arabia", 1863, 750).
mers("middle east", "united arab emirates", 92, 13).
mers("middle east", "qatar", 19, 5).
mers("middle east", "jordan", 35, 14).我想返回的国家比约旦有更多的病例,我如何在prolog中实现?
因此,查询应返回沙特阿拉伯王国、阿拉伯联合酋长国
发布于 2020-04-20 11:12:24
为此,您可以使用findall/3,它将返回Ceses值高于"jordan“的所有位置的列表。下面假设您只有1个值对应于"jordan“。
findall(Loc, (mers(_, "jordan", X, _), mers(_, Loc, Cases, _), Cases>X), Y). 在上面的代码中,Loc是一个变量,它将绑定到你想要的每个位置。在中间的参数中,您的条件是:
mers(_, "jordan", X, _), mers(_, Loc, Cases, _), Cases>X其中X是"jordan“的值,Loc是要返回的其他位置,Cases是必须大于X的值。
输出为:
Y = ["kingdom of saudi arabia", "united arab emirates"].https://stackoverflow.com/questions/61314233
复制相似问题