Задание: заведите блокнот с идеями. Записывайте туда абсолютно все идеи, которые приходят вам в голову. Возможно вы вернетесь к ним через неделю, месяц, или год.
Задание: заведите блокнот с идеями. Записывайте туда абсолютно все идеи, которые приходят вам в голову. Возможно вы вернетесь к ним через неделю, месяц, или год.
Найти и установить ruby installer
Запустите программу “1+1” (без puts).
Написать программу, которая считает количество миллисекунд в сутках
Посчитать количество секунд в сутках, не выводя результат на экран с помощью puts (в irb)
Установить файловый менеджер
“Походите” по вашей файловой системе и посмотрите какие файлы и директории в ней существуют. Директории из корневого каталога (== “директории из корневой директории”) будут часто встречаться в будущем.
Разберитесь с созданием, копированием, переносом файлов и директорий. Попробуйте скопировать несколько файлов, предварительно выделив их (Ins).
Установить текстовый редактор. Попробовать создать несколько файлов в текстовом редакторе. В каждый файл запишите имя человека, которого вы знаете. Удалите файлы.
Попробовать оставить комментарии к своей программе и добавить пустые строки после gets, чтобы визуально программа выглядела “легче”.
Если у вас установлена ОС Windows, попробуйте скачать VMWare Workstation (платная программа) или VirtualBox (бесплатная). Это виртуальная машина - программа для запуска операционных систем внутри вашей ОС. Попробуйте запустить виртуальную машину и установить в ней Linux Mint Cinnamon edition. Попробуйте написать первую программу в Linux! Если не получится - ничего страшного, продолжайте обучение дальше, можно будет вернуться к этому позднее.
написать программу, которая подряд спрашивает год рождения, место рождения, номер телефона трех клиентов, после чего выводит полученную информацию полностью в виде “карточек” (в англ.языке это бы называлось baseball card, аналогия в русском языке - карточка из картотеки).
Узнайте какой тип данных у `""`. А какой тип данных у `0` (ноль)? Какой тип данных у минус единицы? Какой тип данных у округленного числа “Пи” `3.14`?
Известно, что метод `.class` для любого объекта возвращает результат. REPL читает (read), выполняет (evaluate) и печатает (print) этот результат на экран. Но если все в руби объект, то какого типа возвращается сам результат, когда мы пишем `.class`? Вот этот метод `.class` - результат какого типа он возвращает? Видно ли это из документации? Проверьте. Попробуйте написать `123.class.class` - первое выражение `123.class` вернет результат, а следующий `.class` вычислит тип этого результата.
Посмотрите документацию к методу “chomp” и “size” класса String.
Напишите программу для подсчета годовой зарплаты. Пользователь вводит размер заработной платы в месяц, а программа выводит размер заработной платы в год. Допустим, что пользователь каждый месяц хочет откладывать 15% своей зарплаты. Измените программу, чтобы она выводила не только размер заработной платы, но и размер отложенных за год средств. Измените программу, чтобы она выводила размер отложенных средств за 5 лет.
Посмотрите какие еще существуют bang-методы у класса String
Известно, что стоимость дома - 500 тысяч долларов. Человек берет дом в рассрочку на 30 лет. Чтобы выплатить дом за 30 лет, нужно платить 16666 долларов в год (это легко посчитать, разделив 500 тысяч на 30). Написать программу, которая для каждого года выводит сумму, которую осталось выплатить.
Измените программу из предыдущего задания со следующими условиями: человек берет дом не в рассрочку, а в кредит по ставке 4% годовых на оставшуюся сумму. Для каждого года посчитайте сколько денег нужно заплатить за этот год за использование кредита.
Посчитайте количество денег (total), которые мы заплатим только в виде процентов по кредиту за 30 лет.
Известно, что на Луне продают участки. Любой участок менее 50 квадратных метров стоит 1000 долларов. Участок площадью от 50 до 100 квадратных метров стоит 1500 долларов. От 100 и выше - по 25 долларов за квадратный метр. Напишите программу, которая запрашивает длину и ширину участка и выводит на экран его стоимость.
Напишите программу “иммигрант”. Программа должна задавать следующие вопросы: “У вас есть высшее образование? (y/n)”, “У вас есть опыт работы программистом? (y/n)”, “У вас более трех лет опыта? (y/n)”. За каждый положительный ответ начисляется 1 балл (переменную можно назвать score). Если набралось 2 или более баллов программа должна выводить на экран “Добро пожаловать в США”.
Посмотрите документацию по классу Range
Напишите программу, которая будет выводить случайное число от 500 до 510.
Напишите программу, которая будет выводить случайное число с дробью от 0 до 1.
Напишите программу, которая будет выводить случайное число с дробью от 2 до 4.
Измените программу, чтобы она загадывала число от 1 до 1_000_000 (1 миллиона). Чтобы можно было угадать это число, программа должна сравнивать текущий ответ пользователя и искомое число: 1) если ответ пользователя больше, то программа должна выводить на экран “Искомое число меньше вашего ответа”; 2) иначе “Искомое число больше вашего ответа”. Может показаться, что угадать это число невозможно, однако математический расчет показывает, что угадать число в этом случае можно не более, чем за 20 попыток.
Запишите следующие примеры при помощи тернарного оператора
Пример 1:
                      
                        if friends_are_also_coming?
                        go_party
                        else
                        stay_home
                        end                
                      
                    
                    будет:
                      
                        if friends_are_also_coming? ? go_party : stay_home
                      
                    
                    Пример 2:
                      
                        if friends_are_also_coming? && !is_it_raining
                        go_party
                        else
                        stay_home
                        end          
                       
                    
                    будет:
                      
                        if friends_are_also_coming? && !is_it_raining ? go_party : stay_home   
                      
                    
                  С помощью символов “/”, “-”, “\”, “|” сделайте анимацию - индикатор загрузки. Если выводить эти символы по-очереди на одном и том же месте, возникает ощущение вращающегося символа.
напишите метод, который выводит на экран пароль, но в виде звездочек. Например, если пароль “secret”, метод должен вывести “Ваш пароль: ******”.
Реализуйте метод “check_victory?” (сейчас он просто возвращает значение false). В случае победы или поражения необходимо выводить полученный результат на экран. Измените 10_000 на 10 чтобы легче было отлаживать программу.
Посмотрите документацию к "ruby case statements" и замените конструкцию "if...elsif" на "case...when".
Cделать так, чтобы цикл был теоретически бесконечным. Т.е. чтобы равновероятно на свет появлялись люди и машины. Количество появившихся людей или машин должно равняться количеству погибших людей или машин. Несмотря на то, что теоретически борьба может быть бесконечной, на практике может наступить ситуация, в которой та или иная сторона выигрывает. Проверьте программу на практике, попробуйте разные значения `people` и `machines` (1000, 100, 10).
Улучшите программу "Эмулятор судного дня", добавьте как минимум еще 3 события, которые могут влиять на результат судного дня.
Определите метод, который будет вычислять случайный номер с анимацией (используйте sleep со случайной задержкой). Примените анимацию к переменным “x”, “y”, “z”.
Добавьте больше условий в игру “Однорукий бандит”, используйте свое воображение.
Если вы используете MacOS то вместо цифр в консоли используйте эмодзи. Пусть каждой цифре соответствует определенная картинка. Вы можете найти эмодзи на сайте https://emojipedia.org/ .
Напишите игру "Битва роботов".
Чтобы статистика была более наглядной, добавьте в программу выше вывод двух массивов.
Вместо бинарного значения ноль или единица пусть каждый робот имеет уровень жизни, который выражается целым числом от 1 до 100 (в самом начале это значение должно быть установлено в 100). Пусть каждая атака отнимает случайную величину жизни у робота от 30 до 100. Если уровень жизни ниже или равен нулю, робот считается уничтоженным.
Если вы не попробовали в REPL все написанное выше, то перечитайте и попробуйте
Создайте массив в 5 строк и 4 столбца, заполните каждую строку случайным значением от 1 до 5 (только одно случайное значение для каждой строки). Пример для массива 2 на 3:
                    [
                    [2, 2, 2],
                    [5, 5, 5]
                    ]
                  
              Создайте массив в 4 строки и 5 столбцов, заполните каждую строку случайным значением от 1 до 5 (только одно случайное значение для каждой строки).
Создайте массив 5 на 4 и заполните весь массив абсолютно случайными значениями от 0 до 9.
Попробуйте в “pry” вывести поле 10 на 10 для игры в “Морской бой”.
puts(1+1)
$ ruby
puts 1+1
2
$
$ ruby
puts 60 * 60 * 24 * 1000
(нажмите Ctrl + D)
(нажмите Enter)
86400000
$ ruby
puts 5**5 * 4**4 * 3**3 * 2**2 * 1**1
(нажмите Ctrl + D)
(нажмите Enter)
86400000
$ ruby
puts 60 * 60 * 24 * 1000 == 5**5 * 4**4 * 3**3 * 2**2 * 1**1
(нажмите Ctrl + D)
(нажмите Enter)
true
$ irb
irb(main):001:0> 60*60*24*1000
=> 86400000
irb(main):002:0>
puts "How to translate ball?"
gets
puts "How to translate door?"
gets
puts "How to translate peace?"
gets
# encoding: cp866
puts "How to translate ball?"
gets
#---------------------------
puts "How to translate door?"
gets
#---------------------------
puts "How to translate peace?"
gets
#---------------------------
puts "How to translate drugs?"
gets
#---------------------------
puts "How to translate bus?"
gets
#---------------------------
puts "How to translate sleep?"
gets
#---------------------------
puts "How to translate took?"
gets
#---------------------------
puts "How to translate drink?"
gets
#---------------------------
puts "How to translate run?"
gets
                    # Программа спрашивает возраст и выводит его на экран
                    puts "Your age?"
                    age = gets
                    puts "Your age is"
                    puts age
                  
                  
                      puts "Введите год рождения первого клиента?"
                      year_of_birth_0 = gets
                      #
                      puts "Введите год рождения второго клиента?"
                      year_of_birth_1 = gets
                      #
                      puts "Введите год рождения третьего клиента?"
                      year_of_birth_2 = gets
                      #
                      puts "Введите место рождения первого клиента?"
                      place_of_birth_0 = gets
                      #
                      puts "Введите место рождения второго клиента?"
                      place_of_birth_1 = gets
                      #
                      puts "Введите место рождения третьего клиента?"
                      place_of_birth_2 = gets
                      #
                      puts "Введите телефонный номер первого клиента?"
                      phone_number_0 = gets
                      #
                      puts "Введите телефонный номер второго клиента?"
                      phone_number_1 = gets
                      #
                      puts "Введите телефонный номер третьего клиента?"
                      phone_number_2 = gets
                      #
                      puts "baseball card № 1"
                      puts year_of_birth_0.to_s.chomp + " " + place_of_birth_0.to_s.chomp + " " + phone_number_0.to_s.chomp
                      #
                      puts "baseball card № 2"
                      puts year_of_birth_1.to_s.chomp + " " + place_of_birth_1.to_s.chomp + " " + phone_number_1.to_s.chomp
                      #
                      puts "baseball card № 3"
                      puts year_of_birth_2.to_s.chomp + " " + place_of_birth_2.to_s.chomp + " " + phone_number_2.to_s.chomp
                      gets   
                    
                  
                  # Программа спрашивает возраст и выводит его на экран
                  puts "Your age?"
                  age = gets
                  puts "=" * 80
                  puts "Your age is " + age
                  gets
                  
                  
                      puts "Тип данных у `""`."
                      puts "".class
                      puts "Тип данных у нуля."
                      puts 0.class
                      puts "Тип данных у минус единицы"
                      puts -1.class
                      puts "тип данных у округленного числа “Пи” 3.14?"
                      puts 3.14.class
                      gets
                  
                  
                      # 
                      puts "123.is_a?(Integer)?"
                      puts 123.is_a?(Integer)
                      puts "-"*40;
                      puts "123.is_a?(String)";
                      puts 123.is_a?(String)
                      puts "-"*40;
                      puts "blabla"".is_a?(String)"
                      puts "blabla".is_a?(String)
                      puts "-"*40;
                      puts "123.is_a?(Object)"
                      puts 123.is_a?(Object)
                      puts "-"*40;
                      puts "blabla"".is_a?(Object)"
                      puts "blabla".is_a?(Object)
                      puts "-"*40;
                      gets
                  
                  
                      # Программа подсчитывает возраст в месяцах
                      puts "Your age?"
                      age = gets
                      age_months = age.to_i * 12
                      puts "Your age is " + age_months.to_s
                  
                  
                    # Программа подсчитывает 30% налог на вводимую зарплату
                    puts "Your salary?"
                    salary = gets.to_i
                    tax_rate = 0.3
                    puts "Tax:" 
                    puts salary * tax_rate
                  
                  
                    puts "Your age?"
                    age = gets.to_i
                    puts "="*80
                    age_months = age * 12
                    puts "Your age is #{age_months}"
                  
                  
                    puts "Your age?"
                    age = gets.to_i
                    puts "="*80
                    age_months = age * 12
                    puts "Your age is #{age_months}"
                  
                  
                    #
                    puts "Your salary?"
                    salary_month = gets.to_i
                    tax_rate = 0.3
                    tax = salary_month * tax_rate
                    puts "="*80
                    puts "Tax on month: #{salary_month * tax_rate}"
                    annual_salary = (salary_month - tax) * 12
                    puts "Annual salary: #{annual_salary}"
                    puts "Accumulated for the year 15%: #{annual_salary * 0.15}"
                    puts "Accumulated for the 5 years 15%: #{annual_salary * 0.15 * 5}"
                  
                  
                      #Преобразование заглавных букв в строчные используя bang! и их вывод
                      a = 'HI'
                      b = a
                      a.downcase!
                      puts b
                  
                  
                      # Блок с ключевыми словами do - end
                      10.times do
                        puts "Спартак - чемпион!"
                        puts "(и Динамо тоже)"
                        end
                  
                  
                      # Каждый месяц откладывается определенная сумма. 
                      # Программа должна выводить сколько средств будет накоплено в течение следующих 24 месяцев.
                      sum = 0
                      24.times do |i|
                      sum = sum + 500
                      puts "За #{i + 1} месяц у бабушки в сундуке #{sum}"
                      end
                  
                  
                      # Каждый месяц откладывается определенная сумма. 
                      # Программа должна выводить сколько средств будет накоплено в течение следующих 24 месяцев если каждый месяц начисляется 10%.
                      sum = 0
                      percent = 0
                      24.times do |i|
                      sum = sum + 500 + percent
                      percent = sum * 0.1
                      puts "За #{i + 1} месяц у бабушки в сундуке #{sum + percent}"
                      end
                  
                  
                      # Известно, что стоимость дома - 500 тысяч долларов. 
                      # Человек берет дом в рассрочку на 30 лет. 
                      # Чтобы выплатить дом за 30 лет, нужно платить 16666 долларов в год (это легко посчитать разделив 500 тысяч на 30). 
                      # Написать программу, которая для каждого года выводит сумму, которую осталось выплатить.
        
                      sum = 500000
                      annual_payment = 16666
                      30.times do |i|
                      sum = sum - annual_payment
                      puts "За #{i + 1} год осталось заплатить #{sum}"
                      end
                  
                  
                      # Известно, что стоимость дома - 500 тысяч долларов. 
                      # Человек берет дом в рассрочку на 30 лет в кредит по ставке 4% годовых на оставшуюся сумму 
                      # Написать программу, которая рассчитывает на каждый год сумму использования кредита.
        
                      sum = 500000
                      annual_payment = 16666
                      annual_percent = 0.04
                      30.times do |i|
                      sum = sum - annual_payment
                      percent = sum * annual_percent
                      puts "За #{i + 1} год осталось заплатить #{annual_payment + percent}"
                      end
                  
                  
                      # Вывести на экран числа от 50 до 100, и если число четное - рядом с ним написать `true`, если нечетное - `false`.
        
                      50.upto(100) { |i| puts "#{i} - #{i.to_i.even?}" }
                  
                  
                      # Комбинирование условий
        
                      puts 'Сколько вам лет?'
                      age = gets.to_i
                      puts 'Являетесь ли вы членом партии Единая Россия? (y/n)'
                      answer = gets.chomp.downcase
                      if age >= 18 and answer == 'y'
                      puts 'Вход на сайт разрешен'
                      end
                  
                  
                      # Напишите программу, которая спрашивает логин и пароль пользователя в консоли. 
                      # Если имя “admin” и пароль “12345”, программа должна выводить на экран “Доступ к банковской ячейке разрешен”.
        
                      puts 'Введите логин?'
                      login = gets.chomp
                      puts 'Введите пароль'
                      password = gets.chomp
                      if login == 'admin' and password == '12345'
                      puts 'Доступ к банковской ячейке разрешен'
                      else
                        puts "Неверный логин и/или пароль"
                      end
                  
                  
                      # Известно, что на Луне продают участки. 
                      # Любой участок менее 50 квадратных метров стоит 1000 долларов. 
                      # Участок площадью от 50 до 100 квадратных метров стоит 1500 долларов. 
                      # От 100 и выше - по 25 долларов за квадратный метр. 
                      # Напишите программу, которая запрашивает длину и ширину участка и выводит на экран его стоимость.
        
                      puts "Введите длину?"
                      length = gets.to_i
                      puts "Введите ширину"
                      width = gets.to_i
                      square = width * length
                      puts "#{square} M2"
        
                      if square < 50
                      puts "Участок площадью #{square} M2 стоит 1000 долларов"
                      elsif square > 50 && square <= 100   
                      puts "Участок площадью #{square} M2 стоит 1500 долларов" 
                      else 
                        puts "Участок площадью #{square} M2 стоит #{square * 25}"
                      end
                      gets
                  
                  
                      # Напишите программу “иммигрант”. Программа должна задавать следующие вопросы: 
                      # “У вас есть высшее образование? (y/n)”, “У вас есть опыт работы программистом? (y/n)”, 
                      # “У вас более трех лет опыта? (y/n)”. 
                      # За каждый положительный ответ начисляется 1 балл (переменную можно назвать score). 
                      # Если набралось 2 или более баллов программа должна выводить на экран “Добро пожаловать в США”.
                      puts 'У вас есть высшее образование? (y/n)'
                      answer_education = gets.chomp.downcase
                      puts 'У вас есть опыт работы программистом? (y/n)'
                      answer_experience = gets.chomp.downcase
                      puts 'У вас более трех лет опыта? (y/n)'
                      answer_experience_3_years = gets.chomp.downcase
        
                      score = 0
                      if answer_education == 'y'
                        score = score + 1
                      end
                      if answer_experience == 'y'
                        score = score + 1
                      end
                      if answer_experience_3_years == 'y'
                        score = score + 1
                      end
                      puts "#{score}"
                      if score >= 2
                      puts 'Добро пожаловать в США'
                      gets
                      end
                  
                  
                      questions = ['У вас есть высшее образование? (y/n)',
                                  'У вас есть опыт работы программистом? (y/n)',
                                  'У вас более трех лет опыта? (y/n)']
                      answers = []
                      
                      questions.each do |question|
                        puts question
                        answer = gets.chomp.downcase
                        answers << answer if answer == 'y'
                      end
                      if answers.count >= 2
                        puts 'Добро пожаловать в США'
                      else
                        puts 'Недостаточно положительных ответов'
                      end
                      gets
                  
                  
                            questions = ['У вас есть высшее образование? (y/n)',
                                        'У вас есть опыт работы программистом? (y/n)',
                                        'У вас более трех лет опыта? (y/n)']
                            
                            answers = 0
                            
                            questions.each do |question|
                              puts question
                              answers += 1 if gets.chomp.casecmp('y').zero?
                            end
                            
                            if answers >= 2
                              puts 'Добро пожаловать в США'
                            else
                              puts 'Недостаточно положительных ответов'
                            end
                            gets
                        
                        
                            puts "Запускаем ракеты..."
                            5.downto(1) do |i|
                            puts "Осталось #{i} секунд"
                            sleep 1
                            end
                            puts "Ба-бах!"
                        
                        
                            # Напишите программу, которая будет выводить случайное число от 500 до 510.
                            random = rand(500..510)
                            puts "#{random}"
                        
                        
                            # Напишите программу, которая будет выводить случайное число с дробью от 0 до 1.
                            random = rand(0.00..1.00)
                            puts "#{random}"
                        
                        
                      # Напишите программу, которая будет выводить случайное число с дробью от 2 до 4.
                      random = rand(2.00..4.00)
                      puts "#{random}"
                  
                  
                      number = rand(1..10)
                      print 'Привет! Я загадал число от 1 до 10, попробуйте угадать: '
                      loop do
                        input = gets.to_i
                        if input == number
                          puts 'Правильно!'
                          exit
                        end
                        if input != number
                          print 'Неправильно, попробуйте еще раз: '
                        end
                      end
                  
                  
                    number = rand(1..10)
                    print 'Привет! Я загадал число от 1 до 10, попробуйте угадать: '
                    loop do
                      input = gets.to_i
                      if input == number
                        puts 'Правильно!'
                        exit
                        else
                        print 'Неправильно, попробуйте еще раз: '
                      end
                    end
                  
                  
                      # Измените программу, чтобы она загадывала число от 1 до 1_000_000 (1 миллиона). 
                      # Чтобы можно было угадать это число, программа должна сравнивать текущий ответ пользователя и искомое число: 
                      # 1) если ответ пользователя больше, то программа должна выводить на экран “Искомое число меньше вашего ответа”; 
                      # 2) иначе “Искомое число больше вашего ответа”. 
                      # Может показаться, что угадать это число невозможно, 
                      # однако математический расчет показывает, что угадать число в этом случае можно не более, чем за 20 попыток.
        
                      number = rand(1..1000000)
                        i = 0
                      print 'Привет! Я загадал число от 1 до 1000000, попробуйте угадать: '
                      loop do
                        input = gets.to_i
                        if input > number
                            i += 1
                          puts 'Искомое число меньше вашего ответа'
                          elsif input < number
                            i += 1
                          print 'Искомое число больше вашего ответа '
                          else input == number
                          puts 'Правильно!'
                          puts "Число попыток: #{i}"
                        end
                      end
                          
                      gets
                  
                  
                      puts("Is it raining? (y/n)")
                      x = gets.chomp.downcase
                      x == 'y' ? print('stay_home') : print('go_party')
                  
                  
                      x = 0.1
        
                      while true
                        print "/" + "\r"
                        sleep x
        
                        print "-" + "\r"
                        sleep x
        
                        print "\\" + "\r"
                        sleep x
        
                        print "|" + "\r"
                        sleep x
        
                        print "/" + "\r"
                        sleep x
        
                        print "-" + "\r"
                        sleep x
        
                        print "\\" + "\r"
                        sleep x
        
                        print "|" + "\r"
                        sleep x
                      end
                  
                  
                      def get_number(what)
                      print "Введите #{what}: "
                      gets.to_i
                      end
                      age = get_number('возраст')
                      salary = get_number('зарплату')
                      rockets = get_number('количество ракет для запуска')
                  
                  
                      def convert_password(password)
                        "*" * password.length
                      end
        
                      puts "Введте ваш пароль: "
                      user_password = STDIN.gets
                      puts "Спасибо ваш пароль защищен #{convert_password(user_password)}"           
                  
                  
                      ########################################
                      # ОПРЕДЕЛЯЕМ ПЕРЕМЕННЫЕ
                      ########################################
                      @people = 10
                      @machines = 10
                      ########################################
                      # ВСПОМОГАТЕЛЬНЫЕ МЕТОДЫ
                      ########################################
                      # Метод возвращает случайное значение: true или false
                      def luck?
                        rand(0..1) == 1
                      end
                      
                      def boom
                        diff = rand(1..5)
                        if luck?
                          @machines -= diff
                          puts "#{diff} машин уничтожено"
                          else
                          @people -= diff
                          puts "#{diff} людей погибло"
                        end
                      end
                      
                      # Метод возвращает случайное название города
                      def random_city
                        dice = rand(1..5)
                        if dice == 1
                          'Москва'
                          elsif dice == 2
                          'Лос-Анджелес'
                          elsif dice == 3
                          'Пекин'
                          elsif dice == 4
                          'Лондон'
                          else
                          'Сеул'
                        end
                      end
                      
                      def random_sleep
                        sleep rand(0.3..1.5)
                      end
                      
                      def stats
                        puts "Осталось #{@people} людей и #{@machines} машин"
                      end
                      
                      ########################################
                      # СОБЫТИЯ
                      ########################################
                      
                      def event1
                        puts "Запущена ракета по городу #{random_city}"
                        random_sleep
                        boom
                      end
                      
                      def event2
                        puts "Применено радиоактивное оружие в городе #{random_city}"
                        random_sleep
                        boom
                      end
                      
                      def event3
                        puts "Группа солдат прорывает оборону противника в городе #{random_city}"
                        random_sleep
                        boom
                      end
                      
                      ########################################
                      # ПРОВЕРКА ПОБЕДЫ
                      ########################################
                      def check_victory?
                        if @people > 0 and @machines <= 0
                          true and puts("Люди выиграли")
                          exit
                          elsif 
                          @machines > 0 and @people <= 0
                          true and puts("Машины выиграли")
                        else
                        end
                      end
                      ########################################
                      # ГЛАВНЫЙ ЦИКЛ
                      ########################################
                      loop do
                        if check_victory?
                          exit
                        end
                        
                        dice = rand(1..3)
                        if dice == 1
                          event1
                          elsif dice == 2
                          event2
                          elsif dice == 3
                          event3
                        end
                        stats
                        random_sleep
                      end         
                  
                  
                      ########################################
                      # ОПРЕДЕЛЯЕМ ПЕРЕМЕННЫЕ
                      ########################################
                      @people = 10
                      @machines = 10
                      ########################################
                      # ВСПОМОГАТЕЛЬНЫЕ МЕТОДЫ
                      ########################################
                      # Метод возвращает случайное значение: true или false
                      def luck?
                        rand(0..1) == 1
                      end
                      
                      def boom
                        diff = rand(1..5)
                        if luck?
                          @machines -= diff
                          puts "#{diff} машин уничтожено"
                          else
                          @people -= diff
                          puts "#{diff} людей погибло"
                        end
                      end
                      
                      # Метод возвращает случайное название города
                      def random_city
                        dice = rand(1..5)
                        case dice
                          when 1
                          'Москва'
                          when 2
                          'Лос-Анджелес'
                          when 3
                          'Пекин'
                          when 4
                          'Лондон'
                          when 5
                          'Сеул'
                        end
                      end
                      
                      def random_sleep
                        sleep rand(0.3..1.5)
                      end
                      
                      def stats
                        puts "Осталось #{@people} людей и #{@machines} машин"
                      end
                      
                      ########################################
                      # СОБЫТИЯ
                      ########################################
                      
                      def event1
                        puts "Запущена ракета по городу #{random_city}"
                        random_sleep
                        boom
                      end
                      
                      def event2
                        puts "Применено радиоактивное оружие в городе #{random_city}"
                        random_sleep
                        boom
                      end
                      
                      def event3
                        puts "Группа солдат прорывает оборону противника в городе #{random_city}"
                        random_sleep
                        boom
                      end
                      
                      ########################################
                      # ПРОВЕРКА ПОБЕДЫ
                      ########################################
                      def check_victory?
                        if @people > 0 and @machines <= 0
                          true and puts("Люди выиграли")
                          exit
                          elsif 
                          @machines > 0 and @people <= 0
                          true and puts("Машины выиграли")
                        else
                        end
                      end
                      ########################################
                      # ГЛАВНЫЙ ЦИКЛ
                      ########################################
                      loop do
                        if check_victory?
                          exit
                        end
                        
                        dice = rand(1..3)
                        if dice == 1
                          event1
                          elsif dice == 2
                          event2
                          elsif dice == 3
                          event3
                        end
                        stats
                        random_sleep
                      end
                  
                  
                      print 'Ваш возраст: '
                      age = gets.to_i
                      
                      if age < 18
                        puts 'Сожалеем, но вам нет 18'
                        exit
                      end
                      
                      balance = 20
                      
                      loop do
                        puts 'Нажмите Enter, чтобы дернуть ручку...'
                        gets
                      
                        x = rand(0..5)
                        y = rand(0..5)
                        z = rand(0..5)
                      
                        puts "Результат: #{x} #{y} #{z}"
                      
                        if x == 0 && y == 0 && z == 0
                        balance = 0
                        puts 'Ваш баланс обнулен'
                        elsif x == 1 && y == 1 && z == 1
                          balance += 10
                          puts 'Баланс увеличился на 10 долларов'
                        elsif x == 2 && y == 2 && z == 2
                          balance += 20
                          puts 'Баланс увеличился на 20 долларов'
                        else
                        balance -= 0.5
                        puts 'Баланс уменьшился на 50 центов'
                      end
                      
                      puts "Ваш баланс: #{balance} долларов"
                      
                      end
                  
                  
                      print 'Ваш возраст: '
                      age = gets.to_i
                      if age < 18
                        puts 'Сожалеем, но вам нет 18'
                        exit
                      end
                      
                      balance = 20
                      loop do
                        puts 'Нажмите Enter, чтобы дернуть ручку...'
                        gets
                      
                        x = rand(0..5)
                        y = rand(0..5)
                        z = rand(0..5)
                      
                        x.times do |x|
                          print "Результат: #{x} #{0} #{0}\r"
                          sleep 0.5
                        end
                      
                        y.times do |y|
                          print "Результат: #{x} #{y} #{0}\r"
                          sleep 0.5
                        end
                      
                        z.times do |z|
                          print "Результат: #{x} #{y} #{z}\r"
                          sleep 0.5
                        end
                      
                          puts "Результат: #{x} #{y} #{z}"
                      
                        if x == 0 && y == 0 && z == 0
                          balance = 0
                          puts 'Ваш баланс обнулен'
                        elsif x == 1 && y == 1 && z == 1
                          balance += 10
                          puts 'Баланс увеличился на 10 долларов'
                        elsif x == 2 && y == 2 && z == 2
                          balance += 20
                          puts 'Баланс увеличился на 20 долларов'
                        else
                          balance -= 0.5
                          puts 'Баланс уменьшился на 50 центов'
                        end
                      
                        puts "Ваш баланс: #{balance} долларов"
                      
                        if balance == 0
                          puts 'Игра завершена'
                          exit
                        end  
                      end
                  
                  
                      print 'Введите число: '
                      counter = gets.to_i
                      counter.times do |n|
                        print "#{n}\r"
                        sleep 0.5
                      end
                  
                  
                      arr = []
        
                      loop do
                        print 'Введите имя и телефон человека (Enter для окончания ввода): '
                        entry = gets.chomp
                        break if entry.empty?
                        arr << entry
                      end
                      
                      puts 'Ваша записная книжка:'
                      
                      arr.each do |element|
                        puts element
                      end
                  
                  
                      ###############################
                      # ОБЪЯВЛЯЕМ МАССИВЫ
                      ###############################
                      # массив для первой команды
                      @arr1 = Array.new(10, 1)
                      # массив для второй команды
                      @arr2 = Array.new(10, 1)
                      
                      ###############################
                      # АТАКА
                      ###############################
                      # Метод принимает массив для атаки
                      def attack(arr)
                        sleep 1 # добавим sleep для красоты
                        i = rand(0..9)
                        if arr[i] == 1
                          arr[i] = 0
                          puts "Робот по индексу #{i} уничтожен"
                          else
                          puts "Промазали по индексу #{i}"
                        end
                        sleep 1 # еще один sleep для красоты вывода
                      end
                      
                      ###############################
                      # ПРОВЕРКА ПОБЕДЫ
                      ###############################
                      def victory?
                        robots_left1 = @arr1.count { |x| x == 1 }
                        robots_left2 = @arr2.count { |x| x == 1 }
                          if robots_left1 == 0
                          puts "Команда 2 победила, в команде осталось #{robots_left2} роботов"
                          return true
                        end
                          if robots_left2 == 0
                          puts "Команда 1 победила, в команде осталось #{robots_left1} роботов"
                          return false
                        end
                        false
                      end
                      
                      ###############################
                      # СТАТИСТИКА
                      ###############################
                      def stats
                        # количество живых роботов для первой и второй команды
                        cnt1 = @arr1.count { |x| x == 1 }
                        cnt2 = @arr2.count { |x| x == 1 }
                        puts "1-ая команда: #{cnt1} роботов в строю"
                        puts "2-ая команда: #{cnt2} роботов в строю"
                      end
                      
                      ###############################
                      # ГЛАВНЫЙ ЦИКЛ
                      ###############################
                      loop do
                        puts 'Первая команда наносит удар...'
                        attack(@arr2)
                        exit if victory?
                        stats
                        sleep 3
                        puts # пустая строка
                        puts 'Вторая команда наносит удар...'
                        attack(@arr1)
                        exit if victory?
                        stats
                        sleep 3
                        puts # пустая строка
                      end
                  
                  
                      ###############################
                      # ОБЪЯВЛЯЕМ МАССИВЫ
                      ###############################
                      # массив для первой команды
                      @arr1 = Array.new(10, 1)
                      # массив для второй команды
                      @arr2 = Array.new(10, 1)
                      
                      ###############################
                      # АТАКА
                      ###############################
                      # Метод принимает массив для атаки
                      def attack(arr)
                        sleep 1 # добавим sleep для красоты
                        i = rand(0..9)
                        if arr[i] == 1
                          arr[i] = 0
                          puts "Робот по индексу #{i} уничтожен"
                          else
                          puts "Промазали по индексу #{i}"
                        end
                        sleep 1 # еще один sleep для красоты вывода
                      end
                      
                      ###############################
                      # ПРОВЕРКА ПОБЕДЫ
                      ###############################
                      def victory?
                        robots_left1 = @arr1.count { |x| x == 1 }
                        robots_left2 = @arr2.count { |x| x == 1 }
                          if robots_left1 == 0
                          puts "Команда 2 победила, в команде осталось #{robots_left2} роботов"
                          return true
                        end
                          if robots_left2 == 0
                          puts "Команда 1 победила, в команде осталось #{robots_left1} роботов"
                          return false
                        end
                        false
                      end
                      
                      ###############################
                      # СТАТИСТИКА
                      ###############################
                      def stats
                        # количество живых роботов для первой и второй команды
                        cnt1 = @arr1.count { |x| x == 1 }
                        cnt2 = @arr2.count { |x| x == 1 }
                        puts "\n"
                        puts "1-ая команда: #{cnt1} роботов в строю"
                        puts "#{@arr1}"
                        puts "2-ая команда: #{cnt2} роботов в строю"
                        puts "#{@arr2}"
                        
                      end
                      
                      ###############################
                      # ГЛАВНЫЙ ЦИКЛ
                      ###############################
                      loop do
                        puts 'Первая команда наносит удар...'
                        attack(@arr2)
                        exit if victory?
                        stats
                        sleep 3
                        puts # пустая строка
                        puts 'Вторая команда наносит удар...'
                        attack(@arr1)
                        exit if victory?
                        stats
                        sleep 3
                        puts # пустая строка
                      end
                  
                  
                      ###############################
                      # ОБЪЯВЛЯЕМ МАССИВЫ
                      ###############################
                      # массив для первой команды
                      @arr1 = Array.new(10, 1)
                      # массив для второй команды
                      @arr2 = Array.new(10, 1)
                      
                      ###############################
                      # АТАКА
                      ###############################
                      # Метод принимает массив для атаки
                      def attack(arr)
                        sleep 1 # добавим sleep для красоты
                        i = rand(0..9)
                        if arr[i] == 1
                          arr[i] = 0
                          puts "Робот по индексу #{i} уничтожен"
                          else
                          puts "Промазали по индексу #{i}"
                        end
                        sleep 1 # еще один sleep для красоты вывода
                      end
                      
                      ###############################
                      # ПРОВЕРКА ПОБЕДЫ
                      ###############################
                      def victory?
                        robots_left1 = @arr1.count { |x| x == 1 }
                        robots_left2 = @arr2.count { |x| x == 1 }
                          if robots_left1 == 0
                          puts "Команда 2 победила, в команде осталось #{robots_left2} роботов"
                          return true
                        end
                          if robots_left2 == 0
                          puts "Команда 1 победила, в команде осталось #{robots_left1} роботов"
                          return false
                        end
                        false
                      end
                      
                      ###############################
                      # СТАТИСТИКА
                      ###############################
                      def stats
                        # количество живых роботов для первой и второй команды
                        cnt1 = @arr1.count { |x| x == 1 }
                        cnt2 = @arr2.count { |x| x == 1 }
                        puts "\n"
                        puts "1-ая команда: #{cnt1} роботов в строю"
                        puts "#{@arr1}"
                        puts "2-ая команда: #{cnt2} роботов в строю"
                        puts "#{@arr2}"
                        
                      end
                      
                      ###############################
                      # ГЛАВНЫЙ ЦИКЛ
                      ###############################
                      loop do
                        puts 'Первая команда наносит удар...'
                        attack(@arr2)
                        exit if victory?
                        stats
                        sleep 3
                        puts # пустая строка
                        puts 'Вторая команда наносит удар...'
                        attack(@arr1)
                        exit if victory?
                        stats
                        sleep 3
                        puts # пустая строка
                      end
                  
                  Часть вывода
                        [1] pry(main)> Array.new(10) { Array.new(10) }
                        [
                            [0] [
                                [0] nil,
                                [1] nil,
                                [2] nil,
                                [3] nil,
                                [4] nil,
                                [5] nil,
                                [6] nil,
                                [7] nil,
                                [8] nil,
                                [9] nil
                            ],
                            [1] [
                                [0] nil,
                                [1] nil,
                                [2] nil,
                                [3] nil,
                                [4] nil,
                                [5] nil,
                                [6] nil,
                                [7] nil,
                                [8] nil,
                                [9] nil
                            ],
                            [2] [
                                [0] nil,
                                [1] nil,
                                [2] nil,
                                [3] nil,
                                [4] nil,
                                [5] nil,
                                [6] nil,
                                ...