Prolog实现verify谓词:验证元素在和为10数字对间的出现次数
Prolog谓词verify的实现需求与现有代码
需求描述
实现Prolog谓词verify(List,Elt,Occ),当元素Elt在每对和为10的数字之间恰好出现Occ次时,谓词返回成功。
示例测试用例
verify([a,r,b,6,?,?,?,4,x,x,b,1,5,?,?,?,e,e,e,5],?,3)应返回trueverify([a,a,6,?,9],?,3)应返回falseverify([9,?,?,?,1,?,?,?,9,?,?,?,1,?,?,?,9],?,3)应返回trueverify([5,?,?,a,a,a,a,a,a,a,a,a,?,5,?,5],?,3)应返回false
现有实现代码
verify( [], _, _ ) . verify( [H|T], Elt, Occ ) :- integer(H), Y=H, verifyWithNb(T,Elt,Occ,Y,0). verify( [H|T], Elt, Occ ) :- \+integer(H), verify(T,Elt,Occ). verifyWithNb( [H|T], Elt, Occ, Y, Help ) :- H==Elt, New is Help+1, verifyWithNb(T,Elt,Occ,Y,New) . verifyWithNb( [H|T], Elt, Occ, Y, Help ) :- Occ==Help, integer(H), Y+H==10, verify(T,Elt,Occ).
内容的提问来源于stack exchange,提问作者LK.
相关产品推荐
相关产品推荐

