Generate letters to represent number using ruby?

后端 未结 8 1719
你的背包
你的背包 2020-12-24 15:00

I would like to generate a sequence of letters i.e. \"A\", \"DE\" \"GJE\", etc. that correspond to a number. The first 26 are pretty easy so 3 returns \"C\", 26 returns \"Z\

8条回答
  •  暖寄归人
    2020-12-24 15:14

    Based on sawa's answer, I wanted a method that worked independently, albeit recursively, to achieve the desired outcome:

    def num_to_col(num)
      raise("invalid value #{num} for num") unless num > 0
      result, remainder = num.divmod(26)
      if remainder == 0
        result -= 1
        remainder = 26
      end
      final_letter = ('a'..'z').to_a[remainder-1]
      result > 0 ? previous_letters = num_to_col(result) : previous_letters = ''
      "#{previous_letters}#{final_letter}".upcase
    end
    

提交回复
热议问题