給定兩個排序列表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