Elias delta to Fibonacci
http://golf.shinh.org/p.rb?Elias+delta+to+Fibonacci
なっちファンとしては見逃せません..?
fibonaccicoding-4.rb
n=1000 def fib num ans=[] a=1;b=1;num.times{|i| ans +=[a];c=b+a;a=b;b=c} ans end $fibo=fib(n) def fibc d 1000.times{|i| fc=$fibo[i] if d <fc; return [i-1,d-$fibo[i-1]] end } end def fibby ii fbc =fibc(ii) a ="0"*(fbc[0]-1)+"11" #print $fibo[fbc[0]],">" nc=[] if fbc[1]>0 while fbc[1]>0 #print fbc[1],">" fbc=fibc(fbc[1]) ii=fbc[0] nc+=[ii] #if isfib(ii) ii=fbc[1] end end nc.each{|j| a[j-1..j-1]="1" } a end def tofibcode d fbc=fibc(d) ans="0"*(fbc[0]-1)+"1" ans[fbc[1]-1]="1"[0] ans+"1" end def bi a v=0 a.length.times{|i| v*=2 v+=a[i..i].to_i } v end def readEliasDTop d,pos /^(0*)1/=~d[pos,d.length] if($1==nil) return [1,1] end n= $1.length s=d[pos+n+1,n] nn=2**n+bi(s) nnn=d[pos+n*2+1,nn-1] #p nnn,bi(nnn) #p $1,s,nn,nnn,2**(nn-1)+bi(nnn) [2**(nn-1)+bi(nnn),n+1+n+nn-1] end while gets n=0 da=$_.chomp #p da dd="" dla="" dnum="" while da.length>n a=readEliasDTop da,n if a[0]==nil;break;end #print fibby(a[0]),"." dnum+=a[0].to_s+"." dd+=fibby(a[0]) dla+=da[n,a[1]]+"." n+=a[1] end puts dd end
勝てる気はしないし。違う方向へ。
fibo.rb
z="0" gets if $_[0]=="1"[0] puts 59881401628883.to_s(2) elsif $_[5]=="0"[0] puts z+5570119293588440400682589145538707.to_s(2) ,z*4+23470950137586677649137308648352003.to_s(2) ,z+173871716587227850876015397569603.to_s(2) ,z+1549947901662107777664489984168641699.to_s(2) ,102306874143346109134697398915.to_s(2) ,z*5+3291306163999894279080252499.to_s(2) ,50758731610776823556828316331.to_s(2) ,z+42229942904328543552711396856107.to_s(2) ,1315936341528825768589313091.to_s(2) ,754389351641486553359189143442497803.to_s(2) ,z*2+805169152445334913974595.to_s(2) ,z*4+94783265447377821651609445347919891.to_s(2) ,z*2+416197303259554275070323623107662115.to_s(2) ,z+331405424146818124355545227.to_s(2) ,z*7+39087950442513706933102659.to_s(2) else puts z*4+82296261045315518996172835.to_s(2) ,z+683716843025919906177164154179.to_s(2) ,z*5+812996172719499336369227824529747.to_s(2) ,94203878075563317705961945498691.to_s(2) ,26156486830715932596585373971.to_s(2) ,z+2642512074696887114063134462125091.to_s(2) ,25109417687300245856540705315.to_s(2) ,z*3+873479366831196858966354402943338554643.to_s(2) ,1630926838309331859624992939.to_s(2) ,z+2922145781808603476795936034869923.to_s(2) ,3004446444352995023527299000894723.to_s(2) ,z*3+53222505122745358297801806616331563.to_s(2) ,z+85495356783104462033979080747.to_s(2) ,50294233895771870697698394755.to_s(2) ,z+2768548766255389845505043.to_s(2) end
投稿消してしまった