Re: Mutually-Recursive Functions

From: Gavin K.
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