Напишите программу PROLOG (т.е. набор предикатов), которая реализует следующую функцию. Программа должна сравнить три списка и определить, совпадает ли первый элемент первого списка с последним элементом второго списка и со второго по последний элемент третьего списка. Вызовите основной предикат: сравнить (List1, List2, List3).
Я пошел дальше и написал отдельные коды для двух отдельных условий, которые работают сами по себе.
1. 1-й элемент списка List1 равен последнему элементу списка List2
2. 1-й элемент Списка1 равен второму последнему элементу Списка3.
Теперь у меня проблемы с объединением кодов для совместной работы. Мой ход мыслей заключается в том, что условие 1 и условие 2 должны выполняться отдельно, прежде чем будет выполнено общее условие. Так что как-то я должен запустить код для условия 1 и условия 2 самостоятельно, но в той же программе? И если оба из них вернут истину, тогда у меня может быть что-то еще, что говорит, что мои условия выполнены.
compare(List1,List2,List3):- last(true), secondLast(true).
Condition1:
last([HeadList1|RestList1],[HeadList1]).
last([HeadList1|RestList1],[HeadList2|RestList2]) :-
last([HeadList1|RestList1],RestList2).
Condition2:
secondLast([HeadList1|RestList1],[HeadList1,RestList3]).
secondLast([HeadList1|RestList1],[HeadList3|RestList3]) :-
secondLast([HeadList1|RestList1],RestList3).
Что я ожидаю:
?- compare([2,8,9,1],[4,5,6,2],[1,2,3]).
yes
?- compare([a,b,c,d,k],[a,c,f,e],[a,s]).
no