Forum: Ruby Re: Mutually-Recursive Functions

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
825738339f48c5b8b2a72c02caf3d91c?d=identicon&s=25 Gavin Kistner (Guest)
on 2007-06-07 20:18
(Received via mailing list)
From: Gavin Kistner
Sent: Thursday, June 07, 2007 12:10 PM
> > # accepts numeric column 1 through 256
> >   if leastSD == 0
> Not as efficient, but simpler:
>  puts "%3d => %s" % [ n, n2a_col( n ).inspect ]
> }
>
> #=>   0 => nil
> #=>   1 => "A"
> #=>   2 => "B"
> #=>  26 => "Z"
> #=>  27 => "AA"
> #=> 250 => "IP"
> #=> 255 => "IU"
> #=> 256 => nil

But speaking of efficiency, here's an auto-caching hash that only
calculates the column name once for each number. The only 'downside' is
that asking for the name of column 200 the first time fills in the
values for columns 199 down to the previously greatest column.

COL_NAME = Hash.new{ |h,n|
  if n==1
    h[n] = 'A'
  elsif (2..255).include?( n )
    h[n] = h[n-1].succ
  end
}

[ 0, 1, 2, 26, 27, 250, 255, 256 ].each{ |n|
 puts "%3d => %s" % [ n, COL_NAME[ n ].inspect ]
}

#=>   0 => nil
#=>   1 => "A"
#=>   2 => "B"
#=>  26 => "Z"
#=>  27 => "AA"
#=> 250 => "IP"
#=> 255 => "IU"
#=> 256 => nil
This topic is locked and can not be replied to.