【发布时间】:2021-05-21 21:26:00
【问题描述】:
我是序言的新手,正在尝试解决一些问题。我在下面分别有两个列表,例如 List1 和 List2:
List1: [[0.1, 0.6], [0.1, 0.5], [0.3, 0.5]]
List2: [0.2, 0.7, 0.4]
我需要检查List2 的第n 个元素是否在List1 中相应(第n 个)数字对的范围之间。如果List2 中的数字在范围内,则检查List2 的第(n+1) 个元素是否满足相同的条件。如果一个数字不满足条件,那么我需要返回false。如果List2中的所有数字都满足条件,那么我需要返回true。
我想出了这个想法,但它不起作用,我找不到原因。
bet(L, R, B) :-
Factor1 is B-L,
Factor2 is R-B,
Factor1 > 0,
Factor2 > 0.
comp_lims([], []).
comp_lims([H1|T1], [H2|T2]) :-
member([Left|T], H1),
member(Right, T),
bet(Left, Right, H2) -> comp_lims(T1, T2); fail.
bet 实际上是我为浮点数编写的比较谓词,它在测试时工作正常,如下所示:
?- bet(0.3, 0.7, 0.4).
true.
?- bet(0.3, 0.7, 0.8).
false.
但我找不到 comp_lims 谓词有什么问题,我被卡住了。非常感谢您的帮助!
【问题讨论】:
-
从问题描述中不清楚示例是否正确。在您的示例中,
the (n+1)th element of the List2在哪里?
标签: prolog