;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; http://www.research.att.com/~njas/sequences/juggling.scm.txt;;;; ;;;; 由Antti Karttunen(Antti.Karttune(-AT-)iki.fi)编写,2003年;;;; ;;;; 此文件包含计算序列的Scheme-函数;;;; A084449-A084470、A084489-A084530和A084555-A084557提交给;;;; 尼尔·斯隆的整数序列在线百科全书(OEIS);;;;和可在http://www.research.att.com/~njas/sequences/;;;; ;;;; 此源文件的副本也可从以下网址获得:;;;;网址:http://www.iki.fi/~karttu/matikka/Schemuli/杂耍.scm;;;; ;;;; 此方案代码位于公共域中并运行(至少);;;;在MIT Scheme Release 7.7.x中,可以找到文档;;;; 和预编译的二进制文件(用于运行的各种操作系统;;;; Intel x86体系结构)在URL:;;;; http://www.swiss.ai.mit.edu/projects/scheme(瑞士)/ ;;;; ;;;; 这应该是一个独立模块;;;; ;;;; 请注意,此处提到的“Polster的书”是指:;;;; 伯卡德·波尔斯特(Burkard Polster),《拼凑的数学》(The Mathematics of Juggling),施普林格-弗拉格出版社,2003年;;;; ;;;; 如果您想计算,请在这里随意添加更多代码;;;; 例如,2个、4个和5个球的对应序列;;;; 将编辑后的版本发送到我的地址;;;; (主题为“主题:杂耍.scm.txt”);;;; 或Neil在njas(-at-)research.att.com的地址;;;; 使附件;;;; http://www.research.att.com/~njas/sequences/jugging.scm.txt;;;; 保持最新;;;; ;;;; 上次编辑2。2003年6月,作者:Antti Karttunen;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 在我的系统中,我将其定位为C:\matikka\Schemuli\juggling.scm;; 所以我可以将其加载为:;; (加载“c:\\matikka\\Schemuli\\juggling.scm”);;;; 或编译为:;; (cf“c:\\matikka\\Schemuli\\juggling.scm”“c:\\matikka\\Schemauli\\”);; 然后将编译后的图像加载为:;; (加载“c:\\matikka\\Schemuli\\juggling.com”);;;; (声明(通常整合));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; 复制自网址:http://www.iki.fi/~kartturi/matikka/Schemuli/definech.scm;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 定义一元缓存函数。语法如下;; (定义(函数参数)…)方案的。;; 注意,此函数和其他缓存函数依赖于MIT方案;; 特性,比如向量被初始化为包含f;; 而且#f实际上和()是一样的。待更正。;; 添加了这10个。2002年7月,避免分配灾难;; 由于粗心使用缓存的整数函数导致:(定义*MAX-CACHE-SIZE-FOR-DEFINEC*290512);;是131072(定义语法定义(语法规则()((定义(名称参数)e0…)(定义名称(letrec((_缓存_(向量#f#f#f#f#f#f#f#f#f#f#f#f#f#f))(姓名(lambda(参数)(cond((null?arg)_cache_)((>=arg*最大尺寸-尺寸-定义*)e0。。。)(否则(如果(>=arg(矢量长度_cache_))(设置!_缓存_(矢量增长_高速缓存_(最小值*最大尺寸-定义值*(最大值(1+arg)(*2(向量长度_缓存_)))))))(或(vector-ref_cache_arg)(λ(res)(向量集!缓存参数资源)物件)(开始e0…))))) ; 康德))) ; letrec-定义名称) ; letrec公司) ;; (定义名称…))) ;; 句法规则);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; 复制自网址:http://www.iki.fi/~kartturi/matikka/Schemuli/lstfuns1.scm;;;; (总是有用的!);;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(定义(compose-funs.funlist)(cond((null?funlist)(λ(x)x))(else(lambda(x)((car funlist)((应用compose-funs(cdr-funnist))x))))(定义反向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结果)))));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; 复制自网址:http://www.iki.fi/~kartturi/matikka/Schemuli/intfuns1.scm;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(定义(first_pos_with_funs_val_gte函数n)(let循环((i 0))(如果(>=(fun i)n)i(回路(1+i)))))(定义(二项式n_2n)(/(*(-1+n)n)2));; 在某些情况下,由于;; IEEE 64位浮点数字的有限精度。;; 这一点是什么,以及如何使用严格的fixnum-only重新编码这些内容;; 方式?(我需要一个fixnum-only平方根算法……)(定义(A025581 n);;方形{0..inf}数组的X分量(列)(-(二项式n_2(1+(楼面->精确(flo:+0.5(flo:sqrt(精确->不精确(*2(1+n)))));; (地图A002262(cons 0(iota 20)))-->(0 0 1 0 1 2 1 2 3 0 1 2 3 4 0 1 3 4 5)(定义(A002262 n);;正方形{0..inf}阵列的Y分量(行)(-n(二项式n_2(楼面->精确(flo:+0.5(flo:sqrt(精确->不精确(*2(1+n)))))(定义(A002024 n);;从n=1开始,重复n次。(地板->精确(+(/12)(平方米(*2n))))(定义(A003056 n);;从n=0开始,重复n+1次。(楼层->精确(-(平方(*2(1+n)))(/1 2))))(定义(A000265 n)(/n(A006519 n));;从n中删除2s;或n的最大奇数除数。(定义(A006519 n);;2除以n的最高幂:1,2,1,4,1,2,1,8,1,2,4,1,2,1,16(秒((零?n)0)(else(let循环((n n)(i 1))(cond((奇数?n)i)(其他(循环(地板->精确(/n 2))(*i 2))))))));; 注意,(A007814 33574912)=12。(定义(A007814 n);;A006519的指数。(秒((零?n)0)(else(let循环((n n)(i 0))(cond((奇数?n)i);; (else(循环(修复:lsh n-1)(1+i));;危险代码。(其他(循环(地板->精确(/n 2))(1+i)))))))(定义(A007088 n);;0,1,10,11,100,101,110,111,1000,... (以十进制显示二进制形式)(让循环((z 0)(i 0)(n n))(如果(零?n)z(z)(循环(+z(*(导出10i)(模n 2)))(1+i)(地板->精确(/n 2))))));; 基于一个:(定义(A018900 n)(+(导出2(A002024 n))(导出2)(A002262(-1+n)));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 一些异步的无限杂耍序列,带有状态和;;;; throw-heights(即通常的“siteswap”符号);;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(定义(N2Z n)(*(导出-1 n)(楼层->精确(/n 2)))(定义(Z2n z)(+(*2(abs z)))(如果(不是(正?z))1 0));; (请注意,零不是正数。);; (地图N2Z(iota 30));; (0 1 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -12 13 -13 14 -14 15);; 基本上是A001057,但使用偏移量=1而不是0。;; 这六个是基于一的:(定义A065164(组合式Z2N 1+N2Z))(定义A065165(组合式Z2N 1+1+N2Z))(定义A065166(组合式Z2N 1+1+1+N2Z))(定义A065168(组合式Z2N-1+N2Z))(定义A065169(组成函数Z2N-1+-1+N2Z))(定义A065170(组合式Z2N-1+-1+-1+N2Z));; 例如。:;; (地图A065166(iota 20))-->(6 8 4 10 2 12 1 14 3 16 5 18 7 20 9 22 11 24 13 26);; (地图A065170(iota 20))-->(7 5 9 3 11 1 13 2 15 4 17 6 19 8 21 10 23 12 25 14)(定义(反射到Z,通过运行Z)(cond((零?z)z);;在节拍0处进行零掷。((正?z)(throw-fun z))(else;;在零之前跳动。。。(let循环((i(-z)))(秒((零?i)(*2(-z)))(=(+i(通过式i))(-z))(-(-z)i))(else(循环(-1+i)))) )));; 应用“杂耍序列的逆”思想;; (见Polster的书,第25-27页)到无限排列:;; (这一个用于3球序列。)(定义(反射到Z-b3通过运行permfun Z)(cond((正?z)(throw-fun z))((<=(-z)3)(*2(-z))(其他(throw-fun(permfun(-(-z)3)))));; 84449--84463。(定义(A084449 n);;A084451中7的位置(基态)。(秒((零?n)n)(否则(让回路((i(1+(A084449(-1+n))))(条件((=(A084451 0)(A08445 1 i))i)(其他(循环(1+i))))))));; A084449的第一个差异:(定义(A084465 n)(-(A084449(1+n))(A08444 n))(定义(A084450 n)(A007088(A084451 n))(定义(A084451 n)(如果(零?n)7 ;; 三个球(位)的接地状态。(/(-1+(+(A084451(-1+n)))(导出2(A0844.52 n))2)));; (定义(A084451v2 n);;旧版本。;; (秒((零?n)7);;三个球(钻头)的地面状态。;; (其他(+(楼层->精确(/(A084451v2(-1+n))2));; (地板->精确(出口2(-(A084452 n)1)));; );; );; );; );; (定义(A084452 n);;单基:4,4,4,1,5,5,0,0,6,3,5,(let(预状态(A084451(-1+n)))(秒((偶数?prevstate)0);;必须掷零!(否则;; (呼叫-无电流控制;; (λ(返回)(放出回路((t1))(cond(偶数?(地板->精确(/prevstate(expt 2 t)));;自由位置?(让inloop((c(+(floor->exact(/prevstate 2)))(出口2(-1+t))))(i(-1+n)))(秒((<i 0)t);;(返回t)((=c(A084451 i))(外循环(1+t))(其他(inloop c(-1+i)))))(其他(outloop(1+t))));; );; )))))(定义(A084453 n)(-(+n(A08445 2 n))3))(定义(A084454 n)(let loop((i 1)))(cond((=n(A08445 3 i))i)(else(loop(1+i))));; 反向为A084466。(定义A084455(组合式Z2N(λ(z)(+z(反射到z A084452 z))N2Z公司))(定义A084455v2(组合式Z2N(λ(z)(+z(反射到z-b3 A084452 A084454 z))N2Z公司))(定义(A084466 n)(let loop((i 1)))(cond((=n(A084455 i))i)(else(loop(1+i))));;;;;;;;;;;;(定义(A084456 n)(A007088(A0844.57 n))(定义(A084457 n)(如果(零?n)7 ;; 三个球(钻头)的地面状态。(/(+-1(A084457(-1+n))(出口2(A0844.58 n)))2)))(定义(A084458 n);;一个基于:4,4,6,0,5,8,0,0,3,7,0,7,0,9,0,7,0,10,。。。(let(预状态(A084457(-1+n)))(第二((偶数?prevstate)0);;必须掷零!(否则(让外循环(t 1))(cond(偶数?(地板->精确(/prevstate(expt 2 t)));;自由位置?(让inloop((c(A000265(+(floor->exact(/prevstate 2))))(出口2(-1+t)))))(i(-1+n)))(秒((<i 0)t)((=c(A084457 i))(外循环(1+t))(其他(内循环c(-1+i))))))(其他(outloop(1+t))))))))(定义(A084459 n)(-(+n(A0844.58 n))3))(定义(A084460 n)(let loop((i 1)))(cond((=n(A084459 i))i)(else(loop(1+i))))(定义A084461(组合式Z2N(λ(z)(+z(反射到z A084458 z))N2Z公司))(定义A084461v2(组合式Z2N(λ(z)(+z(反射到z-b3 A084458 A084460 z))N2Z公司))(定义(A084462 n)(let loop((i 1)))(cond((=n(A08446 1 i))i)(else(loop(1+i))));; 基于一个:(定义(A084463 n);;84457中偶数状态的位置,即A084458-1中的零。(条件((=1n)3)(否则(让回路((i(1+(A084463(-1+n))))(条件(偶数?(A084457 i))i)(else(循环(1+i)))))));; 84457中奇数状态的位置,即A084458-1中的非零throws。以个人为基础。(定义(A084464 n)(秒((=1n)0)(否则(让回路((i(1+(A084464(-1+n))))(条件((奇数?(A084457 i))i)(else(循环(1+i)))))));; 一个基于:(定义(A084467 n)(A084457(A08446 n));; (地图A084467(iota 22));; (7 11 13 19 25 35 21 37 41 69 49 67 97 131 73 137 81 133 161 261 193 259);; (保持匹配项(映射A084457(iota0 64))奇数?);; (7 11 13 19 25 35 21 37 41 69 49 67 97 131 73 137 81 133 161 261 193 259 145 265 289);; 基于一个:(定义(A084468 n)(1+(*2(A018900 n)));; (地图A084468(iota 22));; (7 11 13 19 21 25 35 37 41 49 67 69 73 81 97 131 133 137 145 161 193 259)(定义(A084469 n)(让回路((x(A084467 n))(i 1))(条件((=x(A084468 i))i)(其他(循环x(1+i))))))(定义(A084470 n)(让回路((x(A084468 n))(i 1))(条件((=x(A084467 i))i)(else(循环x(1+i)))));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; 从地面开始和返回地面的连续较大环路;;;; 状态(具有各种条件);;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 这个实现非常简单。;; 合并功能会更有效;; 下一个测试矢量!还有gs2gs?一起,别说了;; 关于存在_unranking算法的事实;; 对于type=0的地面状态序列,除了我担心;; 我们找不到会返回;; 按词汇升序排列的序列。;; Martin Probert的书见Polster的书,第28-29页;; “选择图案程序”,或:;; 马丁·普罗伯特。四球杂耍。由Veronika Probert出版,英国,1995年。;;;; (即使有这个缺点,直接取消分级算法也很有用;; 例如,计算A084529的项时)。;;(定义(vec-to-ec电视)(let循环((i 0)(s 0))(秒(=(矢量长度电视)i)s)(其他(循环(1+i)(+(*10s)(矢量参考tv i))))));; tv是一个向量,p=(向量长度tv),i=运行索引,初始值为0。;; (最后可能?(矢量)2 0 0)-->#t;; (最后可能?(矢量3)3 1 0)-->#t;; (最后可能?(矢量3 1)3 2 0)-->#t;; (最后可能?(矢量5 3 1)5 3 0)-->#t;; (最后可能?(矢量6 4 2 0)6 4 0)-->#t;; (最后可能?(矢量7 5 3 10)7 5 0)-->#t;; (最后可能?(向量8 6 4 2 0)8 6 0)-->#t(定义(最后可能?tv u p i)(条件((=i p)#t)((=(矢量参考tv i)u)(最后可能?tv(最大值(-u 2)0)p(1+i)))(其他#f)))(定义(下一测试矢量!tv b);;b是球的数量。(let(p(矢量长度tv));;我们(子)模式的时期。(秒(最后可能?tv(+p(-1+b))p0)(make-vector(1+p)b);;返回一个元素更长的向量[b,b,b…,b])(else;;以里程表为基准从右向左递增:(let循环((i(-1+p))(u b))(秒((<i 0))(错误“next-test-vector!should not occurrent:tv=”tv“i=”i“u=”u“b=”b))(=(矢量参考tv i)u);;最高职位。这个方法的价值?(矢量集!tv i 0);;替换为零掷(回路(-1+i)(1+u));;继续向左。)(else;;找到一个尚未达到最大高度的位置。(矢量集!tv i(1+(矢量参考tv i));;增量电视;;然后返回。)))))));;;; 上面的工作原理是这样的。;; 或者,我们可以取b!的倍数!,;; 并丢弃b-1最低有效数字(零);; 从他们的阶乘展开。;;;; (开始(set!v(next-test-vector!(vector)3))v)-->#(3);; (开始(set!v(next-test-vector!v 3))v)-->#(3 3);; (开始(设置!v(下一个测试向量!v 3))v)-->#(4 0);; (开始(set!v(next-test-vector!v 3))v)-->#(4 1);; (开始(set!v(next-test-vector!v 3))v)-->#(4 2);; (开始(set!v(next-test-vector!v 3))v)-->#(3 3 3);; (开始(set!v(next-test-vector!v 3))v)-->#(3 4 0);; (开始(设置!v(下一个测试向量!v 3))v)-->#(3 4 1);; (开始(设置!v(下一个测试向量!v 3))v)-->#(3 4 2);; (开始(设置!v(下一个测试向量!v 3))v)-->#(3 4 3);; (开始(set!v(next-test-vector!v 3))v)-->#(4 0 0);; (开始(set!v(next-test-vector!v 3))v)-->#(4 0 1);; (开始(set!v(next-test-vector!v 3))v)-->#(4 0 2);; (开始(set!v(next-test-vector!v 3))v)-->#(4 0 3);; (开始(set!v(next-test-vector!v 3))v)-->#(4 1 0);; (开始(设置!v(下一个测试向量!v 3))v)-->#(4 1 1);; (开始(set!v(next-test-vector!v 3))v)-->#(4 1 2);; (开始(set!v(next-test-vector!v 3))v)-->#(4 1 3);; (开始(set!v(next-test-vector!v 3))v)-->#(4 2 0);; (开始(set!v(next-test-vector!v 3))v)-->#(4 2 1);; (开始(set!v(next-test-vector!v 3))v)-->#(4 2 2);; (开始(设置!v(下一个测试向量!v 3))v)-->#(4 2 3);; (开始(set!v(next-test-vector!v 3))v)-->#(4 3 0);; (开始(设置!v(下一个测试向量!v 3))v)-->#(4 3 1);; (开始(设置!v(下一个测试向量!v 3))v)-->#(4 3 2);; (开始(设置!v(下一个测试向量!v 3))v)-->#(4 3 3);; (开始(set!v(next-test-vector!v 3))v)-->#(4 4 0);; (开始(设置!v(下一个测试向量!v 3))v)-->#(4 4 1);; (开始(设置!v(下一个测试向量!v 3))v)-->#(4 4 2);; (开始(设置!v(下一个测试向量!v 3))v)-->#(4 4 3);; (开始(set!v(next-test-vector!v 3))v)-->#(5 0 0);; (开始(set!v(next-test-vector!v 3))v)-->#(5 0 1);; (开始(set!v(next-test-vector!v 3))v)-->#(5 0 2);; (开始(set!v(next-test-vector!v 3))v)-->#(5 0 3);; (开始(设置!v(下一个测试向量!v 3))v)-->#(5 1 0);; (开始(设置!v(下一个测试向量!v 3))v)-->#(5 1 1);; (开始(设置!v(下一个测试向量!v 3))v)-->#(5 1 2);; (开始(设置!v(下一个测试向量!v 3))v)-->#(5 1 3);; (开始(设置!v(下一个测试向量!v 3))v)-->#(5 2 0);; (开始(设置!v(下一个测试向量!v 3))v)-->#(5 2 1);; (开始(设置!v(下一个测试向量!v 3))v)-->#(5 2 2);; (开始(设置!v(下一个测试向量!v 3))v)-->#(5 2 3);; (开始(设置!v(下一个测试向量!v 3))v)-->#(5 3 0);; (开始(设置!v(下一个测试向量!v 3))v)-->#(5 3 1);; (开始(设置!v(下一个测试向量!v 3))v)-->#(3 3 3 3);; ;; type=0:一切正常。;; type=1:中间不允许有基态。;; type=2:不应访问任何状态两次(即仅收集“prime”循环)。;; (gs2gs?(矢量3)3 0)-->#t;; (gs2gs?(矢量3 3)3 0)-->#t;; (gs2gs?(矢量3 3 3)3 0)-->#t;; (gs2gs?(矢量3 3 3)3 1)-->();; (gs2gs?(矢量3 3 3)3 2)-->();; (gs2gs?(矢量42)30)-->#t;; (gs2gs?(矢量4 2)3 1)-->#t;; (gs2gs?(矢量4 2)3 2)-->#t;; (gs2gs?(矢量4 2 3)3 0)-->#t;; (gs2gs?(矢量4 2 3)3 1)-->();; (gs2gs?(矢量4 2 3)3 2)-->();; (gs2gs?(矢量4 4 1)3 0)-->#t;; (gs2gs?(矢量4 4 1)3 1)-->#t;; (gs2gs?(矢量4 4 1)3 2)-->#t;; (gs2gs?(矢量5 3 1)3 0)-->#t;; (gs2gs?(矢量5 3 1)3 1)-->#t;; (gs2gs?(矢量5 3 1)3 2)-->#t;; (gs2gs?(矢量4 5 1 2)3 0)-->#t;; (gs2gs?(矢量4 5 1 2)3 1)-->#t;; (gs2gs?(矢量4 5 1 2)3 2)-->()(定义(gs2gs?tv b型)(假设(gs(-1+(expt 2b)));;基态,例如b=3时为7。(p(矢量长度电视);;我们暂定模式的时期)(let循环(s gs)(i 0)(已访问(列表)));; 完成后,只有当我们返回到地面状态时才返回true:(秒((=i p)(=s gs))(否则(let((tt(矢量参考tv i)))(条件(和(=1类型)(>i 0)(=s gs))#f)(和(=2种类型)(访问的内存数量))#f)((和(偶数)(非(零?tt))#f);;应为零抛!(不(偶数?(地板->精确(/s(出口2tt))))#f;;碰撞!)(否则(回路(地板->精确(/(+s(expt 2tt))2))(1+i)(如果(=2类)(访问了cons)访问了))))))) ;; 康德) ;; let循环))(定义(第n个成功测试向量-3-0 n)(条件((零?n)(矢量))(否则(让循环(tv(next-test-vector!(矢量复制(第n次成功测试矢量-0(-1+n)))))(cond((gs2gs?tv 30)电视)(else(循环(下一测试矢量!tv 3)))))));; 不像上面那样有无数个简单的函数,;; 现在我们有了下面给出的复杂函数定义函数,;; 我们可以将其重新用于所有可能的变体。;; 例如,我们可以将上述函数的副本定义为:;; (定义另一个成功的测试向量3-0;; (第n次成功测试vec 3 0的cacfun);; );;(定义(cacfun-for-nh-successful-test-vec球类型)(letrec((_缓存_(向量#f#f#f#f#f#f#f#f#f#f#f#f#f#f))(belgthor;;我们在这里定义和返回的函数。(λ(n)(cond((非(整数?n))_cache_);;只是为了调试。(否则(如果(>=n(向量长度_缓存_))(设置!_缓存_(矢量增长缓存_(最大值(1+n)(*2(矢量长度_cache_))))))(或(vector-ref _cache n)(λ(结果)(向量集!缓存n结果)结果)(条件((零?n)(矢量))(否则(让循环(tv(next-test-vector!(矢量复制(belgthor(-1+n)))))(cond((gs2gs?tv球型)tv)(否则(循环(下一测试矢量!电视球))))))) ;; lambda-form的调用) ;; ) ;; 其他的) ;; 康德) ; λ(n))) ;; letrec-定义。比利时) ;; letrec公司);; 我们真正应该拥有的是将扩展到;; 这,其调用的正文部分作为参数插入;; 内部的羔羊形态。;; 即,我们可以定义返回的函数的宏;; lambda-forms(缓存其唯一参数)。(定义(cacfun-for-posfun-fun-start-from elem)(letrec((_缓存_(向量#f#f#f#f#f#f#f#f#f#f#f#f#f#f))(tvimadur;;我们在这里定义和返回的函数。(λ(n)(cond((非(整数?n))_cache_);;只是为了调试。(否则(如果(>=n(向量长度_cache_))(设置!_缓存_(矢量增长缓存_(最大值(1+n)(*2(矢量长度_cache_))))))(或(vector-ref _cache n)(λ(结果)(向量集!缓存n结果)结果)(秒((=从n开始)n)(否则(让循环(i(如果(=从n开始))n个(1+(tvimadur(-1+n)))))(cond((=(fun i)元素)i)(else(循环(1+i))))))) ;; lambda-form的调用) ;; ) ;; 其他的) ;; 康德) ; λ(n))) ;; letrec-定义。特维马杜尔) ;; letrec公司)(定义第n个成功测试-vec-3-0(cacfun-for-nh-successful-test-vec-30))(定义第n个成功测试-vec-3-1(cacfun-for-nh-successful-test-vec-31))(定义第n个成功测试-vec-3-2(cacfun-for-nh-successful-test-vec-32));; 84489--84530留给我们。;; 非负整数和自然数的前12个置换;; 由这三个无限siteswap序列诱导:;; 一个基于:(定义(A084489 n)(-(+n(A084501 n))3))(定义(A084490 n)(let loop((i 1)))(cond((=n(A084489 i))i)(else(loop(1+i))))(定义A084491(组合式Z2N(λ(z)(+z(反射到z A084501 z))氮二氮))(定义A084491v2(组合式Z2N(λ(z)(+z(反射到z-b3 A084501 A084490 z))N2Z公司))(定义(A084492 n)(let loop((i 1)))(cond((=n(A08449 1 i))i)(else(loop(1+i))));;;;;;;;;;;;;(定义(A084493 n)(-(+n(A084511 n))3))(定义(A084494 n)(let loop((i 1)))(cond((=n(A08449 3 i))i)(else(loop(1+i))))(定义A084495(组合式Z2N(λ(z)(+z(反射到z A084511 z))N2Z公司))(定义A084495v2(组合式Z2N(λ(z)(+z(反射到z-b3 A084511 A084494 z))N2Z公司))(定义(A084496 n)(let loop((i 1)))(cond((=n(A08449 5 i))i)(else(loop(1+i))));;;;;;;;;;;;;(定义(A084497 n)(-(+n(A084521 n))3))(定义(A084498 n)(let loop((i 1)))(cond((=n(A08449 7 i))i)(else(loop(1+i))))(定义A084499(组合式Z2N(λ(z)(+z(反射到z A084521 z))N2Z公司))(定义A084499v2(组合式Z2N(λ(z)(+z(反射到z-b3 A084521 A084498 z))N2Z公司))(定义(A084530 n)(let loop((i 1)))(cond((=n(A084499 i))i)(else(loop(1+i))));; Siteswap-sequences(throws):A084501、A084511、A084521;; Siteswap序列(有限十进制表示法):A084502、A084512、A084522;; 相关状态序列(十进制表示法):A084503、A084513、A084 523;; 关联状态序列(二进制表示法):A084504、A084514、A084 524;; 下一个的部分总和:A084505、A084515、A084 525;; 每个gs->gs站点交换子模式的长度,~以上的第一个差异-6;; A0845[0-2]1中n的第一个位置:-7;; 1的位置-8;; 他们的第一个差异(每个时期有多少个站点交换)-9;; 除州序列或另有说明外,所有这些都是基于一的。;; 这些说明了在哪个站点交换子模式(如A0845所示{0,1,2}2);; 是A0845的第n项{0-2}1:(定义(A084500 n)(第一个pos_with_funs_val_gte A084505 n))(定义(A084510 n)(first_pos_with_funs_val_gte A084515 n))(定义(A084520 n)(第一个pos_with_funs_val_gte A084525 n));; (相等?(地图A084510(iota 64))(地图A084 520(ioda 64)))-->#t;; (A084510 65)-->19;; (A084520 65)-->18(定义(A084501 n)(矢量参考(第n次成功测试-第3-0次(A084500 n))(-n(1+(A084505(-1+(A08.4500 n))))))(定义(A084511 n)(矢量参考(第n次成功测试-第3-1次(A084510 n))(-n(1+(A084515(-1+(A084 510 n))))))(定义(A084521 n)(矢量参考(第n次成功测试-第3-2次(A084520 n))(-n(1+(A084525(-1-(A084520 n))))));; Siteswap序列(有限十进制表示法):A084502、A084512、A084522(定义A084502(compose-funs vec-to-dec nth-successful-test-vec-3-0)(定义A084512(compose-funs vec-to-dec nth-successful-test-vec-3-1)(定义A084522(compose-funs vec-to-dec nth-successful-test-vec-3-2);; 这些是基于零的:(定义(A084503 n)(条件((零?n)(-1+(导出23)));;7=三个球(位)的地面状态。(其他(/(+-1(A084503(-1+n)))(导出2(A084501 n))2))))(定义(A084513 n)(条件((零?n)(-1+(导出23)));;7=三个球(位)的地面状态。(其他(/(+-1(A084513(-1+n)))(导出2(A08451 n))2))))(定义(A084523 n)(cond((零?n)(-1+(expt 2 3)));;7=三个球(位)的地面状态。(其他(/(+-1(A084523(-1+n)))(导出2(A0845.21 n))2))));; 也:(定义A084504(组合框A007088 A084503))(定义A084514(组合框A007088 A084513))(定义A084524(组合框A007088 A084523));; 下一个的部分和,从零开始。(定义(A084505 n)(如果(零?n)n(+(A08450 5(-1+n))(A08450.6 n)))(定义(A084515 n)(如果(零?n)n(+(A084551(-1+n))(A0845126 n)))(定义(A084525 n)(如果(零?n)n(+(A08452(-1+n))(A0841526 n)));; A084506(130)=6(定义A084506(合成-运行向量长度n个-成功-测试-矢量-3-0))(定义A084516(组成函数向量长度nth-successful-test-vec-3-1))(定义A084526(合成-运行向量长度n-成功-测试-矢量-3-2));; 从零开始,A0845[0-2]1中首次出现n:(定义(A084507 n)(let loop((i 1)))(cond((=n(A084501 i))i)(else(loop(1+i))))(定义(A084517 n)(let loop((i 1)))(cond((=n(A0845121 i))i)(else(loop(1+i))))(定义(A084527 n)(let loop((i 1)))(cond((=n(A08452 1 i))i)(else(loop(1+i))));; charfun-for-A084508首次与A007489的特征函数不同;; 当n=129时(前者的值为1,后者的值为下次;; n=153时的值1。);; 不要提交这三项,OEIS中已经有足够的打击:(定义(字符为A084508 n)(-(A084506(1+n))(A08450.6 n))(定义(charfun-for-A084518 n)(-(A084516(1+n))(A0845126 n))(定义(charfun-for-A084528 n)(-(A084526(1+n))(A08452 n))(定义A084449v2(cacfun-for-posfun A084451 0 7));; 请参见;; http://www.research.att.com/cgi-bin/access.cgi/as/njas/sequences/eisA.cgi?Anum=A007489;; (阶乘的部分和,总和k!,k=1..n.0,1,3,9,33153,;; (地图A084508(iota 7))-->(1 3 9 33 129 513 2049)(定义(A084508 n)(如果(零?n)n(+(A08450.8(-1+n))(A0845009 n)))(定义A084508v2(cacfun-for-posfun-charfun-for-A084508 1 1))(定义A084518(cacfun-for-posfun-charfun-for-A084518 1 1))(定义A084528(cacfun-for-posfun-charfun-for-A084528 1 1));; 第一个基本等价于:1,2,然后是:(检查到n=8->6144)。;; A002023=6,24,9638415366144245769830439321615728646291456?;; 姓名:6*4^n。;; 是的,见伯卡德·波尔斯特(Burkard Polster),《拼凑的数学》(The Mathematics of Juggling),斯普林格·弗拉格(Springer-Verlag),2003年,第48页。;; (ISBN 0-387-95513-5);; 这些不在OEIS中:;; (地图A084509(iota 8))-->(1 2 6 24 96 384 1536 6144 24576);; (地图A084519(iota 7))-->(1 1 3 13 47 173 639 2357 8695);; (地图A084529(iota 7))-->(1 1 3 12 42 142 502 1702 5878)(定义(A084509 n)(如果(<n 4)(!n)(*4(A08450.9(-1+n))))(定义(A084509v2 n)(如果(=1 n)(A08450 8 1)(-(A08450.8 n)(P084508(-1+n))))(定义(A084519 n)(如果(=1 n)(A084518 1)(-(A084518 n)(A084518(-1+n)))))(定义(A084529 n)(如果(=1 n);; 枫树代码:;;;; A084509:=n->`如果`((n<4),n!,6*(4^(n-3)));;; with(组合);A084519:=过程(n)选项记忆;局部c,i,k;;; A084509(n)-添加(添加(mul(A084519(i),i=c),c=成分(n,k)),k=2..n);;; 结束;;;;; 是否有一种更简单的方法来定义A084519???;; 另请参见http://www.cs.brandeis.edu/~ira/papers/enum.pdf第8页;; 对于不可分解排列(A003319)及其g.f.:;; > powseries[powcreate](f(n)=n!):tps形式(f,x,8);;; ;; 2 3 4 5 6 7 8;; 1+x+2 x+6 x+24 x+120 x+720 x+5040 x+O(x);; ;; > g:=粉末[逆](f):tps形式(g,x,8);;; ;; 2 3 4 5 6 7 8;; 1-x-x-3 x-13 x-71 x-461 x-3447 x+O(x);; ;; > ;; > powseries[powcreate](h(n)=`if`((n<4),n!,6*(4^(n-3))):粉末[tpsform](h,x,8);;; ;;2 3 4 5 6 7 8;; 1+x+2 x+6 x+24 x+96 x+384 x+1536 x+O(x);; ;; > j:=幂级数[逆](h):幂级数[tpsform](j,x,9);;; ;; 2 3 4 5 6 7 8 9;; 1-x-x-3 x-13 x-47 x-173 x-639 x-2357 x+O(x);; ;; > [序列(A084509(n),n=1..12)];;; ;; [1, 2, 6, 24, 96, 384, 1536, 6144, 24576, 98304, 393216, 1572864];; ;;>[序列(A084519(n),n=1..12)];;; ;; [1, 1, 3, 13, 47, 173, 639, 2357, 8695, 32077, 118335, 436549];; ;; > 内底([seq(A084509(n),n=1..12)]);;; ;; [1,1,3,13,47,173,639,2357,8695,32077,118335,436549];; ;; > 倒置([seq(A084519(n),n=1..12)]);;; ;; [1, 2, 6, 24, 96, 384, 1536, 6144, 24576, 98304, 393216, 1572864];;;; 84551 --- 84560;; 基于零,A084452和A084458中首次出现n:;; 2曾经发生过吗?从n=3开始计算。尚未提交。;; (定义(A084552 n)(let loop((i 1)))(cond((=n(A084452 i))i)(else(loop(1+i))));; (定义(A084558 n)(let loop((i 1)))(cond((=n(A084458 i))i)(else(loop(1+i))));; 接下来还有更多。;; 基于零:(定义(!n)(如果(零?n)1(*n(!(-1+n))));;A000142号(定义(A007489n)(如果(零?n)0(+(!n)(A007499(-1+n))))(定义(A084555 n)(如果(零?n)0(+(A0845506 n)(A08455(-1+n)));;下一次PSUM(定义(A084556 n)(first_pos_with_funs_val_gte A007489 n);;n出现n!次。(定义(A084557 n)(first_pos_with_funs_val_gte A084555 n);;n发生A084556(n)次;; (相等?(地图A084505(iota0 129));; (A084505 130)-->605;; (A084555 130)-->604;; (相等?(地图A084500(iota0 604));; (A084500 605)-->130;; (A084557 605)-->131;; (相等?(地图A084506(iota0 130))(地图A084 556(iota 130)))-->();; (A084506 130)-->6;; (A084556 130)-->5;; (output-check-html“C:\\matikka\\seqs\\juggling.htm”检查杂耍119 45#f)(定义支票杂耍(列表;; 排列:(列表120 1 84469 A084469 AO84470)(列表120 1 84470 A084470 P084469)(列表120 1 84453 A084453和A084454)(列表120 1 84454 A084454 AO84453)(列表120 1 84455 A084455 A084466(列表A084455v2))(列表120 1 84466 A084466 A084455)(列表120 1 84459 A084459 AO84460)(列表120 1 84460 A084460和A084459)(列表120 1 84461 A084461 P084462(列表A084461v2))(列表120 1 84462 A084462 AO84461)(列表120 1 84489 A084489 AO84490)(列表120 1 84490 A084490 P084489)(列表120 1 84491 A084491 P084492(列表A084491v2))(列表120 1 84492 A084492 P084491)(列表120 1 84493 A084493 P084494)(列表120 1 84494 A084494 AO84493)(列表120 1 84495 A084495 P084496(列表A084495v2))(列表120 1 84496 A084496 P084495)(列表120 1 84497 A084497 P084498)(列表120 1 84498 A084498 P084497)(列表120 1 84499 A084499 P084530(列表A084499v2))(列表120 1 84530 A084530 P084499);; 其他,与A084452和A084458相关:(列表15 0 84449 A084449#f(列表A084449v2))(列表14 0 84465 A084465)(列表80 0 84450 A084450)(列表100 0 84451 A084451)(列表120 1 84452 A084452)(列表80 0 84456 A084456)(列表100 0 84457 A084457)(列表120 1 84458 A084458)(列表100 1 84463 A084463)(列表100 1 84464 A084464)(列表100 1 84467 A084467)(列表100 1 84468 A084468);; 与三球基态序列的三种变体有关:(列表100 0 84500 A084500)(列表100 0 84510 A084510)(列表100 0 84520 A084520)(列表120 1 84501 A084501)(列表120 1 84511 A084511)(列表120 1 84521 A084521)(列表120 1 84502 A084502)(列表120 1 84512 A084512)(列表120 1 84522 A084522)(列表100 0 84503 A084503)(列表100 0 84513 A084513)(列表100 0 84523 A084523)(列表80 0 84504 A084504)(列表80 0 84514 A084514)(列表80 0 84524 A084524)(列表100 0 84505 A084505)(列表100 0 84515 A084515)(列表100 0 84525 A084525)(列表130 1 84506 A084506)(列表120 1 84516 A084516)(列表120 1 84526 A084526)(列表12 0 84507 A084507)(列表12 0 84517 A084517)(列表12 0 84527 A084527)(列表62 0 84508 A084508)(列表9 1 84518 A084518)(列表9 1 84528 A084528)(列表80 1 84509 A084509)(列表8 1 84519 A084519)(列表8 1 84529 A084529)(列表130 0 84555 A084555)(列表130 0 84556 A084556)(列表130 0 84557 A084557)))