Программирование на языке Ruby
Шрифт:
Чтобы проверить, является ли множество пустым, мы вызываем метод
Можно проверить, является ли одно множество подмножеством, собственным подмножеством или надмножеством другого.
Метод
Наконец, два множества можно сравнить на равенство интуитивно очевидным способом:
9.1.2. Более сложные операции над множествами
Разумеется, можно обойти множество, но (как и для хэшей) не ожидайте какого-то определенного порядка появления элементов, потому что множества по сути своей неупорядочены, и Ruby не гарантирует никакой последовательности. (Временами можно получить повторяющиеся, ожидаемые результаты, но полагаться на это неразумно.)
Метод
Метод
Если «арность» (число аргументов) блока равна 1, то метод выполняет вызовы вида
Например, следующий блок (с «арностью» 1) разбивает множество на два подмножества, одно из которых содержит четные числа, а другое — нечетные:
Вот еще один, несколько искусственный пример. Простыми числами-близнецами называются простые числа, отличающиеся на 2 (например, 11 и 13); все прочие называются одиночными (например, 23). Следующий код разбивает множество на группы, помещая числа-близнецы в одно и то же подмножество. В данном случае применяется блок с «арностью» 2:
На мой взгляд, этот метод труден для понимания; я рекомендую пользоваться методом
Важно понимать, что класс
Есть и другие методы, которые применяются в частности к множествам (в том числе все методы из модуля
9.2. Стеки и очереди
Стеки и очереди — это первые из встретившихся нам структур, которые, строго говоря, не встроены в Ruby. Иными словами, в Ruby нет классов
И все же в некотором смысле они встроены в Ruby. Ведь класс
Над стеком можно выполнять ограниченный набор операций. Как минимум операции заталкивания (push) и выталкивания (pop), то есть помещения в стек и извлечения из него. Обычно также предоставляется способ проверить, пуст ли стек, и исследовать верхний элемент, не извлекая его из стека. Но никогда реализация не позволяет получить доступ к элементу в середине стека.
Как же реализовать стек на базе массива, если к элементам массива можно обращаться в произвольном порядке, а стек таким свойством не обладает? Ответ прост. Стек — более абстрактная структура, чем массив. Он является стеком лишь до тех пор, пока мы обращаемся с ним как с таковым. В тот момент, когда вы пытаетесь обратиться к элементу недопустимым образом, стек перестает быть стеком.
"Фантастика 2024-179". Компиляция. Книги 1-30
Фантастика 2024. Компиляция
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
рейтинг книги
Вечный. Книга I
1. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
рейтинг книги
Старый, но крепкий 7
7. Культивация без насилия
Фантастика:
рпг
уся
фэнтези
рейтинг книги
Корсаков
1. Корсаков
Фантастика:
альтернативная история
аниме
попаданцы
рейтинг книги
Виктор Глухов агент Ада. Компиляция. Книги 1-15
Виктор Глухов агент Ада
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
попаданцы
рейтинг книги
Город золотых теней
1. Иноземье
Фантастика:
научная фантастика
рейтинг книги