如何通过Prolog将字符串连接到列表中的多个元素?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过Prolog将字符串连接到列表中的多个元素?相关的知识,希望对你有一定的参考价值。

我是prolog的新手,并且一直致力于解决与我认为是prolog中的连接功能相关的问题。在阅读了有关列表和字符串的谓词的文档后,我留下的问题多于答案。

我想要实现的目标是通过在列表中的所有不同元素上分配字符串来创建一个单一产品。我使用了append / 2和maplist / 2以及其他一些谓词,但总是得到错误的响应。我想要实现的例子:

?- cellprod("B",["C","D","E"],X).
X = ["BC", "BD", "BE"].

当前代码:

cellprod(A,[B|B1],C):- append(A,B),
                       cellprod(A,B1,C).

我应该在什么谓词中查找字符串列表转换以分发并以新形成的列表结束?或者是否有一个我错过的连接谓词?非常感激!

答案

也许你需要学习递归,所以这个答案可能完全无用......无论如何......我们可以通过这种方式轻松解决:

?- S="B",L=["C","D","E"],findall(T,(member(E,L),string_concat(S,E,T)),X).
S = "B",
L = ["C", "D", "E"],
X = ["BC", "BD", "BE"].

或这个:

?- S="B",L=["C","D","E"],maplist(string_concat(S),L,X).
S = "B",
L = ["C", "D", "E"],
X = ["BC", "BD", "BE"].

以上是关于如何通过Prolog将字符串连接到列表中的多个元素?的主要内容,如果未能解决你的问题,请参考以下文章

将字符串连接到列表[重复]

如何将子查询中的字符串连接到mysql中的一行?

如何将javascript函数中的参数字符串连接到附加html中的字符串上?

使用 write() 将两个字符串连接到 C 中的标准输出

oracle通过添加regexp_like将字符串连接到数字不起作用

将字符串连接到 pig 中的字段