如何在Pari/GP中以更低开销拼接向量及交换变量引用?
优化Pari/GP生成OEIS序列A060322的低开销实现方案
我正在优化用于生成OEIS序列A060322元素的现有Pari/GP程序。我的代码比现有程序快很多,但拼接向量和交换变量引用的操作浪费了大量栈空间与时间。是否存在低开销的实现方式?
当前代码如下:
A060322(N) = { my(a=Vec([1, 1, 1, 1, 2], N), p=[], q=[5]); for(n=6, N, r=concat([ [4*x+1 | x<-p], [4*x\3 | x<-p, 1==x%6], [2*x\3 | x<-q, 5==x%6] ]); a[n]=a[n-1]+#r; p=q; q=r); a }
目前我想到的方法是用一个包含三个向量的向量替代p、q、r三个独立向量,通过可变索引引用各向量来避免复制,但这种方式较为繁琐,且向量拼接的问题仍未解决。
内容的提问来源于stack exchange,提问作者Joe Slater
相关产品推荐
相关产品推荐

