map(加泰罗尼亚兰全球,map(旋转手柄,A014486号));
RotateHandshakes:=n->pars2benme(RotateHandshakesP(binexp2pars(n));
RotateHandshakesP:=h->`if`((0=nops(h)),h,[op(car(h)),cdr(h)];#这就是诀窍!在Lisp中:(defun RotateHandshakesP(h)(append(car h)(list(cdr h)))
car:=proc(a)如果0=nops(a),那么([])else(op(1,a)):fi:end:#名称来自Lisp,取列表的第一个元素(head)。
cdr:=proc(a)如果0=nops(a),那么([])else(a[2..nops(a)]):fi:end:#以及。获取列表的其余部分(尾部)。
返回n(z);如果n=2,则返回(n=z);n=0;n/z=0;n/z=0;n/z=0;n/z=0;n/z=0;n/z=0;n/z=0;n/z=0;n/z=0;n/z=0;
RestBalSubSeq:=proc(nn)局部n,z,c;n:=nn;c:=0;while(1=1)do c:=c+(-1)^n;n:=floor(n/2);如果(c>=0),则中断;fi;od;z:=0;c:=-1;而(1=1)do z:=2*z+(n mod 2);c:=c+(-1)^n;n:=floor(n/2);如果(c>=0),则返回(z/2);fi;od;end;
pars2benexp:=proc(p)局部e,s,w,x;如果(0=nops(p)),则返回(0);fi;e:=0;对于p中的s,do x:=pars2benmo(s);w:=floor_log_2(x);e:=e*2^(w+3)+2^(w+2)+2*x;od;RETURN(e);end;
binexp2pars:=proc(n)选项记住;`if`((0=n),[],binexp2parsR(binrev(n));end;
binexp2parsR:=n->[binexp2pars(PeelNextBalSubSeq(n)),op(binexp2pars(RestBalSubSeq(n))];
#CatalanRangglobal程序A057117号,其他失踪的A038776号.
|