使用prolog交换单词中的前两个字母

时间:2014-10-14 17:45:21

标签: prolog

我想编写一个谓词,它将交换前两个字母    长度为2或更大的原子。长度为1的原子没有变化   例如? - 交换(猫,X)。          X =行为; 使用'name'

我没有想到这样做,任何人都可以帮助我。

是否可以将字母转换为变量并使用第三个变量进行交换,如'C'编程?

书面代码如下: -

interchange(X,[]).
interchange(X,[H|T]):-  swap([A,B],W). 
swap(X,Y):- name(X,[A,B|C])-> name(Y,[B,A|C]). 

我不确定我的逻辑。我做了同样的事情,但它不起作用。

我的o / p为:

23? - 咨询(inter_change)。 警告:交换/ 2重新定义 警告:swap / 2重新定义 真正。 24? - 交换(猫,X)。 X = []; X = [_VCTC | _VCTD]; 失败。

1 个答案:

答案 0 :(得分:0)

您阅读了有关analysis and construction of atoms的文档。

然后你选择一个合适的内置谓词并说出如下内容:

swap_first_2( X , X ) :-
  nonvar(X) ,
  atom_codes( X , [_] )
  .
swap_first_2( X , Y ) :-
  nonvar(X) ,
  atom_codes(X,[A,B|C]) ,
  atom_codes(Y,[B,A|C])
  .
swap_first_2( X , Y ) :-
  nonvar(Y) ,
  atom_codes(Y,[A,B|C]) ,
  atom_codes(X,[B,A|C])
  .