序列工具
目录
将列表限制为固定数量的字符
数学软件
OEISTrim[lst_List,maxLen_Integer:260]:= 模块[{newLst={},len=0}, Do[len=len+2+Length[IntegerDigits[term]]+Boole[term<0]; 如果[len<=maxLen,AppendTo[newLst,term],Break[]],{term,lst}]; 新Lst]
OEISTrim[范围[100]]
枫树
OEIStrim:=进程(f,偏移量) 本地L,n,len,fn,s,islist; L:=空; 长度:=0; islist:=whattype(f)=list; n:=`if`(islist,1,offset); 做 fn:=`if`(伊斯兰教,f[n],f(n)); s:=`if`(fn<=0,1,0); len:=len+s+长度(fn); 如果len>260,则打破fi; 长度:=长度+2; L:=L,fn; n:=n+1; od; L端:
OEIStrim(n->n,0); f:=n->-n: OEIStrim(f,0); F:=[序列(n,n=0..100)]: OEIStrim(F,忽略);
平价/GP
{OEISTrim(v)= L=260; 长度=0; w=[]; 对于(i=1、长度(v), len+=3+(v[i]<0); x=abs(v[i])\10; 而(x,len++;x\=10); 如果(len>L,break); w=连接(w,v[i]); ); 返回(w) }
OEISTrim(矢量(100,i,i))
选择()
选择(函数、向量)
选择(矢量、函数)
OEIS_trim(v,L=260)=本地(L=L); select(t->-3<L-=#Str(t)+2,v)\\(PARI/GP版本2.4.3和更高版本的正确语法)
哈斯克尔
导入数据。 列表(展开器) oeisTrim xs=take(长度$unloadr t(260,xs))xs,其中 t(_,[])=无 t(still,u:us)|len>still=无 |否则=Just(len,(still-len,us)) 其中len=长度(显示u)+2
oeisTrim[]==[] oeisTrim[1..]==[1..67] oeisTrim[1..10]==1..10] oeisTrim[1..100]==[1.67] oeisTrim[10..1000]==[10..74]
圣人
定义OEIStrim(L): n=0 长度=0 T=[] 对于l中的l: s=1,如果l<0,否则为0 长度=长度+s+长度(str(l)) 如果长度>260:断开 长度+=2 T.附录(l) n+=1 打印n,“术语” 返回T
OEIStrim(范围(100))
间隙
OEISTrim:=函数(seq) 局部i,len; i:=0; 长度:=-2; 而len<=260 do i:=i+1; 如果i>长度(seq),则断开; fi; len:=len+长度(字符串(seq[i]))+2; od; 返回序列{[1..i-1]}; 结束;
OEISTrim([1..100]);
格式化b文件
朱莉娅
使用日期 函数write_oeis_bfile(anum、range、seq、comments、targetdir) 如果! 发生(r“^A[0-9]{6}$”,anum) @warn(“不是有效的a-number!正在退出。”) 返回 结束 filename=joinpath(targetdir,“b”*anum[2:end]*“.txt”) @info(“将”*anum*“写入”*filename) file=打开(文件名,“w”) timestamp=Dates.format(now(),“yyyy-mm-dd HH:mm”) println(文件,“#”,时间戳) 评论中的c println(文件,“#”,c) 结束 对于范围内的n val=序列(n) 如果长度(字符串(val))>1000 @错误(“术语过长,正在退出。”) 打破 结束 println(文件,n,“”,val) 结束 打印(“\n”) 关闭(文件) 结束
path=“C:/Users/Home/” comments=[“作者:Julia Verona”, “发散系列表现卓越。”] a(n)=阶乘(BigInt(n)) 风险=11:200 write_oeis文件(“ A000142号 “,R,a,注释,路径)
write_oeis文件(“ A000290型 “,0:100,n->n*n,”“,路径)
枫树
生成文件:=进程(anumber,A,offset,N) 局部bfile,n,v,dn; bfile:=StringTools:-SubstituteAll(sprintf(“b%6d.txt”,anumber),“”,“0”); fopen(bfile,写入); fprintf(bfile,StringTools:-FormatTime(“#使用Maple生成,%B%d%Y\n”); 如果类型(A,过程),则 对于从偏移到n do的n v:=A(n); 如果长度(v)>999,则 打破 结束条件:; fprintf(b文件,“%d%d\n”,n,v); 结束do 其他的 对于从偏移到n do的n fprintf(bfile,“%d%d\n”,n,A[n+1偏移量]) 结束do 结束条件:; fclose(b文件) 结束进程:
Makebfile(217,n->n*(n+1)/2,010000);
数学软件
b文件[aNum_Integer,v_List,offset_Integer:1]:= 模块[{s= OpenWrite(打开写入)[ “b”<>StringTake[“00000”,6-整数长度[aNum]]<> ToString[aNum]<>“.txt”]}, 对于[i=1,i<=长度[v],i++, WriteString[s,i+偏移量-1,“”,v[[i]],“\n”]]; 关闭[s]] b文件::usage= “bFile[aNum,v]使用List v中给出的术语写入一个b文件\ 使用偏移量1。\nbFile[aNum,v,offset]使用\ 指定的偏移量。 ";
PARI/GP公司
b文件(名称,v,偏移=1,限制=1000)={ my(cur=偏移-1,F); name=Str(名称); while(#name<6,name=Str(0,name)); name=Str(“b”name“.txt”); F=文件打开(名称,“w”); 对于(i=1,#v, 如果(#Str(v[i])>极限, print(“Next term has”#Str(v[i])“digits;exiting。”); 打破 ); my(s=Str(cur++,“”,v[i])); 文件写入(F,s); ); 文件关闭(F); } addhelp(bfile,“bfile(name,v,offset=1):创建一个b文件,其中v值表示a-number名称(以数字或文件名的形式给出)。”);
蟒蛇
进口再进口 从datetime导入日期 定义write_oeis_bfile(anum、range、seq、comments、targetdir): 如果不匹配(“^A[0-9]{6}$”,anum): print(“a号码无效!正在退出。”) 返回 filename=目标目录+“b”+anum[1:]+“.txt” 打印(“写入”+anum+“到”+文件名) 文件=打开(文件名,“w+”) 文件.write(“#OEIS:”+anum+“\n”) 今天=date.today() timestamp=today.isoformat() 文件.write(“#”+时间戳+“\n”) 对于评论中的c: 文件.write(“#”+c+“\n”) 对于范围内的n: val=序列(n) 如果len(str(val))>1000: 打印(“期限过长,正在退出。”) 打破 文件.write(str(n)+“”+str(val)+“\n”) 文件.write(“\n”) 文件.close()
comments=[“作者:Pythia Delphi”, “软件:SageMath 9.2”, “发散系列表现卓越。”] 定义a(n):返回阶乘(n) path=“C:/Users/Home/” write_oeis文件(“ A000142号 “,范围(11),a,注释,路径)
读取b文件
PARI/GP公司
#Axxx=b2v(读取str(“/tmp/bxxx.txt”));
readstr(“bxxx.txt”)
b2v(v)=应用(s->对于(i=2,#s=Vecsmall(s),s[i-1]>=48&s[i]<48&&return(eval(s[i+1..#s]))),选择(s->#s>2&&Vecsmall[1]= 35,v))\\(c)2014作者:[[用户:M.F.Hasler|M.F..Hasler]]。
各种工具
-
自动化OEIS ,CodeGolf StackExchange,2016年。 使用各种工具和/或编程语言检索OEIS序列术语的方法集合。
猜测生成函数
PARI/GP公司
ggf(v)={my(p,q,B=#v\2);如果(B<4,“至少需要8个值!”, 如果(!#q=qflll(矩阵(B,B,x,y,v[x-y+B+1]),4)[1],“qflll返回空结果。”, polceoff(p=Ser(q[,1]),0)<0&&p=-p;/* 调整标志*/ q=Pol(Ser(v)*p); 如果(Ser(v)==q/=Pol(p),q, Str(“我猜到了”,q,“,但它不会重现最后一个值!”) )))}
p(p)=concat(vecextract(Vec(Str(p+O(x^99))),“..-11”)/*写幂递增的多项式*/ pgf(f)=Str/*或:打印*/(“(”,p(分子(f)),”)/(“,p(分母(f),”*/