我想在Prolog的列表中将b,c
替换为x,y,z
。我有一个列表[a,b,c,d,e,f]
,结果将是[a,x,y,z,d,e,f]
。我怎样才能在Prolog中写这个?
replace([],_,[]).
replace([x|T1],Var,[Y|T2]):-
member(X=Y,var),
!
; X=Y
),
replace(T1,Var,T2).
-? replace([a,b,c,d,e,f],[b,c=x,y,z],R).
答案 0 :(得分:0)
这基本上等同于replacing substrings in Prolog的问题。使用replace_substring/4
谓词,您可以通过以下方式替换列表的子序列:
:- initialization(main).
:- set_prolog_flag(double_quotes, chars).
main :-
replace_substring([a,b,c,d,e,f],[b,c],[x,y,z],Result),
writeln(Result).
replace_substring(String, To_Replace, Replace_With, Result) :-
append([Front, To_Replace, Back], String),
append([Front, Replace_With, Back], Result).
此程序将打印[a,x,y,z,d,e,f]
。