刚学prolog,希望大家指点迷津。
题目要求是
?- word_with_replacements([s, c, r, a, b, b, l, e], Word_with_replacements).
Word_with_replacements = [s, c, r, e, b, b, l, a] ;
false.
?- word_with_replacements(Word, [s, c, r, e, b, b, l, a]).
Word = [s, c, r, a, b, b, l, e] ;
false.
其中a可以替换成e,e可以替换为a。
并且要求代码可以拓展为任意字母替换。目前我只能参照例子写出这样的程序,但是不符合题目的输出要求,请问改怎么改正呢?谢谢。
第一种
replace(_,_,[],[]).
replace(a,b,[a|T1],[b|T2]):-replace(a,b,T1,T2).
replace(a,b,[m|T1],[m|T2]):-m\=a, replace(a,b,T1,T2).
第二种
rep([],_,_,[]).
rep([Z|T1],Z,A,[A|T2]):- rep(T1,Z,A,T2).
rep([H|T1],Z,A,[H|T2]) :- rep(T1,Z,A,T2).
goal
rep([1,2,3],2,4,X).