Skip to content

Instantly share code, notes, and snippets.

@psylone
Last active March 23, 2018 07:58
Show Gist options
  • Save psylone/72a88ddd93fbb650273704064642cb17 to your computer and use it in GitHub Desktop.
Save psylone/72a88ddd93fbb650273704064642cb17 to your computer and use it in GitHub Desktop.
Задания к занятию 2

Задания к занятию 2

  • Типы данных Ruby
  • Управляющие конструкции
  • Циклы и итераторы

1. Методы Ruby Core API

Найдите в документации Ruby по адресу http://ruby-doc.org/core/ методы для объектов разных классов. Поэкспериментируйте с ними в интерактивной оболочке irb

Для класса Fixnum:

  • Метод, возвращающий вещественный результат от деления
  • Метод проверяющий, является ли число нечётным

Для класса Integer:

  • Метод, возвращающий Наибольший Общий Делитель 2-х чисел
  • Метод, позволяющий итерировать от одного числа до другого
  • Метод приведения целого числа к рациональному

Для класса Numeric:

  • Метод, позволяющий итерировать от данного целого числа с указанием шага итерации и числа верхнего предела итерации
  • Метод, приводящий данное число к комплексному (мнимому)

Для класса Float:

  • Метод, приводящий вещественное число к строке

Для класса Array:

  • Метод, возвращающий последний элемент из массива (с его извлечением из массива)
  • Метод, добавляющий элемент в конец массива

Для класса Hash:

  • Метод, возвращающий массив ключей хэша
  • Метод, возвращающий массив значений хэша

Для класса Range:

  • Метод, проверяющий, включено ли последнее значение в диапазон

2. Условное выражение if-else-end

Представьте, что у вас есть объект класса Hash:

player = { name: 'johnny', color: :red }

и переменная colors:

colors = [:blue, :white, :green, :red, :orange]

Напишите код, который будет выбирать случайный цвет из массива colors и сравнивать его с цветом в хэше player.

Если цвета совпадают — выводите сообщение «Джонни, ты прав!». Если цвета не совпадают, но количество символов из которых они состоят одинаково — выводите: «Джонни, букв столько же, но значение иное!». В остальных случаях — выводите любое другое сообщение.

Постарайтесь сделать так, чтобы сообщения в выводе не включали явно заданное имя, а брали его из хэша с помощью интерполяции.

Оберните код в метод, можно в несколько.

3. Итерация с условиями

У вас есть массив имён, например:

names = %w[ambientsketchbook Erik\ Wollo Brian\ Eno Evangelos\ Papathanassiou Shulman]

Пробегитесь по ним и выведите только те, длина которых меньше 10 символов и первая буква заглавная. При реализации условий постарайтесь каждое из них обернуть в отдельный метод.

4. Количество символов в элементе массива

Посчитайте количество символов в каждом элементе массива:

[“Ruby”, “Python”, “JavaScript”, “Java”, .NET”, “HTML”, “Clojure”]

Подсказка:

Используйте метод inject

Результат выведите на экран в виде хэша:

{"Ruby"=>4, "Python"=>6, "JavaScript"=>10, "Java"=>4, ".NET"=>4, "HTML"=>4, "Clojure"=>7, "Go"=>2}

5. Самая удивительная последовательность

Напишите метод вычисления последовательности Фибоначчи. Попробуйте реализовать алгоритм с помощью цикла и с помощью рекурсии. На следующем занятии мы сравним что работает быстрее.

6. Продвинутый шифр Цезаря

Напишите алгоритм rot13, позволяющий кодировать и декодировать текст на английском языке. Например:

cypher = 'Lbh unpxrq n irel frperg zrffntr!'
rot13(cypher) # => ?

7. Вывод матрицы

Напишите программу которая выводит матрицу на экран. Матрица задаётся в виде хэша:

matrix = {
  data: [1, 2, 3, 4, 5, 6],
  rows: 2,
  cols: 3
}

Запрещается использовать другие структуры данных, а также встроенные методы кроме циклов и итераций.

Требуемый результат:

[
  1 2 3
  4 5 6
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment