%在整数序列在线百科全书上创建序列A316667的Matlab脚本%丹尼尔·卡森(Daniel Karssen),2018年全部关闭全部清除clc公司%%设置createFiles=true;最大步长=1e5;OEISnum='a316667';move=“骑士”;board=“螺旋形”;条件=“无”;%%基于移动和板设置参数%移动开关移动案例“骑士”dx=[2-2-2-11-1];dy=[1-1 1-1 2-2 2-2];案例{“国王”、“女王”}dx=[1 1 1-1-1-1 0];dy=[0 1-1 0 1-1 1-1];大小写{“bishop”,“diastep”}dx=[1 1-1-1];dy=[1-1 1-1];大小写{“rook”,“sidestep”}dx=[10-10];dy=[0 1 0-1];否则错误(“未定义的移动”)结束如果有(strcmp(移动,{'queen','bishop','book'}))dx=(1:maxSteps*2)'*dx;dx=dx(:);dy=(1:maxSteps*2)'*dy;dy=dy(:);结束%董事会配电盘“对角线”大小写%电路板编号xy2num=@(x,y)(x+y-2).*(x+y-1)/2+y;xyvalid=@(x,y)x>0&y>0;%起点x0=1;y0=1;案例“螺旋”%电路板编号xy2num=@(x,y)螺旋编号(x,y);xyvalid=@(x,y)真(大小(x));%起点x0=0;y0=0;否则错误(“未定义的板”)结束开关状态案例“无”cond=@(x,y,num)真(大小(num));大小写“prime”cond=@(x,y,num)i素数(num);否则错误(“未定义的条件”)结束%%创建序列seqNum=[];序列X=[];seqY=[];有限=假;对于s=1:maxSteps%将当前方块添加到序列序列X(结束+1)=x0;seqY(结束+1)=y0;序列号(end+1)=xy2num(x0,y0);%应用所有可能的移动x=x0+dx;y=y0+dy;%删除任何无效的方块valid=xyvalid(x,y);x(~有效)=[];y(~有效)=[];%确定可能移动到的方块数num=xy2num(x,y);%选择所有未访问的方块,使其位于符合条件的板上sel=~第一个成员(num,seqNum)和第二个成员(x,y,num);%如果没有可用的电位方格,则中断如果(~any(sel))有限=真;disp(“停止”)打破结束%选择数字最小的可用方块作为下一个方块num(~sel)=inf;[~,index]=最小值(num);x0=x(索引);y0=y(指数);结束%%图1-序列开始xy最大值=5;sPlot=查找(~(abs(seqX)<=xy_max&abs(seqY)<=sy_max),1)-1;hFig1=数字;等一下图3(序列X(1)、序列Y(1),1,“o”)图3(seqX(sPlot)、seqY(sPlate)、sPlots、'rx')补丁([seqX(1:sPlot)nan],[seqY(1:sP lot)nan],[1:sPlot-nan],[1:sPlot-nan],'EdgeColor','interp','FaceColor'和'none')set(gca,'Ydir','reverse','XAxisLocation','Top')图例('n=1',sprintf('n=%i',sPlot),'Location','southeast')轴相等配电盘“对角线”大小写xlim([0 xy_max+1);ylim([0 xy_max+1);案例“螺旋”xlim([-xy_max-1 xy_max+1);ylim([-xy_max-1 xy_max+1);结束对于x=-xy_max:xy_max对于y=-xy_max:xy_max如果xyvalid(x,y)文本(x,y,num2str(xy2num(x,y)),'水平对齐','中心')结束结束如果创建文件存储方式(hFig1,[OEISnum'.svg']);结束%%图2-整个序列如果有限hFig2=数字;等一下图3(序列X(1)、序列Y(1),1,“o”)图3(seqX(结束),seqY(结束),numel(seqY),'rx')补丁([seqX nan]、[seqY nan],[1:numel(seqY)nan]set(gca,'Ydir','reverse','XAxisLocation','Top')图例('n=1',sprintf('n=%i',numel(seqY)),'位置','东南')轴相等xlim([最小值(seqX)-1最大值(sexX)+1])ylim([最小值(seqY)-1最大值(seqY)+1])如果创建文件保存为(hFig2,[OEISnum'_fig2.svg']);结束结束%%打印序列信息seqString=sprintf(“%i,”,seqNum);最大Chr=260;i=查找(seqString==','&1:numel(seq字符串)<=maxChr,1,'last');seqString=序列字符串(1:i-1);fprintf([“#####”OEISnum“#####\n”]);fprintf(['Move:'Move'\n']);fprintf(['Board:'Board'\n']);fprintf(['条件:'条件'\n']);fprintf(['数据:'seqString'\n']);如果有限fprintf('Sequence finited,at step%i,square%i is visited,which are no unvisited squares in one move.\n',numel(seqNum),seqNu姆(end));结束fprintf([“#########1###*###*”])%%创建b文件如果创建文件fid=fopen(['b'OEISnum(2:end)'.txt'],'w');fprintf(fid,“%i%i\r\n”,[1:numel(seqNum);seqNum]);fclose(fid);结束