fork download
  1. MapOfAlphaToNumber = 1.upto(26).inject([{}, 'A']) { |(hash, alpha), number|
  2. [hash.merge(alpha => number), alpha.succ]
  3. }[0]
  4.  
  5.  
  6. def parse_excel_row_id(string)
  7. string.split(//).inject(0) { |row_num, alpha|
  8. raise 'Invalid Row ID' unless MapOfAlphaToNumber.has_key?(alpha)
  9.  
  10. row_num * 26 + MapOfAlphaToNumber[alpha]
  11. }
  12. end
  13.  
  14.  
  15. printf "'A' --> %d", parse_excel_row_id('A')
  16. puts
  17. printf "'AA' --> %d", parse_excel_row_id('AA')
  18. puts
  19. printf "'ZZZ' --> %d", parse_excel_row_id('ZZZ')
  20. puts
  21.  
Success #stdin #stdout 0.05s 9736KB
stdin
Standard input is empty
stdout
'A'   --> 1
'AA'  --> 27
'ZZZ' --> 18278