剛學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).
沒人會麼= = 啊啊啊