0

我在 Prolog 上遇到与列表列表相关的问题。问题在于实现 Prolog 谓词:to_do(ListOfLists,_,Result). whereListOfLists是字符列表的列表,无论是abc还是d。结果必须替换aaibto bictoxdto y

例如,

?- to_do([[b,c],[a,d]],_,Result).
   Result = [[bi,x],[ai,y]].

?- to_do([[a,a,b],[b,c,d],[c,c,a]],_,Result).
   Result = [[ai,ai,bi],[bi,x,y],[x,x,ai]].

请注意,Result 也必须是列表的列表。

非常感谢!

4

1 回答 1

0

我相信这是解决您的问题的方法:

substitute(a, ai).
substitute(b, bi).
substitute(c, x).
substitute(d, y).
substitute(In, Out) :- maplist(substitute, In, Out).

to_do(X, _, Y) :- substitute(X, Y).
于 2014-04-24T13:19:20.303 回答