我在与列表列表相关的Prolog上遇到了问题。问题是关于实现Prolog谓词:to_do(ListOfLists,_,Result)
。
其中ListOfLists
是字符列表的列表,a
,b
,c
或d
。结果必须将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]].
请注意,结果也必须是列表列表。
非常感谢!
答案 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).