首页 > 解决方案 > Prolog - 列表成字符串

问题描述

我在这里完成了寻找解决方案的工作,但什么也没有,所以我决定问。

所以,我有一个查询,它在一个类似这样的列表中返回:

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

我需要执行转换,所以我可以得到这样的列表:

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

为此,我认为我应该首先将 传递给一个字符串以取出数字和“-”。但我正在为此苦苦挣扎。

希望可以有人帮帮我!谢谢

标签: stringlistprolog

解决方案


这看起来像家庭作业,所以我不会给你完整的实现。您正在寻找的是规则头中的模式匹配:

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). 

快乐解决!


推荐阅读