APL中的重复函数应用
Repeated function application in APL
给定整数 p、q 和 n 我想生成一个向量长度为 n,元素为
(⌊p ÷ q) (⌊(⌊p ÷ q) ÷ q) ...
换句话说,我想构造一个向量,其中 i:th 元素被 {⌊⍵ ÷ q}
应用 i 次p。我怎样才能在 APL 中做到这一点?
这个简短的解决方案使用扫描 \
适用于所有甚至支持基本 dfns(内联 lambda)的 APL:
1↓{⌊⍵÷q}\(1+n)⍴p
注意它的低效率;它会为每个学期从头开始重新计算。
一个更复杂的解决方案通过使用/
迭代来避免重新计算:
r←,p
{r,←⌊(¯1↑r)÷q}/(1+n)⍴1
1↓r
给定整数 p、q 和 n 我想生成一个向量长度为 n,元素为
(⌊p ÷ q) (⌊(⌊p ÷ q) ÷ q) ...
换句话说,我想构造一个向量,其中 i:th 元素被 {⌊⍵ ÷ q}
应用 i 次p。我怎样才能在 APL 中做到这一点?
这个简短的解决方案使用扫描 \
适用于所有甚至支持基本 dfns(内联 lambda)的 APL:
1↓{⌊⍵÷q}\(1+n)⍴p
注意它的低效率;它会为每个学期从头开始重新计算。
一个更复杂的解决方案通过使用/
迭代来避免重新计算:
r←,p
{r,←⌊(¯1↑r)÷q}/(1+n)⍴1
1↓r