У меня уже есть этот код, чтобы соответствовать, если любые числа в списке соответствуют любым номерам в другом списке. Однако мне нужно изменить мою рекурсию, чтобы она вернула false, если один и тот же номер найден в одной позиции в обоих списках.Пролог: сопоставление элементов в отдельных двух списках
Например:
[5,3,4,6,2]
совместим с [3,1,2,2,7]
; и [1,3,4,9,2]
несовместим с [4,5,2,9,8]
, потому что оба списка имеют 9 в 4-й позиции.
Вот код, который я до сих пор:
common_elements([], L) :-
fail.
common_elements([H|T], L) :-
memberchk(H, L), !.
common_elements([H|T], L) :-
common_elements(T, L).
SWI-Prolog пример входы и выходы для текущего кода:
?- common_elements([1,2,3,4],[6,7,8,9]).
false.
?- common_elements([1,2,3,6],[6,7,8,9]).
true.
У обоих списков должна быть одинаковая длина? – repeat
Должны ли элементы списка быть цифрами? – repeat
Если списки имеют одинаковую длину, вы можете просто сделать: 'maplist (dif, L1, L2)'. – lurker