gpt4 book ai didi

apl - 迭代器协议(protocol)的 K 模式

转载 作者:行者123 更新时间:2023-12-03 17:32:06 25 4
gpt4 key购买 nike

我在玩John Earnest's K implementation在 Project Euler 问题的背景下。

许多问题涉及从无限级数(尤其是素数)中取前 n 项或所有项 <= n。它还可能涉及一次从预先存在的列表中获取项目,直到满足条件。

在 Python 中,一种方法是依赖迭代器协议(protocol):您可以从迭代器中获取直到它完成,或者在满足某些条件时提前中断(例如,您已经获取了 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)

编辑 2018-10-14:关于 APL 中延迟迭代的一些有趣的注释 here .

最佳答案

正如您所提到的(并在评论中建议):

p f/x      / do or while loop, with p a predicate function (stops when 0)

实际上,您可以提供一个谓词函数,该函数在每一步都应用于结果。只要谓词结果为 1b,迭代就会继续,否则就停止。例如,当斐波那契数列超过 100 时,这就是停止计算的方法:
{*|x<100} {x,+/-2#x}/1 1

关于apl - 迭代器协议(protocol)的 K 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51916990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com