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