;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; http://www.research.att.com/~njas/sequences/A126000.scm.txt;;;; ;;;;由Antti Karttunen编码(他的名字。他的姓氏(-AT-)gmail.com);;;;2006年12月。(一些部件较旧,例如功能A106485-7)。 ;;;; ;;;;此文件包含计算序列的方案函数;;;;A106485-A106487和A1259xx-A126xxx;;;;在中找到;;;;尼尔·斯隆的整数序列在线百科全书(OEIS);;;;可用位置;;;; http://www.research.att.com/~njas/sequences/;;;; ;;;;此源文件的副本也位于:;;;; http://www.iki.fi/kartturi/matikka/Schemuli/A12600.scm ;;;; ;;;;此方案代码位于公共域中并运行(至少);;;;在MIT Scheme Release 7.7.x中,可以找到文档;;;和预编译的二进制文件(适用于在中运行的各种操作系统;;;;Intel x86体系结构),网址为:;;;; http://www.swiss.ai.mit.edu/projects/scheme(瑞士)/ ;;;; ;;;;另请参见http://cgsuite.sourceforge.net/(组合游戏套件);;;; 网址:http://www.ics.uci.edu/~eppstein/cgt/;;;; http://www.gustavus.edu/~wolfe/论文(David wolfe的论文);;;;请参见中给出的定义示例;;;;“第n天产生的博弈分配格的结构”;;;;W.Fraser、S.Hirshberg和D.Wolfe的论文。 ;;;; ;;;;如果您有改进、建议、补充,请发送;;;;通过电子邮件发给我(主题为:CGT相关序列);;;;我可能会将它们添加到此程序中。或者,您可以发送;;;;直接向尼尔·斯隆改进计划。 ;;;; ;;;;Antti Karttunen于2006年12月19日最后编辑。 ;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;待办事项:;;;; ;;;;还实现了两个游戏的添加。 ;;;;使用S表达式,因为A106486代码很快就会变得非常大;;;;一种可能的表示形式:(()。()=())=游戏零,{|};;;;(A B C)。(X Y Z))=((A B C)X Y Y Z)=游戏{A,B,C|X,Y,Z};;;; (( (() . ()) ) .()=((())))=游戏{0|}=游戏1。 ;;;; (() . ( (() .()))=()()(())())=游戏{0}=游戏-1。 ;;;; (( (() . ()) ) . ( (() .()))=(((()))(()))=游戏{0|0}=*;;;;应明确定义转换回A106486代码。 ;;;;左右两侧的选项可能在中给出;;;;某些顺序,尽管相同序列(列表)的顺序不同;;;;映射到同一组选项。 ;;;; ;;;;如果游戏{A,B,C|X,Y,Z}显示为;;;;(*A057163(A B C)。(X Y Z));;;;那么(至少我认为如此)*A057163将诱导;;;;与A106485相同的游戏否定,以及那些CGT-树;;;;symmetric,也将生成对称二叉树(S表达式);;;;如果左选项和右选项的顺序相同。 ;;;; ;;;;通过A126012传递结果的第一个版本,即给定;;;;总和的最小代表,即A126012(g+h);;;; ;;;;第二版A126013(A126012(A126011(i)+A126011;;;;只有使用最小代表的索引才能给出数组;;;;其中,每一行和每一列都是A001477的置换,因为;;组合对策的加法形成一个组。 ;;;; ;;;;然后是另一个,其中总和以某种方式“自然膨胀”;;;;(通过将新选项分为适当级别);;;;然后保留为非最小代码,不使用任何A126011-A126013。 ;;;;(这将产生较大的编码。);;问题:很多愚蠢的问题。 ;;;; ;;;;也要做:游戏的分配格,集合的示例数组;;;;和连接,使用索引(即A126011-A126013);;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(声明(通常整合));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;用于定义缓存(“记忆”)N->N函数的辅助宏;;;;等等。 ;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;定义一元缓存的N->anything函数。语法如下;;(定义(函数参数)。..)方案。;;请注意,此函数和其他缓存函数依赖于MIT方案;;特性,例如向量被初始化为包含#f;;而且,f实际上和()是一回事。待更正。;;已添加此10。2002年7月,避免分配灾难;;是由于粗心使用缓存的整数函数导致的:(定义*MAX-CACHE-SIZE-FOR-DEFINEC*128);;131072没必要在这里缓存这么多!(定义-语法-定义(语法规则()((定义(名称参数)e0)。..)(定义名称(letrec((_缓存_(向量#f#f#f#f#f#f#f#f#f#f#f#f#f#f))(姓名(λ(arg)(cond((null?arg)_cache_)((>=arg*最大尺寸-尺寸-定义*)电子0。..)(否则(如果(>=arg(矢量长度缓存))(设置!_缓存_(矢量增长_高速缓存_(最小值*最大尺寸-定义值*(最大值(1+arg)(*2(向量长度_缓存_)))))))(或(vector-ref_cache_arg)(λ(res)(向量集!缓存参数资源)物件)(开始e0…)))));条件)));letrec-定义名称);let录制) ;;(定义名称…))) ;;句法规则);;这是用于定义基于一的排列。;;还自动存储逆置换(在_invcache_中),;;可以使用负参数访问。;;请注意,定义的函数具有微妙的状态依赖性。定义的排列必须是;;在其逆运算之前计算!是的,这又脏又危险。(定义语法定义erm1(语法规则()((defineperm1(名称arg)e0)。..)(定义名称(letrec((_缓存_(向量#f#f#f#f#f#f#f#f#f#f#f#f#f#f))(_invcache_(向量#f#f#f#f#f#f#f#f-f#f#f#f));;用于反转。(姓名(λ(arg)(cond((null?arg)_cache_)((等式?#t参数)_invcache_)(<arg 0);;(foo-n)指(foo ^-1 n)(cond((>=(-arg)(向量长度_invcache_))#t)(其他(矢量参考输入缓存(-arg))))((>=arg*最大尺寸-尺寸-定义*)电子0。..)(否则(如果(和(>=arg(矢量长度缓存))(<arg*MAX-CACHE-SIZE-FOR-DEFINEC*))(设置!_缓存_(矢量增长_高速缓存_(最小值*最大尺寸-定义值*(最大值(1+arg)(*2(向量长度_缓存_)))))))(或(vector-ref_cache_arg)(λ(res)(let((invcachesize(向量长度_invcache_)))(如果(<arg*MAX-CACHE-SIZE-FOR-DEFINEC*)(向量集!缓存参数资源));;处理反向缓存。首先确保有足够的空间:(条件(和(<res*MAX-CACHE-SIZE-FOR-DEFINEC*)(或(>=res invcachesize)(>=arg invc缓存size)))(设置!_invcache_(矢量增长_invcache数据库_;;(最小*MAX-CACHE-SIZE-FOR-DEFINEC*(最大值(1+res)(1+(向量长度_缓存_))(*2(向量长度_invcache_)));; )))(格式#t“反向缓存大小:~a->~a。\n”invcachesize(向量长度invcache)));;如果此结果已存储在invcache中,请检查它是否未针对不同的参数进行缓存:(和(<res*MAX-CACHE-SIZE-FOR-DEFINEC*)(矢量引用缓存资源))=>(λ(旧n)(如果(不是(=old_n arg))(错误(格式#f定义的函数不是内射函数,因此不能是双内射函数:f(~a)=f(~a)=~a。\n旧_参数资源))))))(如果(<res*MAX-CACHE-SIZE-FOR-DEFINEC*)(向量集!_invcache_ res参数))物件)) ;;(λ(res)。..)(开始e0…)))));条件)));letrec-定义名称);let录制) ;;(定义名称…))) ;;句法规则);;pred_on_i?应该是N->#f/#t函数,从偏移量0开始。(定义(fun-succ-matching-is1 pred-on-i?)(letrec((_缓存_(向量#f#f#f#f#f#f#f#f#f#f#f#f#f#f))(tvimadur;;我们在这里定义和返回的函数。(λ(n)(cond((非(整数?n))_cache_);;只是为了调试。(否则(如果(>=n(向量长度_缓存_))(设置!_缓存_(矢量增长缓存_(最大值(1+n)(*2(向量长度_缓存_))))))(或(vector-ref _cache n)(λ(结果)(向量集!缓存n结果)结果)(秒((=0 n)-1)(否则(让回路((i(1+(tvimadur(-1+n))))(cond((pred-on-i?i)i)第二(其他(循环(1+i)))))))) ;;lambda-form的调用) ;;) ;;其他) ;;康德);λ(n))) ;;letrec-定义。特维马杜尔) ;;letrec公司);;fun_on_i应该是N->N函数,从偏移量0开始,最好是缓存的。(定义(fun-succ-distinacts0 fun_on-i)(letrec((_缓存_(向量#f#f#f#f#f#f#f#f#f#f#f#f#f#f))(belgthor;;我们在这里定义和返回的函数。(λ(n)(条件((非(整数?n))缓存);;只是为了调试。(其他(如果(>=n(向量长度_缓存_))(设置!_缓存_(矢量增长缓存_(最大值(1+n)(*2(向量长度_缓存_))))))(或(vector-ref _cache n)(λ(结果)(向量集!缓存n结果)结果)(条件(<n 1)n)(否则(让外环((i(1+(belgthor(-1+n))))(此处的值(fun _ on-i(1+(比利时(-1+n)))))(让inloop((j(-1+n)));;((j(-1+i));;如果我们没有找到任何j<i,其中fun_on_i(belgthor(j))应该是belgthor(i),那么。..(cond((<j 0)i);; ...我们发现了一个新的独特值。((=(fun_on-i(belgthor j))此处的值)(outloop(+i 1)(fun_on-i(+i 1))))(其他(inloop(-j 1)))))))) ;;lambda-form的调用) ;;) ;;其他) ;;康德);λ(n))) ;;letrec-定义。比利时) ;;letrec公司);;fun_on_i应该是N->N函数,从偏移量0开始,最好是缓存的。(定义(fun-succ-distinacts-cgts0 fun_on-i)(letrec((_cache_(向量#f#f#f#f#f#f#f#f#f#f#f#f#f#f#f#f#f))(belgthor;;我们在这里定义和返回的函数。(λ(n)(条件((非(整数?n))缓存);;只是为了调试。(否则(如果(>=n(向量长度_缓存_))(设置!_缓存_(矢量增长缓存_(最大值(1+n)(*2(向量长度_缓存_))))))(或(vector-ref _cache n)(λ(结果)(向量集!缓存n结果)结果)(条件(<n 1)n)(其他(让外环((i(1+(belgthor(-1+n))))(此处的值(fun _ on-i(1+(比利时(-1+n)))))(让inloop((j(-1+n)));;((j(-1+i));;如果我们没有找到任何j<i,其中fun_on_i(belgthor(j))应该是belgthos(i),那么。..(cond((<j 0)i);; ...我们发现了一个新的独特值。((=1(A126010bi(fun_on-i(belgthor j))val_here))(outloop(+i 1)(fun_on-i(+i 1))))(其他(inloop(-j 1)))))))) ;;lambda-form的调用) ;;) ;;其他) ;;康德);λ(n))) ;;letrec-定义。比利时) ;;letrec公司);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(定义(first_pos_with_funs_val_gte函数n)(let循环((i 0))(如果(>=(fun i)n)i(回路(1+i)))))(定义(first-n-here-funn-is-i1 fun i)(让循环(n 1))(cond((=i(fun n))n)(else(循环(+n 1)))))(定义(num-of-n-where-funn-is-less-than-i-funi)(let循环((n 0))(cond((>=(fun)i)n)(else(循环(+n 1)))))(定义反向iota(λ(n)(如果(零?n)(列表)(cons n(反向为iota(-n 1))))))(定义iota(λ(n)(反向!(反向iota n)))(定义(iota0到n)(let循环((n upto_n)(结果(列表)))(cond((零?n)(cons 0结果))(else(循环(-n 1)(cons n结果)))))(定义(首发位置列表pred?)(let循环((lista lista)(i 0))(cond((null?lista)#f)((pred?(汽车列表))i)(else(循环(cdr列表)(1+i)))))(定义(合成列表funlist)(cond((null?funlist)(λ(x)x))(else(lambda(x)((car funlist)((compose-funnlist(cdr funlist))x))))(定义(compose-funs.funlist)(cond((null?funlist)(λ(x)x))(else(lambda(x)((car funlist)((应用compose-funs(cdr-funnist))x))));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(定义(获取整数位-函数位-字符串-函数)(λ(x y)(let(尺寸(最大(箱宽x)(箱宽y)))(位字符串->无符号整数(位字符串-FUN(无符号整数->位字符串大小x)(无符号整数->位字符串大小y))))))(定义A003986bi(获取整数位-函数位-字符串-or))(定义A003987bi(获取整数位-函数位-字符串-xor))(定义A004198bi(获取整数位-函数位-字符串和))(定义(功率2?n)(和(>n 0)(零?(A004198bi n(-n 1))))(定义(A004442 n)(A003987bi n 1));;自然数,反向配对:a(n)=n+(-1)^n;n异或1。(定义(二项式n_2n)(/(*(-1+n)n)2));;(地图A025581(对比度0(iota 20)))-->(0 1 0 2 1 0 3 2 1 0 4 3 2 1 5 4 3 1 0)(定义(A025581 n);;正方形{0..inf}数组的X分量(列)(-(二项式n_2(1+(楼层->精确(+(/12)(平方(*2(1+n)))));;(地图A002262(坐标0(iota 20)))-->(0 0 1 0 1 2 0 1 2 3 0 1 2 4 0 1 3 4 5)(定义(A002262 n);;方形{0..inf}数组的Y分量(行)(-n(二项式n_2(楼层->精确(+(/12)(平方(*2(1+n)))));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(definec(位诱导n)(let循环(n n)(i 0)(c(列表)))(秒((零?n)(反向!c))((奇数?n)(循环(/(-n 1)2)(+1 i)(cons ic))(其他(循环(/n 2)(+1 i)c)))))(定义(减半n)(/n 2))(定义(shr n)(如果(奇数?n)(/(-n 1)2)(/n 2)))(definec(left-options n)(映射减半(keep-matching-items(on-bit-indices n)偶数)?)))(definec(right-options n)(映射减半(map-1+(keep-matching-items(on-bit-indices n)奇数)?))));; . = 0;; \ = 1;; / = 2;; \/ = 3;; \;; / = 8;; /;; \ = 16;; \;; \ = 4;; /;; / = 32;; \;; \ \ \ \/ \/;; \/ = 9 \/ = 12 \/ = 129 \/ = 524289 = 2^(2*9+1)+1(定义(A057300 n)(减少+0(map(lambda(i)(expt 2 i)))(map A004442(on-bit indices n))))(定义(A106485n);;取反,即取CGT树的镜像。(let循环(n n)(i 0)(s 0))(秒((零?n)s)((奇数?n)(循环(/(-n 1)2)(+1 i)(+秒(如果(即使?i)(出口2(+1(*2(A106485(/i 2))))(出口2(*2(A106485(/(-i 1)2)))))))(其他(循环(/n 2)(+1 i)s)))))(定义(A106486 n)(秒((零?n)0)(其他(左折(λ(x y)(+x y 1)))0(地图A106486(地图shr(on-bit-indices n))))));;在(0)之后,在n=64时第一次与A000120不同。(定义(A106487 n)(条件((零?n)1)(其他(应用+(map A106487(map shr(on-bit indices n))))))这是你要求的40个A号码:A125974-A126013。;;代码为n的CGT游戏的值>=0,左赢第二,;;即,第二个玩家可以始终获胜(=0),或者左边的玩家获胜;;无论他打第一还是第二(>0)。;;如果游戏为零游戏,或:;;对于所有G^R:-(G^R)>=0而不是(G^R>=0),(即所有G^R<0)。;;;;请注意,如果右翼没有选择,那么左翼将立即获胜。(定义(字符_A126001 n);;A106486代码给出的CGT游戏n>=0(条件((零?n)1);;是的,游戏0的CGT值为0。((所有人?(权利选项n);;或者没有右选项Gr<=0。(λ(Gr)(=0(char_A126001(A106485 Gr)))) 1)(其他0)));;替代配方。;;游戏G>=0,如果G是零游戏,或者对于所有G^R都有一些G^R^L>=0。;;请注意,如果右翼没有选择,那么左翼将立即获胜。;;而如果右侧的某些选项根本没有左侧选项,;;那么左边就赢不了(如果右边打得聪明),因此在这种情况下char_A126001(n)=0。;;为了证明这些替代配方的等效性,;;我们注意到第一个公式中的条件等价于:;;;;对于所有G^R,-(G^R)>=0是错误的;;;;在展开一个递归步骤后,它变为:;;;;对于所有G^R,错误的是,对于所有(-(G^R);;;;(RR是指右翼在选择了一些一级期权后的“二级”期权);;但正如-与反映树的A106485相同,后者结果为:;;(L是指在选择一些右侧选项后的左侧选项);;;;对于所有G^R,这是错误的,对于所有G_R^L,(G^R)^L)>=0是错误的;;;;(和as(非通用量子非条件)<=>(存在量子条件):;;;;对于所有G^R,存在一些G^R^L,这样((G^R)^L)>=0;;(定义(字符_A126001v2 n);;A106486代码给出的CGT游戏n>=0(条件((零?n)1);;是的,游戏0的CGT值为0。((所有人?(右选项n)(λ(右-右)(存在吗?(左-右-右)(λ(rlopt)(=1(char_A126001v2 rlopt))) 1)(否则为0)))(定义(字符_A125991 n)(*(字符_A126001 n)(字符_A124002 n));;零游戏?A125991的特征函数(定义(char_A126002 n)(char_A126001(A106485 n));;CGT游戏是由A106486代码n给出的吗?(定义(字符_A126003 n)(*(-1(字符_A124001 n))(-1(字符串_A126002 n)));;代码为n的游戏相对于零的游戏是模糊的吗?(定义(字符_A126004 n)(*(字符_A127001 n)(-1(字符_A124002 n)));;严格肯定?(定义(字符_A126005 n)(*(字符_A1126002 n)(-1(字符_A124001 n)));;严格否定?(定义A125991v2(fun-succ-matching-is1(λ(i)(=1(char_A125991 i))))(定义A126001(fun-succ-matching-is1(λ(i)(=1(char_A126001 i))))(定义A126002(fun-succ-matching-is1(λ(i)(=1(char_A126002 i))));;不是A079599、A047467(定义A126003(fun-succ-matching-is1(λ(i)(=1(char_A126003 i))));;不是A047556。(定义A126004(fun-succ-matching-is1(λ(i)(=1(char_A126004 i))))(定义A126005(fun-succ-matching-is1(λ(i)(=1(char_A126005 i))))(定义(A126010bi g h);;CGT游戏g>=h和h>=g,即g和h具有相同的CGT值吗?(*(A125999bi克小时))(定义(A125999bi g h);;CGT游戏是g>=h吗?(秒((0?h)(字符_A126001克))((零?g)(char_A126001(A106485 h));;如果g=0,则相当于-h>=g,即h<=0。(存在?(权利选项g);;如果存在右选项Gr<=H,则不存在!(λ(Gr)(=1(A125999bi h Gr))) 0)((存在?(左选项h);;或者,如果存在左opt Hl>=G,则不存在!(λ(Hl)(=1(A125999bi Hl g))) 0)(否则为1);;g的CGT值>=h。))(定义(A126012 n);;找到n基于零的最小代表CGT码!(let循环((i 0))(如果(=1(A126010bi in))i;;找到了。(循环(+1 i));;保证至少在i=n时停止。)));;序列A126011,表A126000第1列,每个CGT树的最小代码:;;A126012获取不同新值(也是记录)的位置。;;我还没有研究实现它是否有意义;;修剪支配选项并反转;;主导选项。然而,它证明了原作的优雅;;具有相同结果的C.G.T.归纳公式即使没有任何此类优化,也会获得,;;具有A125998bi这样简单的定义。;;再说一次,我们对纠正错误更感兴趣;;而不是快速结果:;;(此处n=57):;; 0,1,2,3,4,6,9,12,18,32,33,36,48,66,67,96,97,129,131,132,134,195,;; 256,258,264,288,384,386,516,768,4098,4099,4102,4128,4129,4132,4227,;; 4230,8196,8198,8204,8448,8450,8456,12294,262146,262152,262176,262272,;; 262274,266242,266272,266370,524289,524292,524544,532484,532736(定义A126011(fun-succ-distinacts-cgts0(λ(x)x));;基于零,不再那么慢。(定义A126011慢(功能-成功-区别0 A126012));;基于零,速度很慢。;;(定义A126011(组成函数(fun-suck-destincts0 A126012)-1+));;不再是单一的。;;也基于零:(定义(A126013 n);;A126011的倒数形式,稍后可能会有用。现在不是最佳状态。(秒((零?n)0)(非(=(A126012 n)n))0);;n不是n的最小代表。(else(第一个n-where-fun_n-is-i1 A126011 n)));; (0 2 1 3 9 10 8 12 6 4 5 11 7 17 18 19 20 13 14 15 16 21);;现在无法计算超过21,因为在此之后,A106485 o A126011的项变得太大:;;A106485(A126011[0..22]);; = 0 2 1 3 32 33 18 48 9 4 6 36 12 129 131 132 134 66 67 96 97 195 36893488147419103232(定义(A126009 n)(A126013(A106485(A126011 n)));;不是最佳的,但目前已经足够了:(A126011的缓存有点帮助。);;基于零。此处仅计算到n=20。(定义(A125990 n)(n中的num-of-n-其中-fun_n-is-less-than-i A126011(导出2 n));;缓存闭包的函数,其本身是缓存的(“内存化”)函数:(定义(用于_A126000 n的rowfun_n);;一个基础。(let(minrepr(A126011(-n 1)));;A126011是基于零的(fun-succ-matching-is1(λ(i)(=1(A126010bi i minrepr)))))(定义(A126000双列行)((rowfun_n_for_A126000行)列);;这是置换,但我们不在乎计算它的逆!偏移,你看。(定义(A126000 n)(A126000bi(+1(A025581(-n 1))))(定义(A125999n)(A12599bi(A025581n)(A002262n))(定义(A126010 n)(A126010bi(A025581 n)(A002262 n))(定义A125991(用于_A126000 1的rowfun_n_f))(定义A125992(用于_A126000 2的rowfun_n_f))(定义A125993(用于_A126000 3的rowfun_n_f))(定义A125994(用于_A126000 4的rowfun_n_f))(定义A125995(rowfun_n_for_A126000 5))(定义A125996(用于_A126000 6的rowfun_n_f))(定义A125997(rowfun_n_for_A126000 7))(定义A125998(用于_A126000 8的rowfun_n_f));;(output-entries-to-file120_45 Dec2006-list-a“./seqs/A126000-seqs.txt”“2006年12月18日”)(定义2006年12月-list-a(列表(列出125991“带零值的组合游戏的A106486编码。”'(关闭:1)(c:“在这些比赛中,第二名球员总是可以获胜。”)(list'e:(字符串附加“游戏0被编码为零,给出该序列的第一项。”24也属于这个序列,因为它编码游戏{-1|1},第二个“玩家总是赢。同样,对于代码为2^(1+2*3)+2^(2*3)=192的游戏{*|*},”“因此192是该序列的成员。”))(list'y:(string-append“第1行,共A126000行”)“A126001和A126002的交叉点。”“特征函数出现在A126010的第0行。”)))(列出125992“值为1的组合游戏的A106486编码。”'(关闭:1)(list'c:(string-append“这些是属于同一个游戏的代码”)“等价类作为游戏{0}(即游戏1)。”))(list'e:(字符串附加游戏{0|}编码为2^(2*0)=1,因此1是这个序列的第一项17也属于这个序列,因为它编码游戏{-1,0|},其中选项-1是“由选项0控制,前者可以删除,结果是”“同一游戏{0|}。”代码65536(=2^(2*(2^(1+2*1)))也属于这个序列“因为它编码游戏{{1}},这对游戏1是可逆的。”))(list'y:(字符串附加“A126000的第2行”))(列出125993“A106486-值为-1的组合游戏编码。”'(关闭:1)(list'c:(string-append“这些是属于同一个游戏的代码”)“等价类作为游戏{0}(即游戏-1)。”))(list'e:(字符串附加游戏{|0}编码为2^(1+2*0)=2,因此2是这个序列的第一项10个成员也属于这个序列,因为它编码游戏{|0,1},其中,选项0占主导地位选项1,后者可以删除,导致“同一游戏{0}。”“同样,代码8589934592(=2^(1+(2*2^(2*2)))属于该序列,”“因为它对游戏{{-1}}进行编码,这对游戏-1是可逆的。”))(list'y:(字符串附加“A126000的第3行”))(列出125994“A106486相当于游戏明星的组合游戏编码。”'(关闭:1)(list'c:(string-append“这些是属于同一个游戏的代码”)“等价类作为游戏{0|0}(即游戏*)。”))(list'e:(字符串附加游戏{0|0}编码为2^(2*0)+2^(1+2*0)=3,因此3是这个序列的第一项“然而,11也属于这个序列,因为它编码游戏{0|0,1},其中,”“因为选项0占主导地位”“选项1位于右侧,后者可以删除,因此”“同一游戏{0|0}。”))(list'y:(string-append)A126000第4行。A126003子集。”))(列出125995“值为2的组合游戏的A106486编码。”'(关闭:1)(list'c:(string-append“这些是属于同一个游戏的代码”)“等价类作为游戏{1}(即游戏2)。”))(list'e:(字符串附加游戏{1|}编码为2^(2*1)=4,因此4是这个序列的第一项5也属于这个序列,因为它编码游戏{0,1|},其中,因为选项1占主导地位“左侧的选项0,则可以删除零,从而生成”“同一游戏{1}。”))(list'y:(字符串附加“A126000的第5行”))(列出125996“与游戏{1|0}等价的组合游戏的A106486编码。”'(关闭:1)(list'c:(string-append“这些是属于同一个游戏的代码”)“等价类作为游戏{1|0}。”))(list'e:(字符串附加游戏{1|0}编码为2^(2*1)+2^(1+2*0)=6,因此6是这个序列的第一项7也属于这个序列,因为它编码游戏{0,1|0},其中,选项1占主导地位“左侧的选项0,前者可以删除,结果是”“同一游戏{1|0}。”))(list'y:(字符串附加“A126000的第6行”))(列出125997“与游戏{0|1}等价的组合游戏的A106486编码。”'(关闭:1)(list'c:(string append)“这些是属于同一游戏的代码”“等价类作为游戏{0|1}。”))(list'e:(字符串附加游戏{0|1}编码为2^(2*0)+2^(1+2*1)=9,因此9是这个序列的第一项“另外,25(=2^(2*2)+2^(2%0)+2^(1+2*1))也属于这个序列,因为它编码游戏”{-1,0|1},其中选项-1由选项0控制,前者可以删除“结果是相同的游戏{0|1}。”))(list'y:(字符串附加“A126000的第7行”))(列出125998“与游戏{1|1}等价的组合游戏的A106486编码。”'(关闭:1)(list'c:(string-append“这些是属于同一个游戏的代码”)“等价类作为游戏{1},公正游戏1*。”))(list'e:(字符串附加游戏{1|1}编码为2^(2*1)+2^(1+2*1)=12,因此12是这个序列的第一项“13也属于这个序列,因为它编码游戏”“{0,1|1},其中,由于选项0由选项1主导,因此可以删除前者,”“结果是相同的游戏{1}。”))(list'y:(字符串附加“A126000的第8行”))(列出126001“非负组合游戏的A106486编码,即值大于等于0的游戏。”'(关闭:1)(c)“在这些比赛中,如果他是第二名,左翼总是可以获胜的。”;;'(组件:(126002 106485);;对于特征函数也是如此!(list'y:(string-append)“特征函数作为A125999的第0行出现。”“请参阅A125991、A126003-A12605。”)))(列出126002“值<=0的组合游戏的A106486编码。”'(关闭:1)(c)“在这些比赛中,如果他是第二名,右翼总是可以获胜的。”;;'(组件:(126001 106485);;对于特征函数也是如此!(list'y:(string-append)“特征函数出现在A125999的第0列。”“与A047467不同(a(65)=512,而不是256),”“也来自A079599,作为术语18446744073709551616(=2^64)”“是此序列的成员,但不是A079599的成员。”“请参阅A125991、A126003-A12605。”)))(列出126003“A106486组合游戏编码,其值相对于游戏零是模糊的。”'(关闭:1)’(c:“在这些游戏中,第一个玩家总是可以获胜。”)(list'y:(字符串附加“A126001和A126002补语的交集,”“或者是A126001和A126002联合的补充。”“与A047556不同。”“请参阅A125991、A125994、A126004-A12605。”)))(列出126004“值大于零的组合游戏的A106486编码。”'(关闭:1)(c)“在这些比赛中,左翼总是可以获胜的。”;;'(组件:(126005 106485);;对于特征函数也是如此!(list'y:(string-append“A126002和A126001补码的交集。”“请参阅A125991、A126001-A126003。”)))(列出126005“值小于零的组合游戏的A106486编码。”'(关闭:1)(c:“在这些游戏中,右翼总是可以获胜的。”);;'(组件:(126004 106485);;对于特征函数也是如此!(list'y:(字符串附加“A126001和A126002补语的交集。”“请参阅A125991、A126001-A126003。”)))(列出126010“如果组合游戏g和h的值相同,则方形数组A(g,h)=1,如果它们不同,则为0,按反对偶顺序列出A(0,0)、A(1,0)、B(0,1)、A'(关键词:“tabl”)'(关闭:0)'(最多120)'(c:“这里我们使用A106486中描述的编码。”)(list'e:(string-append“A(4,5)=A(5,4)=1,因为5编码游戏{0,1|},”“其中,由于选项1控制左侧的选项0,因此可以删除零,”“产生游戏{1},游戏2的标准形式,编码为4。”))(list'y:(字符串附加“第0行是A125991的特征功能(移动一步)。”“A(i,j)=A125999(i,j)*A125999(j,i)。”“A126011为每个人的最少代表提供了A106486编码”“有限组合游戏的等价类。”)))(列出125999“如果组合游戏g的值大于或等于游戏h的值,则方形数组A(g,h'(关闭:0)'(最多120)’(c)“这里我们使用A106486中解释的编码。A(i,j)=A(A106485(j),A106485i))。")'(关键词:“tabl”)(list'y:(字符串附加‘第0行是A126001的特征函数(移动一步),’“类似地,第0列是A126002的特征函数。”“参考A126010和表A126000。”)));; 0,1,2,3,4,6,9,12,18,32,33,36,48,66,67,96,97,129,131,132,134,195,256,258,264,288,384,386,516,768(列出126011“有限组合对策的每个等价类的最小代表的A106486编码。”'(关闭:0)'(最多61)(列表'c:(string-append“初始术语对应以下游戏:”“代码0={|}=零游戏,”“代码1={0|}=游戏1,”“代码2={|0}=游戏-1,”“代码3={0|0}=游戏*,”“代码4={1|}=游戏2,”“代码6={1|0},”“代码9={0|1}=游戏1/2,”“代码12={1|1}=游戏1*,”“代码18={-1|0}=游戏-1/2,”“代码32={|-1}=游戏-2,”“代码33={0|-1},”“代码36={1|-1}=游戏+-1,”“代码48={-1|-1}=游戏-1*,”“code 66={*|0}=游戏结束,”“code67={0,*|0}=游戏开始*,”;; 2^(2*3) + 2^(2*0) + 2^(1+2*0)“代码96={*|-1},”;; 2^(2*3) + 2^(1+2*2)“代码97={0,*|-1},”;; 2^(2*3) + 2^(2*0) + 2^(1+2*2)“code129={0|*}=游戏开始”;; 2^(2*0) + 2^(1+2*3)“代码131={0|0,*}=游戏结束*,”;; 2^(2*0) + 2^(1+2*0) + 2^(1+2*3)“代码132={1|*},”;; 2^(2*1) + 2^(1+2*3)“代码134={1|0,*},”;; 2^(2*1) + 2^(1+2*3) + 2^(1+2*0)“代码195={0,*|0,*}=游戏*2,”;; 2^(2*3) + 2^(2*0) + 2^(1+2*3) + 2^(1+2*0)“代码256={2|}=游戏3。”;; 2^(2*4)“编码在A106486中解释。”))(list'y:(string-append“A126012的记录。A126000第1列。反向:A126013。见A126010。”“A125990给出了[0,2^n[.Cf.A065401范围内的项数。”)))(列出126012“A106486编码代码为n的组合游戏的典型代表。”'(关闭:0)(list'e:(字符串附加“25(=2^(2*2)+2^(2*0)+2^(1+2*1))编码游戏{-1,0|1},其中,”“由于选项-1由选项0控制,因此前者可以删除,”“给我们游戏{0|1},即游戏1/2的规范(最小)形式,”“编码为2^(2*0)+2^(1+2*1)=9,因此a(25)=9和a(9)=9。”类似地,a(65536)=1,因为65536(=2^(2*(2^(1+2*1)))编码游戏{{|1}|}“这对游戏{0|}是可逆的,即游戏1,其编码为2^(2*0)=1。”))(list'y:(string-append“A126011给出了不同的术语(以及记录)。”))(列出126013“N->N注入A126011的反函数。”'(关闭:0);;'(最多99)(list'c:(字符串附加“a(0)=0,因为A126011(0)=0,但a(n)=0也适用于那些不作为A126011值出现的n。”“所有正自然数在此出现一次。”))(list'y:(string-append“a(A126011(n))=n代表所有n。”))(列出126009“A106485被矩形化为A126011时引发的整数自逆置换。”'(关闭:0)'(最多21)'(缩进:Nperm)'(发票:126009)'(公司:(126013 106485 126011)(列表c:(字符串追加“当A106485(A126011(22))=36893488147419103232时,要进一步计算n=21并不容易。”)))(列出125990“A106486最小表示编码小于2^n的党派游戏数量”'(关闭:0)'(最多:20)'(c:“A126011的项数在[0,2^n[.范围内”)'(y:“A065401(n)=a(2*A114561(n))。”))(列出126000“给出每个等价类组合游戏的A106486代码的表。”'(关闭:1)'(缩进:Nperm)'(关键词:“tabl”)(list'e:(字符串附加“每行列出用与初始项相同的值对游戏进行编码的整数”“行的:”“\n%e A126000 0,8,16,24,64,72,80,88128136144152200208,…”“\n%e A126000 1,17,65,8151352957759320492065211321292561,…”“\n%e A126000 2,10130138514522642650205821782186,…”“\n%e A126000 3,11,19,2751552353153920512059206720752563,…”“\n%e A126000 4,5,20,21,68,69,84,85410041014116411741644165,…”“\n%e A126000 6,7,14,15,22,23,30,31,70,71,78,79,86,87,94,95518,…”“\n%e A126000 9,25,73,89521537560120572073212121372569,…”“\n%e A126000 12,13,28,29,76,77,92,9352452554054158589604,…”“\n%e A126000 18,2614615453053865866662066206620742202,…”“\n%e A126000 32,34,40,42160162168170544546552554672674,…”“\n%e A126000 33,35,41,43,49,51,57,59161163169171177185,…”“\n%e A126000 36,37,38,39,44,45,46,47,52,53,54,55,60,61,62,63100,…”“\n%e A126000 48,50,56,58176178184560562568570688690,…”“\n%e A126000 66,74,82,9019420221021857858659594606714,…”))(list'c:(string-append“请参阅A126011和各行上的注释”)(list'y:(字符串附加“第1列:A126011。”“行1:A125991,行2:A125992,行3:A125993,”“第4:A125994行,第5:A125995行,第6:A125996行,第7:A125997行,第8:A125998行。”)))));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;复制和修改自:;;;; 网址:http://www.iki.fi/~kartturi/matikka/Nekomorphisms/gato-out.scm;;;;函数output-gatomorphism-entry-aux等人;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(加载选项的格式)(定义(Anum->str Anum)(字符串-追加“A”(字符串pad-left(if(string?Anum)Anum(number->string Anum))6#\0)))(定义output_seq(λ(seq)(cond((null?seq));;这次不(换行)!(其他(写入(car-seq))(if(not(null?(cdr-seq)))(写入字符串“,”)(输出序列号(cdr-seq))))))(定义(len-of-max-full-line-prefix seq max-line-len)(let循环(seq seq)(术语0)(左室最大长度))(cond((负?左室)(最大1(-第1项)));;至少有一个术语,即使它过长!((非(配对?序列))项)(else(循环(cdr-seq)(+1个术语)(-左室(字符串长度(格式#f“,~A”(car-seq))))))))(定义(html-out-sequence-search-link-out-seeklen)(无输出对输出(λ()(let(seek-seq(cond((seeklen(-(length-seq)2)))(list-head(cddr-seq)seeklens))(else(cddr-seq))))(写入字符串“")(输出seq(列表头序列(最小seeklen(长度序列)))(写入字符串“\n“)))))(定义(html-out-Anchor Anum out)(格式化输出”“(Anum->str Anum)”)(定义(html-out-sequence-A-link Anum-out)(let((Astr(Anum->str Anum)))(格式化输出”~答“阿斯特阿斯特)));;在MIT计划中工作:(定义(Anum->Afun Anum)(eval(字符串->符号(字符串小写(Anum->str-Anum)))用户初始环境));;(complist->exprstr(列表1 2 3 4))-->“A000001(A000002(A000003(A000004(n)))”(定义(complist->exprstr-comlist)(带字符串输出端口(λ(输出)(for-each(lambda(anum))(格式输出“~A(”(anum->str-anum)))共犯)(格式输出“n”)(对于每个(lambda(x)(格式为outport“)”)complist))))(定义(仅检查组成输出端口comp base-seq Aseq Astr?)(let((Acomp(合成列表(map Anum->Afun comp)))(cond((不等于?(map Acomp base-seq)Aseq))(格式输出“!!!组成~A=~A不正确!\n”Astr(complist->exprstr-comp)))(仅检查?(格式输出“是的,组成~A=~A似乎正确。\n”Astr(complist->exprstr-comp))))))(定义(检查条目10列表)(output-OEIS-entry列表1024 10#t“Kuu 00 2006”(current-output-port))(define(checkentry25 listlet)(output-OEIS-entry listlet 1024 25#t“Kuu 00 2006”(current-output-port))(define(checkentry55 listlet)(output-OEIS-entry listlet 1024 45#t“Kuu 00 2006”(current-output-port))(定义(output-entries-to-file120_10 listlets outfile子日期)(无输出文件的调用(λ(输出)(map(lambda(listlet)(output-OEIS-entry listlet 120 10#f子状态输出))列表))))(定义(output-entries-to-file120_45 listlets outfile子日期)(无输出文件的调用(λ(输出)(map(lambda(listlet)(output-OEIS-entry listlet 120 45#f子状态输出))列表))))(define(combstringpars x)(减少字符串附加“”(cdr x))(定义(output-OEIS-entry listlet checkupto-nseek-len check-only?sub-date输出)(let*((Anum(list-ref listlet 0))(名称(list-ref listlet 1))(恢复(cddr listlet))(c(cond((assoc'c:rest-of)=>combstringpars)(else#f))(e(cond((assoc'e:rest-of)=>combstringpars)(else#f))(f(cond((assoc'f:rest-of)=>组合数组)(else#f))(y(cond((assoc'y:rest-of)=>combstringpars)(else#f))(off(cond((assoc'off:rest-of)=>cadr)(else(error“output-entry:field'off:'(starting offset)required!”)))(关键字(cond((assoc'关键字:rest-of)=>combstringpars)(else#f))(Ainv(cond((assoc'inv:rest-of)=>cadr)(else#f))(comps(cond((关联comps:rest-of)=>cdr)(其他#f));;'(公司:(000040 091207)(014580 091208)(方案(cond((assoc'方案:rest-of)=>cdr)(else#f)))(缩进(cond((assoc'缩进:剩余)=>cdr)(else(list))))(仅检查?(或仅检查?)(检查到n(cond((assoc'upto:rest-of)=>cadr)(否则检查到n))(阿斯特(Anum->str Anum))(Afun(Anum->Afun Anum))(Ainvstr(和Ainv(Anum->str Ainv))(艾恩富恩(和艾恩夫(Anum->Afun Ainv))(base-seq(map(λ(n)(+n关闭))(iota0(-check-upto-n关闭)))(Aseq(映射Afun base-seq))(消极术语?(是否存在?Aseq消极?)(单基第一位-gte-2(条件((第一匹配位置Aseq(λ(x)(>=(abs x)2)))=>1+)(否则为1);;如果没有除0,1或-1以外的项,则使用1作为偏移对的第二个元素。))(更多-零?(秒(和Ainvfun(memq 0 Aseq))=>(λ(r)(memq0(cdr)))(否则#f));;(no-larger-than-abs-1-terms?(适用于所有?Aseq(λ(n)(<(abs n)2)));;不需要。(Y线启动?#f);;还没有。)(第二(安万福;;如果Aseq有多个0,则给定的反函数是从N到N的非递归注入,;;我们必须检查Afun(Ainvfun(x)),否则检查Ainvfen(Afun):(秒(超过一个零?(let((Ainvseq(映射Ainvfun base-seq))(第二个((不等于?(map Afun Ainvseq)base-seq))(格式输出“!!!此函数~A不是注入~A的反函数(检查到n=~A)。\n”Astr Ainvstr公司))(仅检查?(格式输出“是的,此函数~A似乎是非注入~A的反函数(检查到n=~A)。\n”Astr Ainvstr检查)))) ;;出租)((不(等于?(map Ainvfun Aseq)base-seq))(格式输出“!!!~A的逆~A不正确\n”Ainvstr阿斯特))(仅检查?(格式输出“是的,函数~A在计算到n=~A\n”Ainvstr Astr检查-取-n)))))(第二(比较(每个(λ(comp))(仅检查组成输出comp base-seq Aseq Astr?))comps公司)))(第二条(仅检查?(html-out-sequence-A-link Anum输出站)(格式输出端口“=\n”)(html-out-sequence-search-link输出端口Aseq seek-len))(否则(格式化输出端口“%I~A\n”Astr)(设*((max-term-line-len 69);;As(字符串长度“%S A012345”)=10。(第1len部分(len-of-max-full-line-prefix Aseq max-term-line-len)(part2len(len-of-max-full-line-prefix(list-tail Aseq part1len)max-term-line-len));;可能为零!(part3len(len-of-max-full-line-prefix(list-tail Aseq(+part1len part2len)));;可能为零!(第1部分(子列表Aseq 0 part1len)(第2部分(子列表Aseq part1len(+part1len-part2len));;如果part2len=0,则返回results()。(第3部分(子列表Aseq(+part1len part2len)(+part1len part 2len parth3len));;结果()如果part2len=0或part3len=0。)(带输出到端口输出端口(λ()(格式化输出端口“%S~A”Ast)(output_seq(map abs part1))(格式输出端口“,\n”)(第二部分(第二对)(格式化输出端口“%T~A”Ast)(output_seq(map abs part2))(格式输出端口“,\n”)))(第二部分(第三对)(格式输出端口“%U~A”Astr)(output_seq(映射abs部分3))(换行输出端口)))(第二个(否定术语?(格式化输出端口“%V~A”Astr)(output_seq part1)(格式化输出接口“,\n”)(第二部分(第二对)(格式化输出端口“%W~A”Astr)(output_seq part2)(格式化输出端“,\n”)))(第二部分(第三对)(格式输出端口“%X~A”Astr)(output_seq part3)(换行输出端口)))))))) ;;出租*(格式化输出端口“%N~A~A\N”Astr名称)(条件(f(格式化输出端口“%F~A~A\n”Astr F)))(条件(c)(格式化输出端口“%C~A~A\n”Astr C)))(条件(e)(格式输出“%e~A~A\n”Aster e)))(格式输出端口“%H~A A.Karttunen,计算此序列的方案-程序。\n“阿斯特)(第二((双凹口)(第二((memq’GF2X凹痕)(格式输出端口“%H~AGF(2)[X]-多项式序列的索引项\n“阿斯特)))(cond((memq’跨域缩进)(格式输出端口“%H~A由域N和GF(2)[X]之间的同余乘积定义的序列的索引项\n“阿斯特)))(第二个((memq'异或同余契约)(格式化输出“%H~A异或下由同余积定义的序列的索引项\n“阿斯特)))(cond((memq’Lattices凹痕)(格式输出端口“%H~A与格相关的序列的索引项\n“阿斯特)))(第二个(每个压头)(格式输出端口“%H~A自然数排列序列的索引项\n“阿斯特)))(第二次((memq’Catsigperm契约)(格式输出端口“%H~A加泰罗尼亚语自同构的符号置换索引条目\n“阿斯特)))))(第二(Ainv(第二条(不是Y线启动?)(格式化输出“%Y~A”Astr)(设置!Y线启动?#t)))(第二个(更多-零?(格式输出“~A的逆”Ainvstr))(否则(格式输出“反向:~A”Ainvstr)))));;我们也应该检查它们,但不能只使用A数字,因为;;我们需要函数定义。(在这里,老式的Lisp将击败Scheme。)(第二(比较(第二条(不是Y线启动?)(格式输出“%Y~A”Astr)(设置!Y线启动?#t)))(格式输出“a(n)”)(每个(λ(comp))(格式输出“=~A”(complist->exprstr-comp)))comps公司)(格式输出“.”)))(秒(y(第二条(不是Y线启动?)(格式输出“%Y~A”Astr)(设置!Y线启动?#t)))(格式化输出“~A”y)))(如果Y线启动?(换行输出))(格式化输出端口“%K~A~A~A”\nAstr(如果是否定术语?“sign”“nonn”)(如果关键字(字符串附加“,”关键字)“”))(格式化输出端口“%O~A~A,~A\n”Astr off one-based-pos-of-first-term-gte-2一垒)(格式输出端口“%A~A Antti Karttunen(His-Firstname.His-Sorname(AT)gmail.com),~A\n”Astr子日期)(第二个方案(格式输出“%o~A(MIT方案:)\n”Astr)(for-each(lambda(schemedef)(格式输出“%o~A~A\n”Astr schemeded))方案)))(换行输出)) ;;其他) ;;康德) ;;出租*)