APL中的重复功能应用程序

时间:2019-10-13 10:05:26

标签: apl

给出整数 p q n 我想生成一个长度为 n 的向量元素

(⌊p ÷ q) (⌊(⌊p ÷ q) ÷ q) ...

换句话说,我想构造一个向量,其中 i :th元素被{⌊⍵ ÷ q}应用于 p 上的 i 次。如何在APL中做到这一点?

1 个答案:

答案 0 :(得分:3)

此简短解决方案使用扫描\可以在甚至支持基本dfns(内联lambda)的所有APL中使用:

1↓{⌊⍵÷q}\(1+n)⍴p

Try it online!

请注意其效率低下;它会从头开始重新计算每个学期。

一个更复杂的解决方案通过使用/进行迭代来避免重新计算:

r←,p
{r,←⌊(¯1↑r)÷q}/(1+n)⍴1
1↓r

Try it online!