1
palindrome_list_atomes(A,B):-  
  atom_concat(A,B,C),  
  atom_chars(C,X),  
  palindrome_list(X).

我想让 palindrome_list_atomes(A,B) 除了任何数量的原子(不仅仅是 A 和 B),然后 atom_concat 将这些相对数量的原子加在一起以创建原子 C。

atom_charts(C,X)  

只需将其转换为字符列表,然后将 X 传递给另一个谓词。

我确定这样的事情很容易(应该如此),我只是 Prolog 的新手,并且厌倦了在谷歌上达到死胡同。

4

1 回答 1

1

如果我理解你的问题,你必须传递一个原子列表:

palindrome_list_atomes(Atoms):-  
  list_concat(Atoms, Big),  
  atom_chars(Big,Chars),
  palindrome_list(Chars).

list_concat([], '').
list_concat([A|As], R) :-
  list_concat(As, T),
  atom_concat(A, T, R).

list_concat/2 它是atomic_list_concat /2 的可怜人替代品,可在 SWI-Prolog' 库中找到。当然,如果可用,请使用内置函数。

于 2013-04-21T04:38:04.437 回答