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

问题描述 投票:0回答:1

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

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

prolog
1个回答
0
投票

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

?- 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"].
© www.soinside.com 2019 - 2024. All rights reserved.