Help:=proc():print(`ToB(a,k),Rule1(a),ApRule(Li,a)`): print(`Hist(a,k)`): end: #ToB(a,k): inputs a pos. integer and pos. #integer k and outputs the binary rep. #of a as a list of size k ToB:=proc(a,k) if k=0 then if a=0 then RETURN([]): else RETURN(FAIL): fi: fi: if a<0 or a>=2^k then RETURN(FAIL): fi: if a>=2^(k-1) then RETURN([1,op(ToB(a-2^(k-1),k-1))]): else RETURN([0,op(ToB(a,k-1))]): fi: end: Rule1:=proc(a) local r,i,Li,T: r:=ToB(a,8): Li:=[seq(ToB(-i,3),i=-7..0)]: for i from 1 to nops(Li) do T[Li[i]]:=r[i]: od: op(T): end: #ApRule(Li,a): Applies NKS rule a to the list Li ApRule:=proc(Li,a) local Li1,T: T:=Rule1(a): Li1:=[0,op(Li),0]: [seq(T[[op(i..i+2,Li1)]],i=1..nops(Li1)-2)]: end: #The History for K iterations starting at #0...010...0 Hist:=proc(a,K) local Li1,Li2,i: Li1:=[0$K,1,0$K]: Li2:=[Li1]: for i from 1 to K-1 do Li1:=ApRule(Li1,a): Li2:=[op(Li2),Li1]: od: Li2: end: