繁体   English   中英

我如何在 prolog 中编写一条名为 countIt 的规则?

[英]How do i write a rule in prolog called countIt?

在 Scheme 中编写 function 或在 Prolog 中编写名为 countlt 的规则,它接受一个数字列表 L 和另一个数字 N,并返回列表 L 中小于 N 的数字的计数。

?- countlt([6, 1, 9], 4, X).
X = 1. 

?- countit([50, 27, 13], 1, X).
X = 0.

如果您正在寻找不使用任何内置或库谓词的解决方案,这样的事情将解决您的问题:

countlt([], _, 0).
countlt([A | B], N, X) :- ((N > A, countlt(B, N, T), X is T + 1); countlt(B, N, X)), !. 

您当然可以将其扩展为多行,但我发现此解决方案更直接,并且对剪切运算符的篡改更少。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM