Раздел «Язык Ruby».RubySchoolSourceL01:
<<Программирование на Ruby

Занятие 1

Следующее занятие

Знакомство с базовыми арифметическими действиями

puts 1 + 2 
puts 3 * 4
puts 1234 / 56
puts 1234.0 / 56

a = 12
b = 32
puts a * b
puts b / a
puts b.to_f / a

puts 2**10  #=> 2 * 2 * ... * 2  (10 раз)

puts 1.345**5.678

Строки

# печать строки
puts "Hello, world!"

# печать строки
puts "Hey, Jude!\nDon't be afraid" # в строке с двойными кавычками специальные символы
                                   # (типа \n и \t) раскрываются;
                                   # \n - символ перевода на новую строку

puts 'Hey, Jude!\nDon\'t be afraid' # в строке с одинарными кавычками
                                    # ничего не раскрывается;
                                    # одинарные кавычки внутри строки 
                                    # нужно экранировать символом \ (бэкслеш);
puts "abc\\klm"   # чтобы вывести один бэкслеш, нужно написать два бэкслеша подряд

a = "Hello"
b = "world"
puts  a + ", " + b # напечатает "Hello, world"

a = "Hello"
b = "world"
c =  a + ", " + b

puts c
puts c.size
puts c.class
puts c.inspect

(1..10).each do |i|
  puts i
end

for i in (1..10)
  puts i
end

Факториал числа

# 5! = 1 * 2 * 3 * 4 * 5

n = 1
(1..50).each do |i|
  puts "n=#{n}, i = #{i}"
  puts n.class
  n = n * i
end

puts n

# про inject будет рассказано в лекции 3
n = (1..10).inject{|a,b| a*b}
puts n # выведет 10!  = 1*2*3*...*9*10

Таблица умножения

(1..10).each do |i|
  (1..10).each do |j|
    printf " %02d", i*j
  end
  puts
end

Сумма цифр числа

def last_digit(x,q=10)
  x % q
end

def digits_sum(x,q=10)
  res = 0
  while x > 0
    res += last_digit(x,q)
    x /= q
  end
  res
end

puts digits_sum(1235)

class Integer
  def digits_sum(q=10)
    self.to_s(q). # получить запись числа (строку) в q-ичном представлении
      split('').  # разбить на отдельные буквы (получим массив однобуквенных строк - объектов класса String)
      map {|d| d.to_i }. # буквы (цифры) преобразуем в числа (получим массив чисел)
      inject{|a,b| a + b} #  суммируем
  end
end

Вывод числа в других системах счисления

x = 12312312
puts x.to_s(2)
puts x.to_s(3)
puts x.to_s(8)
puts x.to_s(16)
puts x.to_s