本网站由以下捐款支持:OEIS基金会.

A328021飞机

来自OeisWiki
跳转到:航行,搜索

定义和顺序数据

{1,…,N}的词汇第一排列,使得a(N)+a(N+1)和|a(N”-a(N+1。

1、2、3、5、4、6、8、10、7、9、12、11、15、14、13、16、17、18、20、19、21、22、23、25、24、26、27、28、30、29、31、32、33、35、34、36、37、38、40、39、41、42、43、45、44、46、47、48、50、49、51、53、55、52、54、56、58、60、57、59、62、65、61、64、66、63、70、68、73、67、69、75


评论

  1. 目前还不知道N是否可以任意大。我们知道N>=10^5。如果N可以是任意大的,可以理解,这个序列是作为N->oo的极限序列,它是正整数的置换。
  2. 序列可以是有限长的N,但所有正整数的相应置换仍然可以存在。然后,所有n>n的最大值为{a(k),k<=n}>n。
  3. 任何5的倍数都必须出现在两个较小的项之间,因为与较大项的和和差将共享最后的数字。事实上,如果x>m,我们有|x-m|=x-m=x+m(mod 10)<=>0=2m(mod10)<>m=0(mod 5)。

算法

序列可以贪婪的方式计算,如下所示:

  • 用M表示尚未使用的5的倍数集。
对于m中的m,设N(m)是m的可能邻域集,即尚未出现的较小数字,并且与m的差和和不共享一个数字。(仅考虑#N(m)<3的m就足够了。)
  • 如果某个N(m)是单个{x},那么接下来的两项必须是m,x。
  • 否则,下一项是最小的可接受数x(这样与上一项的和和和差就不会共享一个数字),之前没有使用过,并且它不是多于一个N(m)的成员,正好有两个元素。
  • 重复上述步骤。

在假设最初每个N(m)至少有两个元素的情况下,序列可以这样计算到无限长。还有待证明,每个数字最终都可能发生,这似乎是很有可能的。

PARI计划

这里我们提供了PARI程序的注释版本,如下所示A328021飞机以浓缩形式。

{A_vec(n/*要计算的向量长度*//*程序A328021飞机v.3:动态增加列表数量,a=1/*初始值,未实际使用*/,U=[0]/*U是一组已使用的数字,从U[1]开始=最小未使用的数字-1*/)=my(c(x,y)=#setintersect(Set(digits(abs(y-x))),Set(dicities(x+y)))/*计算x+y和|x-y|共享的位数*/,N(U,N=U[1]\5*5,L=List())=/*列出不在U中的5的最小倍数的邻居*/while(setsearch(U,n+=5),);列表输入(L,n);而(U[1]<n-=1,c(n,L[1])||setsearch(U,n)||listput(L,n));Vecrev(左),L.last=L[#L],L=[[]],o);/*列表L[k]将存储第k个5的下一个倍数的邻居列表,包括该倍数*/向量(n,n,o=a;/*存储电流=“旧”项*/对于(k=1,#L,L[k]/*如果为空,则弹出下一个*/||而(k<#L,L[k]=L[k+=1])||/*现在,在任何情况下,k=#L,我们将停止*/如果(4>#L[k]=N(U,如果(k>1,L[k-1].last,U[1]\5*5))/*计算最后一个,如果不>=elts,添加一个新列表*/,L=连接(L,[N(U,L[k].last)]);打印1(L.last)));对于(k=1,#L,如果(#L[k]<3/*如果列表只剩下2个:首先使用最大的*/,c(o,a=L[k].last)&&error([n,a,o,L])/*检查(创建时只有2个元素)*/;中断,k==#L/*到达列表末尾:搜索尽可能最小的词*/,a=U[1];/*小于最小候选值一个(必须是未使用的、可接受的&不能将两个列表减少为单个)*/while(setsearch(U,a+=1)||c(o,a)||#select(L->#L==3&&setseach(L,a),L)>1,);/*如果“a”是5的倍数(如果到目前为止“邻居”是“坏的”,就会发生这种情况),那么相应的列表就会过时*/a%5|| for(k=1,#L,a==L[k].last&&L[k]=[]))         );U=集合并(U,[a]);而(#U>1&&U[2]==U[1]+1,U=U[^1]);/*更新已用术语列表*/对于(k=1,#L,集合搜索(L[k],a)&&L[k]=集合减号(L[k,[a]));a) }\\返回向量a(1..n)。警告:对于非常大的n>>10^4,可能需要更多的邻居列表。

与该序列相关的附加PARI代码

间隙(i,A=A)=abs(A[i]-A[i+1])\\计算指数i处的间隙间隙(A,m=9)=select(i->gap(i,A)>=m,[1..#A-1],1)对于#A>5e5,间隙的返回指数>=m/*变得非常缓慢*/fg(g=11,A=A)=对于(i=2,#A,abs(A[i]-A[i-1])>g&&return(i-1))\\查找第一个间隙>g/*仍然很快*/xt(i,A=A,L=9)=vecextract(A,[i-L.i+L])\\提取索引i周围的短范围。可以“应用”到索引列表D(A)=A[^1]-A[^-1]\\矢量A的第一个差异。例如,vecmax(abs(D(A)))