У меня есть следующий пролог;Простой пролог, обучение начинающих
customer(Invoice,_,Surname,_,Town),(Town='LA';Town='NEWYORK'),
order(Invoice,Code,_),
item(Code,_,_,_,_,_,_)
Вышеприведенный пролог дает результаты;
Invoice = 51, Surname = 'Hally', Town = 'LA', Code = 54 ;
Invoice = 51, Surname = 'Hally', Town = 'LA', Code = 58 ;
Invoice = 51, Surname = 'Hally', Town = 'LA', Code = 85 ;
Invoice = 51, Surname = 'Hally', Town = 'LA', Code = 148 ;
Invoice = 71, Surname = 'Steptoe', Town = 'NEWYORK', Code = 148 ;
Invoice = 71, Surname = 'Steptoe', Town = 'NEWYORK', Code = 176 ;
Invoice = 73, Surname = 'Ahmed', Town = 'NEWYORK', Code = 180 ;
Как можно видеть выше, есть два результата с тем же кодом (148), как я могу вернуть только эти два результата? Я попытался добавить ,(Code=Code).
, но он не работает.
Я действительно новичок в этом!
Кроме того, я пытаюсь сохранить пролог в новый предикат, чтобы вернуть две фамилии только такие, как показано ниже,
getDuplicateOrders(Surname1, Surname2):- (prolog).
Но я получаю ошибку о том, что статические переменные не должны использоваться!
Как общее решение после того, как ты? Вы ищете возможно более двух разных городов и * все * с одним и тем же кодом или * двумя или более * с тем же кодом? – lurker
Только два города будут использоваться, и я хотел бы отфильтровать результат в том же коде, что и в разных городах. Спасибо – Prolog