我有這兩個程序,他們不工作,因爲他們應該。第一個without_doubles_2(Xs,Ys)應該表明,如果Ys是X中出現的沒有重複的元素的列表,那麼它是對的。 Y中的元素與X的順序相反,保留了第一個重複值。例如,without_doubles_2([1,2,3,4,5,6,4,4],X)打印X = [6,5,4,3,2,1],但它打印爲false。Prolog程序 - 如何使它工作?
without_doubles_2([],[]).
without_doubles_2([H|T],[H|Y]):- member(H,T),!,
delete(H,T,T1),
without_doubles_2(T1,Y).
without_doubles_2([H|T],[H|Y]):- without_doubles_2(T,Y).
reverse([],[]).
reverse([H|T],Y):- reverse(T,T1), addtoend(H,T1,Y).
addtoend(H,[],[H]).
addtoend(X,[H|T],[H|T1]):-addtoend(X,T,T1).
without_doubles_21(X,Z):- without_doubles_2(X,Y),
reverse(Y,Z).
第二個是我該如何讓這個程序使用一個字符串?它應該從字符串中刪除元音並僅打印輔音。
deleteV([H|T],R):-member(H,[a,e,i,o,u]),deleteV(T,R),!.
deleteV([H|T],[H|R]):-deleteV(T,R),!.
deleteV([],[]).
添加SETOF爲替代去除雙打。 – ssBarBee