Программирование на языке Ruby
Шрифт:
Операция дополнения опирается на идею универсального множества. Однако «универсальное множество» в каждой конкретной ситуации определяется по-разному, поэтому лучшим решением будет самое простое: сначала определим, что такое универсальное множество, а потом вычислим разность.
Если считаете необходимым, можете определить и унарный оператор (например,
Элементы множества можно перебирать, обходя массив. Единственная разница заключается в том, что элементы будут появляться в определенном порядке, а это может оказаться нежелательным. О том, как перебирать массив в случайном порядке, будет рассказано в разделе 8.1.18.
Наконец, иногда возникает необходимость вычислить степень множества. Это не что иное, как множество всех подмножеств данного множества (включая его само и пустое множество). Читатели, знакомые с дискретной математикой, в особенности с комбинаторикой, понимают, что число таких подмножеств равно 2n. Сгенерировать степень множества можно следующим образом:
8.1.10. Рандомизация массива
Иногда нужно переставить элементы массива в случайном порядке. Первое, что приходит на ум, — тасование карточной колоды, но есть и другие применения — например, случайная сортировка списка вопросов.
Для решения этой задачи пригодится метод
Из-за самой природы сортировки, вероятно, вносится некоторое статистическое смещение. Но обычно это не играет роли.
Выбрать случайный элемент массива (не запрещая дубликатов) можно так:
Наконец, не стоит забывать, что метод
8.1.11. Многомерные массивы
Если для численного анализа вам нужны многомерные массивы, то в архиве приложений Ruby есть прекрасная библиотека
В следующем примере показан способ работы с многомерными массивами за счет перегрузки методов
Единственное, чего мы реально добились, — так это удобного использования запятой в обозначении
Воин-Врач
1. Воин-Врач
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
рейтинг книги
Латинский язык
Научно-образовательная:
медицина
языкознание
иностранные языки
учебники
рейтинг книги
Золотая стрела
3. Дверь в преисподнюю
Фантастика:
научная фантастика
рейтинг книги