给定两个排序列表Xs
和Ys
,我如何确保Xs
中的任何X
与Ys
中的任何Y
之间的绝对差值至少为2?如何检查两个列表整数之间的差异是否大于或等于2?
示例查询与期望答案:
?- different([1,2,4],[5,6]). % 5-4 < 2
false
?- different([1,4],[2,6]). % 2-1 < 2
false
?- different([1,2,6],[4,8]). % 4-2 >= 2 and 6-4 >= 2 and 8-6 >= 2
true
?- different([],[4]).
true
我怎样才能得到这个结果?有任何想法吗?谢谢!
编辑:以下是代码我现在有:
difference([], []).
difference([_|_], []).
difference([], [_|_]).
difference(L1, L2) :-
L1 = [X1|X2],
L2 = [Y1|_],
Dif is X1-Y1,
(-1>Dif|Dif>1),
difference(X2, L2).
你尝试过什么吗? – lurker
直接的方法是逐个浏览第一个元素,并检查元素是否与第二个元素中的每个元素不同。它可能是两层递归。尝试一些东西,并问一个更具体的问题,你卡在哪里。 – lurker
查看我的编辑,更新了我的代码。 – Gamsh