Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Можно ли улучшить эту маленькую програмку на Ruby?


Автор: tetroel 27.3.2012, 13:31
 Задание такое
Даётся число N с клавиатуры, N может принимать значения до 9999 включительно
Нужно вычислить сумму ЦИФР от 1 до N
я написал так

меня пугает начилие стольких переменных

smile 
Код

class Integer
def digit_sum
to_s.split("").inject(0) { |sum, n| sum+n.to_i}
end
end
m=0
n=gets.to_i
for i in 1..n
m=m+i.digit_sum
end
puts m

Автор: WarHog 28.3.2012, 09:52
Можно так:

Код

class Integer
  def digit_sum
    self.to_s.split("").inject(0) { |sum, n| sum+n.to_i}
  end
end

n=gets.to_i
m = (1..n).inject { |sum, i| sum + i.digit_sum }  # т.к. идет с 1, а 1.digit_sum = 1, то можно убрать аргумент из inject-а
puts m

Автор: GrayCardinal 31.3.2012, 18:15
del

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)