# A224762 and A224763 # Compute fractional curling number of an array or list a of length n. fcn:=proc(a,n) local sw1,sw2,swt1,i1,i2,tmax,k,kp,lpp,lp,n1,n2,n3,t1; if n=1 then RETURN(1); fi; if n=2 then if a[1]=a[2] then RETURN(2) else RETURN(1); fi; fi; k:=1; # guess value of n1 for n1 from n by -1 to 2 do # do n1 sw1:=-1; # guess value of n2 for n2 from n1-1 by -1 to 1 do # do n2 #lprint("n1,n2 ",n1,n2); # do we have a match for P prime? lpp:= n-n1+1; sw2:=-1; if lpp <= n2 then # if lpp for i1 from 1 to lpp do if a[n-i1+1] <> a[n2-i1+1] then sw2:=1; break; fi; od: #lprint("n,n1,n2,sw2,i1 ",n,n1,n2,sw2,i1); if sw2 = -1 then # if sw2 # is there an earlier copy of P? n3:=n2-lpp+1; lp:=n1-n3; #lprint("Have a copy of Pprime. n1,n2,lpp,lp ",n1,n2,lpp,lp); # get max normal curling number of sequence without P prime tmax:=floor((n1-1)/lp); for t1 from 0 to tmax-1 do # do t1 if (n1-(t1+2)*lp < 1) then break; fi; # if END swt1:=-1; for i2 from 1 to lp do # do i2 if a[n1-i2] <> a[n1-i2-(t1+1)*lp] then swt1:=1; break; fi; od: # od i2 if swt1 = 1 then break; fi; od: # od t1 # now have a value of k kp:=((t1+1)*lp+lpp)/lp; #lprint("n,n1,n2,t1,kp ",n,n1,n2,t1,kp); k:=max(k,kp); fi; # fi sw2 fi; # fi lpp od: # od n2 od: # od n1 RETURN(k); end proc; # to compute M terms of A224762/A224763 g:=proc(M) local a,n; a:=Array(1..M); a[1]:=1; for n from 2 to M do a[n]:=fcn(a,n-1); od: RETURN(a); end proc; g(61000);