У меня есть строка "A3B2C3D4" она должна быть напечатана в выводе, как показано ниже
"A3B2C3D4"
AAABBCCCDDDD
Как этого достичь в ruby?
t =[]; # scan for each letter and split, then combine the array by each two elements. Get the desired output ("A3B2C3D4".scan /\w/).each_slice(2).to_a.each {|g| t<< [g.first * g.last.to_i]} t.flatten.join => "AAABBCCCDDDD"
Немного многословно.
str = "A3B2C3D4" str.gsub(/([A-Z])(\d)/) { $1 * $2.to_i } #=> "AAABBCCCDDDD"
"A3B2C3D4".scan(/(\D+)(\d+)/).map { |c, i| c * i.to_i }.join #⇒ "AAABBCCCDDDD"