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

投稿消してしまった