Вот решение, которое отображает строку непосредственно в Array
из Integer
с;используя тот факт, что "a".ord == 97
, "b".ord == 98
и т. д .:
def encode(str)
str.each_char.map do |char|
char.match?(/[a-z]/i) ? c.downcase.ord - 96 : 27
end
end
encode("aAzZ1&")
#=> [1, 1, 26, 26, 27, 27]
Редактировать: Или аналогично, вы можете выполнить String#downcase
перед циклом прохождения символов:
def encode(str)
str.downcase.each_char.map do |char|
char.match?(/[a-z]/) ? c.ord - 96 : 27
end
end