Практиковал этот вопрос на Codewars:
Вам дадут номер, и вам нужно будет вернуть его в виде строки в расширенной форме.Например:
expanded_form(12); # Should return '10 + 2'
expanded_form(42); # Should return '40 + 2'
expanded_form(70304); # Should return '70000 + 300 + 4'
Мой код:
def expanded_form(num)
arry = Array.new
arry << num.digits.reverse.each_with_index {|val, idx| val * (10 ** idx)}
arry.reverse.join(" + ")
end
Я тестировал его на приведенных выше примерах, но вернулся "1 + 2"
, "4 + 2"
, "7 + 3 + 4"
,почему each_with_index
не работает?
Отредактировано 15:03, 11 сентября 2018: Я исправил все вышеперечисленные ошибки, включая удаление нулей, и, как указал @iGianвне, метод .digits уже перевернуть все числа, что у меня сейчас:
def expanded_form(num)
num.digits.each_with_index.map{| val, idx | val * (10 ** idx)}.select{|x| x != 0}.reverse.join(" + ")
end
Ура!