在分割字符串后,在prolog中连接字符

时间:2015-10-13 15:57:50

标签: prolog

我想要在列表中找到两个单词的字母。

 Ex - ?-inconcat(maggy,girl,A).
 A = mg.

1 个答案:

答案 0 :(得分:0)

假设X和Y是你想要使用的两个单词,Z是输出,我想我们首先需要先验证两个单词,而不仅仅是X.接下来,你的名字()将每个单词分开当我们只对每个单词的第一个字母感兴趣时,我会分成三个不同的变量。

请记住,name()接受一个原子和一个列表,如文档中所示,如下所示:

name(Atom,List).

这将占用一个原子并将其转换为ASCII代码列表,如下所示:

?- name(abc,A).
A = "abc"

从那里,我们可以使用熟悉的[A | B]列表格式提取列表的头部,如下所示:

?- name(abc,[A|B]).
B = "bc"
A = 97

如上图所示,97是' a'的ASCII码。这也是相反的。拥有Atom的变量和List的ASCII代码列表,您可以(基本上)连接字符串,如下所示:

?- name(A,[97,98,99]).
A = abc

了解所有这些,并做了两次,这将引导我们:

?- abc = X, def = Y, name(X,[A|C]), name(Y,[B|D]), name(Z,[A,B]).
Z = ad,
D = "ef",
B = 100,
C = "bc",
A = 97,
Y = def,
X = abc

回到你的案子,我们如此:

?- maggie = X, girl = Y, name(X,[A|C]), name(Y,[B|D]), name(Z,[A,B]).
Z = mg,
D = "irl",
B = 103,
C = "aggie",
A = 109,
Y = girl,
X = maggie