Mutually-Recursive Functions

I am not exactly sure what the OP was trying to do .. except that it
has to do with Columns in Excel. It does seems to me to be fairly
complicated. If this off topic, please excuse.

[snip]

# method to convert from numeric column to alpha col
# accepts numeric column 1 through 256
# returns alpha column A through IV
# returns empty string on invalid input
def n2a_col(num_col)

  # verify that it in the range of 1 to 255
  return nil if num_col < 1 || num_col > 256

  mostSD = num_col / 26 # SD = Significant Digit
  leastSD = num_col % 26

  if leastSD == 0
    mostSD -= 1
    leastSD = 26
  end

  leastSA = ('A'[0] + leastSD - 1 ).chr
  mostSA = mostSD > 0 ? ('A'[0] + mostSD - 1).chr : ''

  mostSA + leastSA
end

Not as efficient, but simpler:

def n2a_col( num_col )
  if (1..255).include?( num_col )
    a = 'A'
    ( num_col-1 ).times{ a = a.succ }
    a
  end
end
    
[ 0, 1, 2, 26, 27, 250, 255, 256 ].each{ |n|
puts "%3d => %s" % [ n, n2a_col( n ).inspect ]
}

#=> 0 => nil
#=> 1 => "A"
#=> 2 => "B"
#=> 26 => "Z"
#=> 27 => "AA"
#=> 250 => "IP"
#=> 255 => "IU"
#=> 256 => nil

···

From: bbiker [mailto:renard@nc.rr.com]
Sent: Thursday, June 07, 2007 12:00 PM