/* (PARI) R. J. Cano, Apr 23 2018 */ Digits(x,B)=if(!x,[0],digits(x,B)); /* Due digits(0,B) returns [] for any B */ firstTerms(n,ini,B)={ /* 1<B, #ini < B and ini[k] < B for any k */ my(Seq=concat(ini,vector(n-#ini)),reset=vector(B,u,1),x,t,r,ok,flag1,flag2=Vecsmall(0,10*n)); for(k=1,#ini,flag2[ini[k]+1]=1); for(i=#ini+1,n, flag1=reset; r=[]; for(k=1,#ini-1,r=concat(r,Digits(Seq[i-k-1],B))); r=Set(r); for(k=1,#r,flag1[r[k]+1]=2); r=Set(Digits(Seq[i-1],B)); for(k=1,#r,flag1[r[k]+1]=0); for(j=1,oo, forvec(y=vector(j,u,[0,B-1]), ok=1; for(k=1,#y,if(!flag1[y[k]+1],ok=0;break)); if(ok, ok=0; if(j>1, t=1; while(!y[t]&&(t<#y),t++); for(k=t,#y,if(flag1[y[k]+1]==2,ok=1;break)) ) ); if(ok, x=fromdigits(y,B); ok=!flag2[x+1]; ); if(ok,Seq[i]=x;flag2[x+1]=1;break(2)) ) ) ); return(Seq); } vecA303294(n)=firstTerms(n,[0,1,2],10);