string - Prolog - 列表成字符串
问题描述
我在这里完成了寻找解决方案的工作,但什么也没有,所以我决定问。
所以,我有一个查询,它在一个类似这样的列表中返回:
List = [6-"read",3-"magazines",3-"music",1-"sport"].
我需要执行转换,所以我可以得到这样的列表:
List = [read,magazines,music,sport].
or
List = ["read","magazines","music","sport"].
为此,我认为我应该首先将 传递给一个字符串以取出数字和“-”。但我正在为此苦苦挣扎。
希望可以有人帮帮我!谢谢
解决方案
这看起来像家庭作业,所以我不会给你完整的实现。您正在寻找的是规则头中的模式匹配:
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).
快乐解决!
推荐阅读
- android - 如何动态更改线性布局中静态创建的布局的顺序?(安卓工作室)
- sql - 在 Hana DB 中传输 4 个虚拟 SDA 表的最佳方式
- camel-cxf - Apache Camel 在调用 CXF Endpoint 时返回 NullPointerException。将骆驼从 2.X 升级到 3.0 后失败
- android - 如何更新 Firebase 实时数据库中的现有值?
- python-3.x - ImportError: cannot import name 'number' from 'test' (E:\PL\Atom\RPS.py\test.py) 是什么意思?
- python-3.x - 将文件从 tgz 提取到 tar 和从 tar 到 txt Databricks Python3 Unix/Linux
- python - 在 Pandas 中使用 Lambda 函数时,Str 对象没有属性“键”
- fortran - 线性格的状态密度的 Fortran 编码
- php - tr 标签迭代 10 次后生成新表
- java - 如何使用angular6确保用户在mysql中使用图像