【问题标题】:How to concatenate a string to multiple elements in a list via Prolog?如何通过 Prolog 将字符串连接到列表中的多个元素?
【发布时间】:2018-03-06 03:15:29
【问题描述】:

我是 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】:

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

    ?- 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"].
    

    【讨论】:

    • 抱歉回复晚了。不需要递归,但我的方法是这样做的。然而,这奏效了。谢谢!
    猜你喜欢
    • 2021-10-05
    • 2017-07-24
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 2019-10-22
    • 2017-01-17
    相关资源
    最近更新 更多