在 Project Euler 问题的背景下,我正在玩John Earnest 的 K 实现。
许多问题涉及从无限级数(尤其是素数)中取前 n 项或所有项 <= n。它还可能涉及一次从预先存在的列表中获取项目,直到满足条件。
在 Python 中,一种方法是依赖迭代器协议:您可以从迭代器中获取直到它完成,或者在满足某些条件时提前中断(例如,您已经获取了 n 个项目,或者您获取的最后一个项目满足某个特定条件)健康)状况)。
K(或其他 APL)中用于实现类似目标的典型模式是什么 - 即从列表或生成器中获取直到满足条件,而不评估或处理整个列表?我是否必须依赖下面的技术,也许使用某种内部状态f
?是否不鼓励这种方法,如果是,为什么?
f/x / fixed point
n f/x / apply f n times
p f/x / do or while loop, with p a predicate function (stops when 0)