#!/usr/bin/env ruby

# "упаковываем" массив Ruby
puts "\n\t Массивы "
magic = [1, 2]     
# обе метки наклеены на одну и ту же упаковку
hocusPocus = magic 
# их значения совпадают
print "magic      = "; p magic         
print "hocusPocus = "; p hocusPocus
puts "изменяем содержимое массива hocusPocus"

# изменим  содержимое упаковки с именем hocusPocus
hocusPocus[0] = 6  
print "magic      = "; p magic         
# посмотрим...
print "hocusPocus = "; p hocusPocus
puts "Обе переменные изменились"

puts"==============="
puts "\n \t Числа "

# "упаковали" объект типа FixNum
magic = 42          
# теперь имеем две упаковки, каждая со своей меткой
hocusPocus = magic  
# обе упаковки имеют одинаковое содержимое
puts "magic      = #{magic}"         
puts "hocusPocus = #{hocusPocus}"
puts "изменяем содержимое hocusPocus"

# изменим содержимое упаковки с именем hocusPocus
hocusPocus = 0      
# посмотрим...
puts "magic      = #{magic}"         
# и заметим, что они различны
puts "hocusPocus = #{hocusPocus}"
puts "Вторая переменная не изменилась"

=begin
b=[ ] 
puts "b=" ,b, "\n"

a, b = [1, 2, 3]
print "a=", a, "\t"
print "b=" ,b, "\n"
a, *b = [1, 2, 3]
print "a=", a, "\t"
print "b=" ,b, "\n"

*b = [1, 2, 3]
print "b=" ,b, "\n"

a = Array.new(3, Array.new(3))
p a
a = Array.new(3, Time)
p a
p a.type
p a[2].type
=end
=begin
a = [
  [11, 12, 13],
  [21, 22, 23],
  [31, 32, 33]
  ]
p a
puts "Второе число второй строки равно #{a[1][1]}"

#  создание массива размерности 3x3 
myArray = Array.new(3, Array.new(3))
#p myArray

a = Array.new(3)
a[0] = Array.new(3)
a[1] = Array.new(3)
a[2] = Array.new(3)
a[1][1]=123
p a    #  


a = (0..2).map{Array.new 3}  # ПРАВИЛЬНО
a[1][1]=123
p a    #  
# создали массив, в который поместили
# три ссылки на один и тот же объект
b = Array.new(3, Array.new(3)) # НЕПРАВИЛЬНО
b[1][1]=123
p b    #  

a = [1, 2, 3,4]
puts a[2]
puts a[-1]
puts a[-2]
b = %w(a b c)
p b
p b[0]
a = ["a", "b", "c", "d"]
p a.collect {|i| i+"!"}

b = [23, -14, 45, 78, -2.5]
s = 0
b.collect {|i| s +=i}
puts s
=end
