############################################################################# ## http://www.research.att.com/~njas/sequences/a080069.py.txt## ##由Antti Karttunen编码(His-firstname.His-surname@gmail.com), ##2006年8月至9月## ##该文件包含计算序列的Python函数##A080069、A080070、A122229、A122232、A122235、A1122239、A1122242、A122245##A179755、A179757、A125974、A165471、A179416-A179418、##在中找到##尼尔·斯隆的整数序列在线百科全书(OEIS)##可在获取## http://oeis.org ## ##此源文件的副本也可从以下网址获得:## http://www.iki.fi/kartturi/matikka/Nekomorphisms/a080069.py ## ##此Python-code位于Public Domain中并运行(至少)##在Python 2.4.2中(#67,2005年9月28日,12:41:11)##(见www.python.org)## ##对于绘制图像,还需要PIL-libary##(在Python 2.4上使用1.1.5版进行测试。)##请参见:http://www.pythonware.com/library/pil/handbook/index.htm ## ##上次编辑时间:2010年8月2日,作者:Antti Karttunen## #############################################################################从数学导入*进口再进口定义A000120(n):“n的二进制扩展中的1位数”i=0而0!=编号:i+=(n&1)n>>=1返回(i)#当n增长超过一定限制时,floor(log(n)/log(2))不会返回正确的结果!定义A000523(n):“Log_2(n)向下舍入。当n=0时,我们返回-1,尽管无穷大是正确的。“”i=-1而0!=编号:i+=1n>>=1返回(i)定义A007088(n):“”将n转换为二进制形式。或者相等:第n个十进制数,不使用除0和1以外的其他数字。“”如果0==n:返回(0)else:返回((n%2)+10*A007088(n/2))#请注意,A057548(n)=A080300(A057547(n))=A080300(A079946(A014486(n)))定义A079946(n):“”用1…0包围n的二进制展开。结果n的二进制展开式为11***0.'''返回(2*((1<<(1+A000523(n)))+n))#实际上,下一个函数是A036044:写二进制、补码、反转。#和A057164(n)=A080300(A036044(A014486(n)))=A0800300(A056539(A014486n))#有关C中的这些例程,请参见http://www.research.att.com/~njas/sequences/a089408.c.txt定义A030101(a):“”反转a的二进制扩展。“”b=0而0!=答:b≤1b|=((a)&1)a>>=1返回(b)定义A036044(a):“”对完全平衡的二进制字符串进行反向和补码。“”b=0而0!=答:b<<=1b|=((~a)&1)a>>=1返回(b)定义A000265(n):“”n的最大奇数除数;或n的奇数部分。“”如果0==n:返回(n)当0==(n%2)时:n>>=1返回(n)定义A006519(n):“2除以n的最高幂:1,2,1,4,1,2,1,8,1,2,4,1,1,2,1,16,…”如果0==n:返回(n)p=1当0==(n%2)时:n>>=1p<<=1返回(p)定义A007814(n):2除以n的最高幂指数(二进制进位序列)如果0==n:return(n)p=0当0==(n%2)时:n>>=1p+=1返回(p)定义A036987(n):Fredholm-Rueppel序列。当n=2^m-1时,a(n)=1如果0==(n&(n+1)):返回(1)else:返回(0)定义jacobi_symbol(p,q):“计算雅可比符号J(p/q)”s=0而(p>1):如果(p&1):#如果两个p&q都是3模4,则符号更改,否则保持不变:s^=(p&q)#只有位-1是有效的,其他位被忽略。新p=q%pq=pp=新p其他:#我们有一个偶数p。所以(2k/q)=(2/q)*(k/q)#式中,如果q为+-1 mod 8,则(2/q)=1;如果q为+3 mod 8则为-1。#即,只有当q的低位为(011)或(101)时,符号才会改变,#即,如果位1和位2的xored结果为1。s^=(q^(q>>1))#这样就可以了。p>>=1如果(0==p):返回(p)else:返回(1-(s&2))#p=1定义A165471(n):勒让德符号L(n/65537)return(雅可比符号(n,65537))定义oneplushalfed(n):返回((n+1)/2)定义A179416(n):返回(一加二分(A165471(1+(n%65536)))定义A179417(n):ul=1+(2*n)i=n*nj=0s=0而j>A007814(n+1)#最初为零,去掉lsb-1。s=0#结果总和b=n%2#n的奇偶校验。p=1#二的幂。while(selected!=0)或(others!=0如果(1==已选择)或(1==A036987(已选择+1)):#手头最后一个或零。选定=其他其他=0nb=1-belif(0==(选中%4))或(3==(选择%4)):#源运行继续,目标更改。tmp=已选择选定=其他其他=tmp>>1nb=1-belif(1==(选择%4)):#源代码运行更改,从1变为0,跳过0。选择=A000265(选择-1)nb=belse:#即,如果(2==(选择%4))源代码运行更改,从0到1,跳过1。选择=选择>>A007814(选择+2)nb=bs+=b*pp<<=1b=nb返回定义tb_A057164(a):返回(A036044(a))定义tb_A057163(a):“”反映表示为完全平衡的二进制字符串的二进制树。保留两个“并行”堆栈,另一个用于重建完全平衡的二进制字符串,另一个用于相应的尺寸。从末尾开始扫描参数“a”,按零(离开)到堆栈,并连接到最顶部从堆栈中弹出的子树(-binary字符串)当遇到1时。“”tree_stack=[0]#最后一个叶是隐式的,未在a中标记。size_stack=[1]#其大小为1。而(0!=a):if(0==(a+1)):#将零(叶子)推到堆栈中。tree_stack.append(0)size_stack.append(1)else:#是1,按交换顺序连接两个分支。leftchild=树堆栈.pop()rightchild=tree_stack.pop()leftsize=size_stack.pop()rightsize=size_stack.pop()size_stack.append(1+左尺寸+右尺寸)tree_stack.append((1<<(leftsize+rightsize))+(rightchild<<leftsize)+leftchild)a>>=1return(tree_stack.pop()>>1)#通过减半丢弃最后一片叶子。定义tb_A057117_aux(n,i,r):“将同态A057117应用于A014486-codes。辅助的。执行大部分工作的函数。“”如果(0==((n)&1)):返回(0)c=ij=1而j<=r:c+=(n&1)n>>=1j+=1w=c<<1#w=2*ci<<=1#i=2*i#现在w=前一行的计数的两倍,下一行的宽度。#n指向下一行的开头。c=0j=1而j<=i:c+=(n&1)n>>=1j+=1#现在n开头的1位是“c”:整个n中的第1位(从零开始)。x=tb_A057117_辅助(n,c,(w-(j-1))y=tb_A057117_aux(n>>1,c+(n+1),(w-j))如果(0==y):ywidth=1其他:y宽度=A000523(y)+1如果(0==x):x宽度=1其他:xwidth=A000523(x)+1返回((1<<(y宽度+x宽度))+(x<<y宽度)+y)定义tb_A057117(a):“将同态A057117应用于A014486-codes。”返回(tb_A057117_aux(A030101(a),0,1)>>1)定义tb_A082356(a):''在A014486代码上实现全纯性A082356。保留两个“并行”堆栈,另一个用于重建完全平衡的二进制字符串,另一个用于相应尺寸。最不重要的结局。。。请参阅gatorank.scm中的函数quatexpA->括号http://www.research.att.com/~njas/sequences/A085184“”如果(0==a):返回(a)a>>=1#在启动前丢弃最小有效位(0)。tree_stack=[4]#最后两个叶子是隐式的,二进制形式为100。size_stack=[3]#它们的总大小(以位为单位)为3。而(a>2):如果(0==(a&3)):#双零代表双叶(\/),只需将它们推到堆栈中即可。leftchild=0leftsize=1rightchild=0rightsize=1elif(1==(a&3)):#(情况01)rightchild=tree_stack.pop()rightsize=size_stack.pop()leftchild=0leftsize=1elif(2==(a&3)):#(情况10)rightchild=0rightsize=1leftchild=树堆栈.pop()leftsize=size_stack.pop()else:#它是3(案例11),按正常顺序连接两个分支。leftchild=树堆栈.pop()leftsize=size_stack.pop()rightchild=tree_stack.pop()rightsize=size_stack.pop()size_stack.append(1+左尺寸+右尺寸)tree_stack.append((1<<(leftsize+rightsize))+(leftchild<<rightsize+rightchild)a>>=2#以4为基数的下一位。return(tree_stack.pop()>>1)#通过减半丢弃最后一片叶子。定义tb_A074684(a):''在A014486代码上实现全纯性A074684。上述的变体。“”如果(0==a):返回(a)a>>=1#在启动前丢弃最小有效位(0)。tree_stack=[4]#最后两个叶子是隐式的,二进制形式为100。size_stack=[3]#它们的总大小(以位为单位)为3。而(a>2):如果(0==(a&3)):#双零代表双叶(\/),只需将它们推到堆栈中即可。leftchild=0leftsize=1rightchild=0rightsize=1elif(1==(a&3)):#(情况01)rightchild=0rightsize=1leftchild=树堆栈.pop()leftsize=size_stack.pop()elif(2==(a&3)):#(情况10)rightchild=tree_stack.pop()rightsize=size_stack.pop()leftchild=0leftsize=1else:#它是3(案例11),按正常顺序连接两个分支。leftchild=树堆栈.pop()leftsize=size_stack.pop()rightchild=tree_stack.pop()rightsize=size_stack.pop()size_stack.append(1+左尺寸+右尺寸)tree_stack.append((1<<(leftsize+rightsize))+(leftchild<<rightsize+rightchild)a>>=2#以4为基数的下一位。return(tree_stack.pop()>>1)#通过减半丢弃最后一个叶子。定义tb_A082358(a):“在A014486-codes上实现三态性A082358。上述的变体。“”返回(tb_A057163(tb-A082356(a))定义tb_A082360(a):“在A014486代码上实现同态化A082360。上述各项的变体。“”返回(tb_A057163(tb_A074684(a))#(同频?A082358(组合频A057163 A057117)2055)-->56#也就是说,最大n=55相同。让我们利用这个事实。。。定义tb_Anewgm1(a):“实现一只新猫。A014486代码上的双射。“”返回(tb_A057163(tb-A057117(a))#########################################################################对于测试:序列A014486=[0,2,10,12,42,44,50,52,56170172178180184202,204,210,212,216,226,228,232,240,682,684,690,692,696,714,716,722,724,728,738,740,744,752,810,812,818,820,824,842,844,850,852,856,866,868,872,880,906,908,914,916,920,930,932,936,944,962,964,968,976,992]#例如:#l=[序列A014486中n的tb_A057117(n)]#[seqA014486.范围(len(l))中i的索引(l[i])]#给出A057117的信号转换:# [0, 1, 2, 3, 4, 5, 7, 8, 6, 9, 10, 12, 13, 11, 17, 18, 21, 22, 20, 14, 15, 16, 19, 23, 24, 26, 27, 25, 31, 32, 35, 36, 34, 28, 29, 30, 33, 45, 46, 49, 50, 48, 58, 59, 63, 64, 62, 54, 55, 57, 61, 37, 38, 40, 41, 39, 44, 47, 42, 43, 56, 60, 51, 52, 53]#l=[序列A014486中n的tb_A082356(n)]#[seqA014486.范围(len(l))中i的索引(l[i])]#l=[序列A014486中n的tb_A082358(n)]#[seqA014486.范围(len(l))中i的索引(l[i])]#l=[tb_A082360(n)代表序列A014486中的n]#[seqA014486.范围(len(l))中i的索引(l[i])]#l=[序列A014486中n的tb_A074684(n)]#[seqA014486.范围(len(l))中i的索引(l[i])]########################################################################定义值(n,g):“”“返回由生成器g返回的n个下一个元素组成的列表。灵感来自Haskell”“”z=[]如果0==n:返回(z)对于g中的x:z附录(x)如果n>1:n=n-1其他:返回(z)#注意,A080068也可以作为A072795 o A057506的迭代获得。#其工作原理是A057506(n)=A057163(A057164(n),而不是添加右斗杆/#在中间的二叉树中,我们可以添加一个左木棍。一开始就投入其中#或在每次迭代结束时。#例如,take(10,genA080069())给出:[2,10,44,178,740,2868,11852,47522,190104,735842]定义genA080069():“”产生A080069的连续项,从A080069(1)=2开始。“”i=2为True时:产量ii=tb_A057163(A079946(tb_A0057164(i))定义genA080070():“产生A080070的连续项,从A080070(1)=10开始。”i=2为True时:产量A007088(i)i=tb_A057163(A079946(tb_A0057164(i))定义genA122229():“”从A122229(1)=2开始,得出A1222229的连续项。“”i=2#看起来很无聊,但包含完整性!为True时:产量ii=A079946(tb_A057117(i))定义genA122232():“”从A122232(1)=42开始,得出A122232的连续项。“”i=42#混沌。。。为True时:产量ii=A079946(待定_A057117(i))定义genA122235():“”从A122235(1)=44开始,得出A122235的连续项。“”i=44#外观相似。还应计算起始值50和52。为True时:产量ii=A079946(tb_A057117(i))定义genA122239():“”从A122239(1)=52开始,得出A122238的连续项。“”i=52#外观相似。也应该计算起始值50。为True时:产量ii=A079946(tb_A057117(i))#A082356和A074684都没有消除这种变化。#但是A082358确实很有趣!定义genA122242():“从A122242(1)=42开始,得出A122242.”i=42为True时:收益率ii=A079946(tb_A082358(i))定义genA122245():“”从A122245(1)=44开始,得出A122245.“”i=44#外观相似。还应计算起始值50和52。为True时:产量ii=A079946(tb_A082358(i))定义genA179755():“”“从A179755(1)=50开始,得出A179755.”i=50为True时:产量ii=A079946(tb_A082358(i))定义genA179757():“”“从A179757(1)=56开始,产生A179757.”i=56为True时:产量ii=A079946(tb_A082358(i))定义genA179417():“”“从A179417(0)=1开始,产生A179417.”i=0为True时:产量A179417(i)i+=1#常规、无聊:定义genA1new0():“”产生A1new0的连续项,从A1new0(1)=2开始。“”i=2为True时:产量ii=A079946(tb_Anewgm1(i))#非常混乱,尽管两次迭代中的前四项#等于A122242和A122245:定义genA1new1():“”产生A1new1的连续项,从A1new1(1)=42开始。“”i=42为True时:产量ii=A079946(tb_Anewgm1(i))定义genA1new2():“”产生A1new2的连续项,从A1new2(1)=44开始。“”i=44为True时:产量ii=A079946(tb_Anewgm1(i))定义genA0new11():“产生A0new11的连续项。”i=42j=44为True时:产量(i^j)i=A079946(tb_A082358(i))j=A079946(tb_A082358(j))定义genA0new12():“产生A0new12的连续条款。”i=42j=50为True时:产量(i^j)i=A079946(tb_A082358(i))j=A079946(tb_A082358(j))定义genA0new13():“产生A0new13的连续条款。”i=42j=56为True时:产量(i^j)i=A079946(tb_A082358(i))j=A079946(tb_A082358(j))定义genA0new14():“产生A0new14的连续条款。”i=44j=50为True时:产量(i^j)i=A079946(tb_A082358(i))j=A079946(tb_A082358(j))定义genA0new15():“产生A0new15的连续条款。”i=44j=56为True时:产量(i^j)i=A079946(tb_A082358(i))j=A079946(tb_A082358(j))定义genA0new16():“产生A0new16的连续条款。”i=50j=56为True时:产量(i^j)i=A079946(tb_A082358(i))j=A079946(tb_A082358(j))#啊,金字塔又来了!(拿着这个!)定义genA0new3():“”产生A0new3的连续项,从A0new3(1)=2开始。“”i=2为True时:产量ii=A079946(A125974(i))#留着这个!为什么在非缩放时出现有趣的棋盘格图案?#(很可能这是PNG显示程序的人工制品!)定义genA0new4():“”产生A0new4的连续项,从A0new4(1)=2开始。“”i=2为True时:产量ii=A079946(tb_A057163(A125974(tb-A057163))#也许这也是。定义genA0new5():“”产生A0new5的连续项,从A0new5(1)=2开始。“”i=2为True时:收益率ii=tb_A057163(A079946(A125974(tb_A0057163(i)))#类似于1D“滑翔机”:定义genA0new6():“”产生A0new6的连续项,从A0new6(1)=44开始。“”i=44为True时:产量ii=A125974(A079946(tb_A057163(i))定义genA0new7():“”产生A0new3的连续项,从A0new3(1)=2开始。“”i=44为True时:产量ii=A079946(A125974(i))定义genA0newX():“”产生A0new1的连续项,从A0newX(1)=2开始。“”i=2#非常规则,就像一些1类1D-CA。为True时:产量ii=A079946(tb_A082360(i))###########################################################################以“Wolframesque 1D-CA方式”绘制上述序列的零件。##第三章“简单程序的世界”中也有符号系统#在斯蒂芬·沃尔夫拉姆(Stephen Wolfram)的《一种新的科学》(A New Kind Science)中,沃尔夫拉姆·传媒(Wolfram Media),2002年;#第102-104页,第896-898页###########################################################################在Python 2.4上使用PIL-libary 1.1.5版。#请参见:http://www.pythonware.com/library/pil/handbook/index.htm#图形界面使用与PIL本身相同的坐标系,#(0,0)位于左上角。导入图像、ImageDraw、ImageFont定义绘图点(绘图、x、y、比例、颜色):pixrange=范围(比例)对于像素范围中的x_off:对于像素范围中的y_off:draw.point([(x-x_off,y+y_off)],fill=颜色)def draw_bin_string(绘制、行、比例、宽度、高度、ymargin、binstr):x=(宽度-1)-((宽度刻度*(A000523(binstr)+1))/2)#将其置于中心。#x=(宽度/2)+(比例*行)-1#更简单!y=刻度*(第1行)+y边缘黑色=(0,0,0)白色=(256256256)pixrange=范围(比例)而0!=binstr:如果(1==(binstr%2)):color=black#1是黑色的。else:color=white 0是白色的。draw_point(绘制、x、y、比例、颜色)binstr>>=1x-=刻度定义draw_up_to_n(gen,upto_n,scale,filebase,captext):“”“绘制生成器gen生成的二进制字符串,直到第n行,保存将图像添加到文件中,并附加标题“captext”(如果存在)。''bfileout=打开(“b”+文件库+“.txt”,'w')行=1xmargin=0y边缘=1#取生成器gen返回的第一个整数:对于gen中的binstr:bfileout.write(str(row)+“”+str(binstr)+“\n”)打破firstwid=(A000523(binstr)+1)宽度=2*(刻度*upto_n)+(刻度*firstwid)+2*xmargin高度=(刻度*upto_n)+2*y边缘image=image.new(“RGB”,(宽度,高度),(128000000))#漂亮的红色背景#image=image.new(“RGB”,(宽度,高度),(00012800))#漂亮的有毒绿色背景draw=图像绘制。绘制(图像)draw_bin_string(绘制、行、比例、宽度、高度、ymargin、binstr)行+=1#x=(width-1)-(width-(A000523(binstr)+1))/2#将其置于中心。#然后是剩下的:对于gen中的binstr:bfileout.write(str(row)+“”+str(binstr)+“\n”)draw_bin_string(绘制、行、比例、宽度、高度、ymargin、binstr)行+=1如果行>upto_n:中断bfileout.close()if(captext):#font=ImageFont.load(“some_larger_font.pil”)#但我们没有!font=ImageFont.load_default()draw.text((10,10),captext,fill=(0,0,0),font=font)#黑色文本。draw.text((10,25),“First”+str(upto_n)+“terms,1位=”+str(比例)+“x”+str(比例)+“像素。”,填充=(0,0,0),字体=字体)德尔拉(del draw)image.save(“a”+文件库+“_”+字符串(upto_n)+“.png”,“png”)########################################################################def draw_binseq_from_bfile(文件库、第一个宽度、比例、标题文本):“”基于只包含0和1的b文件绘制二元三角形以顶行为中心绘制第一个firstwid位,在那之后,每行多放两位。将图像保存到文件中,并附加标题“captext”。“”黑色=(0,0,0)白色=(256256256)尝试:bfilein=打开(“b”+文件库+“.txt”,'r')除了IOError:#不存在编辑文件。return(无)#首先计算输入文件中包含以下项的行数:widtnow=第一个widw=宽度低行=0对于bfilein.xreadline()中的行:w-=1如果(0==w):宽度低+=2w=宽度低行+=1bfilein.seek(0)#倒回开头。upto_n=行xmargin=0y边缘=1宽度=2*(缩放*行)+(缩放*第一宽度)+2*xmargin高度=(比例*行)+2*y边缘x_start=(宽度/2)-(比例*(第一宽度/2))打印“宽度x高度的绘图图像”+str(宽度)+“x”+str(高度)+“像素”。+str(rows)+'行,第一行是'+str(firstwid)+'位,x_start='+str(x_start)+'\n'#image=image.new(“RGB”,(宽度,高度),(128000000))#漂亮的红色背景image=image.new(“RGB”,(宽度,高度),(000000128))#漂亮的蓝色背景draw=图像绘制。绘制(图像)widtnow=第一个widw=当前宽度linepat=重新编译(r'^([0-9]+)\s+([0-9]+)')y=y边缘x=x开始#然后再次读取bfile:对于bfilein.xreadlines()中的行:m=linepat.match(行)如果(m):lineno=int(m.group(1))位=int(m.group(2))if(0==bit):color=white#0是黑色的。否则:颜色=黑色#1是白色。draw_point(绘制、x、y、比例、颜色)w-=1if(0==w):#切换到下一行的时间?widthnow+=2#宽了两位w=宽度低y+=刻度#朝向屏幕底部。。。x_start-=scale#下一行再左一个方块x=x开始其他:x+=刻度其他:打印“注释行或格式错误,跳过:”+行+“\n”持续bfilein.close()if(captext):#font=ImageFont.load(“some_larger_font.pil”)#但我们没有!font=ImageFont.load_default()draw.text((10,10),captext,fill=(0,0,0),font=font)#黑色文本。draw.text((10,25),“First”+str(upto_n)+“terms,1位=”+str(缩放)+“x”+str(比例)+“像素”,填充=(0,0,0),字体=字体)德尔拉(del draw)#image.save(“a”+文件库+“_”+字符串(upto_n)+“.png”,“png”)image.save(“a”+文件库+“p”+字符串(缩放)+“.png”,“png”)#########################################################################非常精细的纹理,就像被风打磨过的沙子金字塔!默认do_it_for_A080069(上限,刻度):draw_up_to_n(genA080069(),upto_n,刻度,“080069”,“参见:http://oeis.org/wiki/A080069")#令人厌烦的常规:def do_it_for_A122229(upto_n,比例):draw_up_to_n(genA122229(),upto_n,刻度,“122229”,“参见:http://oeis.org/wiki/A122229")#混乱:定义do_it_for_A122232(上限,刻度):draw_up_to_n(genA122232(),upto_n,刻度,“122232”,“参见:http://oeis.org/wiki/A122232")定义do_it_for_A122235(上限,刻度):draw_up_to_n(genA122235(),upto_n,刻度,“122235”,“参见:http://oeis.org/wiki/A122235")#这些“圆圈”是真的吗?定义do_it_for_A122239(上限,刻度):draw_up_to_n(genA122239(),upto_n,刻度,“122239”,“参见:http://oeis.org/wiki/A122239")定义do_it_for_A122242(上限,小数位数):draw_up_to_n(genA122242(),upto_n,刻度,“122242”,“参见:http://oeis.org/wiki/A122242")定义do_it_for_A122245(上限,刻度):draw_up_to_n(第A122245代),upto_n,比例尺,“122245”,“参见:http://oeis.org/wiki/A122245")定义do_it_for_A179755(上限,刻度):draw_up_to_n(genA179755(),upto_n,刻度,“179755”,“参见:http://oeis.org/wiki/A179755")定义do_it_for_A179757(上限,刻度):draw_up_to_n(genA179757(),upto_n,刻度,“179757”,“参见:http://oeis.org/wiki/A179757")定义do_it_for_A179417(上限,刻度):draw_up_to_n(genA179417(),upto_n,刻度,“179417”,“参见:http://oeis.org/wiki/A179417")定义do_it_for_A1new0(上限,小数位数):draw_up_to_n(genA1new0(),upto_n,刻度,“800000”,“参见:http://oeis.org/wiki/A1new0")定义do_it_for_A1new1(上限,小数位数):draw_up_to_n(genA1new1(),upto_n,刻度,“800001”,“参见:http://oeis.org/wiki/A1new1")定义do_it_for_A1new2(上限,小数位数):draw_up_to_n(genA1new2(),upto_n,刻度,“800002”,“参见:http://oeis.org/wiki/A1new2")def do_it_for_A0new3(upto_n,比例):draw_up_to_n(genA0new3(),upto_n,刻度,“900003”,“参见:http://oeis.org/wiki/A0new3")定义do_it_for_A0new4(上限,小数位数):draw_up_to_n(genA0new4(),upto_n,刻度,“900004”,“参见:http://oeis.org/wiki/A0new4")定义do_it_for_A0new5(上限为n,比例):draw_up_to_n(genA0new5(),upto_n,刻度,“900005”,“参见:http://oeis.org/wiki/A0new5")定义do_it_for_A0new6(上限,小数位数):draw_up_to_n(genA0new6(),upto_n,比例,“900006”,“参见:http://oeis.org/wiki/A0new6")定义do_it_for_A0new7(上限为n,比例):draw_up_to_n(genA0new7(),upto_n,刻度,“900007”,“参见:http://oeis.org/wiki/A0new7")定义do_it_for_A0new11(上限,小数位数):draw_up_to_n(genA0new11(),upto_n,刻度,“900011”,“参见:http://oeis.org/wiki/A0new11")def do_it_for_A0new12(upto_n,比例):draw_up_to_n(genA0new12(),upto_n,刻度,“900012”,“参见:http://oeis.org/wiki/A0new12")定义do_it_for_A0new13(上限,小数位数):draw_up_to_n(genA0new13(),upto_n,刻度,“900013”,“参见:http://oeis.org/wiki/A0new13")定义do_it_for_A0new14(上限,小数位数):draw_up_to_n(genA0new14(),upto_n,刻度,“900014”,“参见:http://oeis.org/wiki/A0new14")定义do_it_for_A0new15(上限,小数位数):draw_up_to_n(genA0new15(),upto_n,刻度,“900015”,“参见:http://oeis.org/wiki/A0new15")定义do_it_for_A0new16(上限为n,比例):draw_up_to_n(genA0new16(),upto_n,刻度,“900016”,“参见:http://oeis.org/wiki/A0new16")######################################################################### ##为了进行比较,下面是一些##上面定义的加泰罗尼亚自同构## ##########################################################################(定义(*a082356!s)*a082352!应用于递归情况0。#(第二((对)(*a082352!s)(*a 082356!(汽车))(*a082356;(cdr)))#秒# )# # # # ;; 数据中心# ;; \ /# ;; PB D C B A[]B B A# ;; \ / \ / \ / \ / \ / 默认情况下:# ;; M A-->Q N M A-->N[][]A[]A# ;; \ / \ / \ / \ / \ / --> \ /# ;; X Y X Y X X Y# # #(定义(*a082352!s)#(秒(不是(对?s))s)#(不是(对(车))#(不是(配对?(caar))(交换!(robr!s))#(其他(robr!s))# )# )# #以及gatorank.scm的相关代码#(define(binexp->括号n)#(let循环((n n)(堆栈(列表)))#(秒((零?n)(汽车组))#((零?(模n 2))#(循环(地板->精确(/n 2))(cons(列表)堆栈))# )#(否则#(循环(地板->精确(/n 2))(cons2top!堆栈))# )# )# )# )# # # ;; 实验性,四进制锯齿树代码,变体A:# ;; 与A057117第一次在位置56不同,# ;; 其中有42个,而有44个。# ;; 现在,它作为A082356存储在OEIS中。# ;; (地图CatalanRankGlobal(地图括号->binexp(地图quatexpA->括号(地图A014486(iota0 64))))# ;; (0 1 2 3 4 5 7 8 6 9 10 12 13 11 17 18 21 22 20 14 15 16 19 23 24 26 27 25 31 32 35 36 34 28 29 30 33 45 46 49 50 48 58 59 63 64 62 54 55 57 61 37 38 40 41 39 42 43 44 47 51 52 56 60 53)# #(定义(四元数->括号n)#(如果(零?n)(列表)#(让循环(n(楼层->精确(/n 2)))#(堆栈(列表(cons(列表)(列表)))# )#(cond((<n 2)(汽车组))#(否则#(大小写(模n 4)# ((0) ;; 00#(环路(地板->精确(/n 4))#(cons(列表)堆栈)# )# )# ((1) ;; 01#(环路(地板->精确(/n 4))#(cons2top!(cons(list)堆栈)# )# )# ((2) ;; 10#(环路(地板->精确(/n 4))#(翻转!最顶部(cons2top!(cons(list)堆栈))# )# )# ((3) ;; 11#(环路(地板->精确(/n 4))#(cons2top!堆栈)# )# )# )# )# )# )# )# )# # ;; (地图CatalanRankGlobal(地图括号->binexp(地图quatexpB->括号(地图A014486(iota0 64))))# ;; (0 1 3 2 8 7 5 4 6 22 21 18 17 20 13 12 10 9 11 15 14 19 16 64 63 59 58 62 50 49 46 45 48 55 54 61 57 36 35 32 31 34 27 26 24 23 25 29 28 33 30 41 40 38 37 39 52 51 60 56 43 42 47 44 53)# ;; 等于A074684。# ;; 变体B,01和10的角色互换:(但11没有翻转!)#(定义(四元数B->括号n)#(如果(零?n)(列表)#(让循环(n(楼层->精确(/n 2)))#(堆栈(列表(cons(list)(list)))# )#(cond((<n 2)(汽车组))#(否则#(情况(模n 4)# ((0) ;; 00#(环路(地板->精确(/n 4))#(cons(列表)堆栈)# )# )# ((1) ;; 01#(环路(地板->精确(/n 4))#(翻转!最顶部(cons2top!(cons(list)堆栈))# )# )# ((2) ;; 10#(环路(地板->精确(/n 4))#(cons2top!(cons(list)堆栈)# )# )# ((3) ;; 11#(环路(地板->精确(/n 4))#(cons2top!堆栈)# )# )# )# )# )# )# )# )# # # ;; 转换(a.rest))-->(a.b)。休息)# ;; 没有浪费cons细胞。# #(定义(cons2top!堆栈)#(let((ex-cdr(cdr堆栈))#(设置cdr!堆栈(car ex cdr))#(set-car!ex-cdr堆栈)#除cdr# )# )# #(定义(翻转!最顶层堆栈)#(let*((最上面(汽车组))#(ex-cdr(cdr顶部))# )#(set-cdr!顶部(汽车顶部))#(set-car!最上面的ex-cdr)#堆栈# )# )#