Пролог - список в строку - PullRequest
0 голосов
/ 10 мая 2018

Я закончил поиски решения, но ничего, поэтому я решил спросить.

Итак, у меня есть запрос, который возвращает в списке что-то вроде этого:

List = [6-"read",3-"magazines",3-"music",1-"sport"].

И мне нужно выполнить преобразование, чтобы я мог получить список следующим образом:

List = [read,magazines,music,sport]. 
or 
List = ["read","magazines","music","sport"].

Для этого я думаю, что сначала я должен передать строку, чтобы вывести числа и '-'. Но я борюсь с этим.

Надеюсь, кто-нибудь может мне помочь! Спасибо

1 Ответ

0 голосов
/ 10 мая 2018

Это похоже на домашнюю работу, поэтому я не буду давать вам полную реализацию.То, что вы ищете, - это сопоставление с образцом в заголовке правила:

fst_pair(X, pair(X,Y)).

Оператор - - это просто символ инфиксной функции, такой, что вы можете написать

fst(X, X-Y).

Используя этот видсопоставления с образцом должно быть легко написать рекурсивный предикат по списку.Он должен иметь базовый регистр для пустого списка и пошаговый регистр для заголовка, за которым следует хвост списка:

fsts_list([], []).
fsts_list([ ... | TailFirsts ], [... | Pairs] ) :- % replace ... by some terms
   % possibly insert some predicates here, depending on what you do above
   fst_lists(TailFirsts, Pairs). 

Счастливого решения!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...