我有这两个程序,但它们没有按应有的方式工作。第一个 without_doubles_2(Xs, Ys) 应该表明如果 Ys 是出现在 Xs 中没有重复的元素的列表,则它是真的。Ys 中的元素与 Xs 的顺序相反,保留第一个重复值。例如, without_doubles_2([1,2,3,4,5,6,4,4],X) 打印 X=[6,5,4,3,2,1] 但它打印错误。
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([],[]).