#n=0:环0#n=1..6:环1#n=7..18:环2#n=19..36:环3ringOfn:=进程(n)局部r;对于0中的r do如果n<A003215(r),则返回r;结束条件:;结束do:结束进程:#给定单个整数,返回[i,j]坐标#其中单位向量[1,0]指向0->6边,[0,1]指向0-1边。hexCoor:=进程(n)选项记忆;局部r,i,j,stp;如果n=0,则返回[0,0];其他的r:=环(n);i:=r-1;j:=1;stp:=n-A003215(r-1);#步骤SE如果stp<r,则i:=i-stp;j:=j+stp;返回[i,j];结束条件:;stp:=stp-(r-1);i:=i-(r-1);j:=j+(r-1);#步骤E如果stp<=r,则i:=i-stp;返回[i,j];结束条件:;stp:=stp-r;i:=i-r;#步骤NE如果stp<=r,则j:=j-stp;返回[i,j];结束条件:;stp:=stp-r;j:=j-r;#台阶NW如果stp<=r,则i:=i+stp;j:=j-stp;返回[i,j];结束条件:;stp:=stp-r;i:=i+r;j:=j-r;#步骤W如果stp<=r,则i:=i+stp;返回[i,j];结束条件:;stp:=stp-r;i:=i+r;#步骤SW如果stp<=r,则j:=j+stp;返回[i,j];其他的#错误n结束条件:;结束条件:;结束进程:#将螺旋上的[i,j]转换为整数n>=0。hexCoor()的逆运算。#非常懒惰和低效的激励!hex2N:=进程(xy::list)局部n;对于0 do中的n如果hexCoor(n)=xy,则返回n;结束条件:;结束do;结束进程:#给定螺旋上的n,计算六个整数邻域六个Neib:=进程(n)局部nNeib,xy,dif;新建:=[];xy:=六进制坐标(n);对于dif,在[[1,0]、[0,1]、[-1,1]、[0,-1]、[1,-1]]do中[操作(1,xy)+op(1,dif),操作(2,xy;己二氮(%);nNeib:=[op(nNeib),%]结束do:排序(nNeib);结束进程:#检查n是否是A113653的成员isA113653:=进程(n)局部nei;如果不是A001358(n),则假;其他的六个Neib(n)do中的nei如果是A001358(nei),则返回false;结束条件:;结束do:真;结束条件:;结束进程:n从1到2000 do如果是A113653(n),则printf(“%d,”,n);结束条件:;结束do: