Prolog:列表清单

时间:2013-11-09 09:37:40

标签: prolog

我在与列表列表相关的Prolog上遇到了问题。问题是关于实现Prolog谓词:to_do(ListOfLists,_,Result)。 其中ListOfLists是字符列表的列表,abcd。结果必须将a替换为ai,将b替换为bi,将c替换为x,将d替换为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]].

请注意,结果也必须是列表列表。

非常感谢!

1 个答案:

答案 0 :(得分: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).