我必须检查一个列表是否包含偶数个没有内置的元素。
示例:
containsEvenNumber([a,b,c,a,a], a).
返回false
containsEvenNumber([a,b,c,a], a).
返回true
当前状态:
not(A) :-
A, !,
fail.
not(_).
equal([E|_], E).
containsEvenNumber([], _).
containsEvenNumber([E|Tail], E) :-
unevenCount(Tail, E).
containsEvenNumber([Head|Tail], E) :-
not(equal([Head|Tail], E)),
evenCount(Tail, E).
evenCount([], _).
evenCount([E|Tail], E) :-
unevenCount(Tail, E).
evenCount([Head, Tail], E) :-
not(equal([Head|Tail], E)),
unevenCount(Tail, E).
unevenCount([], _) :-
fail.
unevenCount([E, Tail], E) :-
evenCount(Tail, E).
unevenCount([Head, Tail], E) :-
not(equal([Head|Tail], E)),
unevenCount(Tail, E).
当元素出现时,我尝试在状态之间切换。它不起作用,因为我从来没有进入这种状态,在这种状态下,头部不是元素,或者更确切地说,我也进入了这种状态,当头部是元素时,我也会返回false。
我怎样才能使它工作/修复它?
https://stackoverflow.com/questions/50749333
复制相似问题