#prolog
Вопрос:
Я изучаю пролог, но у меня проблема с кодом. Я хочу проверить, существует ли элемент в списке списков, и если он существует, я хочу получить список, содержащий этот элемент, для управления списком. Я сделал предложение, чтобы доказать, что элемент есть или его нет в списке списков, но я не знаю, как получить этот список, пожалуйста, помогите мне.
memberlist(X,[H|_]) :-
member(X,H).
memberlist(X,[_|T2]) :-
memberlist(X,T2).
Я делаю этот запрос:
memberlist("product1",[["product2", 100, "available"],["product3", 100, "sold out"],["product1", 200, "available"]]).
и я получаю: true
но также я хочу получить список, содержащий строку "product1"
, чтобы результат, который я ищу, был: ["product1", 200, "available"]
Ответ №1:
Как насчет введения третьего аргумента для хранения списка совпадений? например:
memberlist(X,[H|_],H) :-
member(X,H).
memberlist(X,[_|T2],Y) :-
memberlist(X,T2,Y).
Пример запроса:
memberlist("product1", [["product2", 100, "available"],["product3", 100, "sold out"],["product1", 200, "available"]], Result).
Приводит к результату:
Result = ["product1", 200, "available"]