![]() |
|
![]() ![]() ![]() |
|
Bikutoru |
|
||||
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: нет Всего: 22 |
Добрый день!
У меня возникла задача: необходимо "вытащить" из текста список слов, и вывести их, предварительно отсортировав по частоте вхождения (если несколько слов имеют одинаковую частоту, то они должны быть отсортированы по алфавиту). Вот с последней частью у меня и возникла проблема. На первый взгляд, ничего сложного в этом нет, берем слова, записываем их хеш, где в качестве ключа используется слово, а в качестве значения частота его вхождения и пишем в стиле a-la PERL что-то вроде
и получаем... правильно, не совсем то, что нужно. Выведенные данные действительно отсортированы по частоте вхождения, но вот с алфавитом имеются определённые проблемы. Сижу, разбираюсь и прихожу к выводу, что 0 есть истина (о чём, кстати, в "Programming Ruby" честно написано - "Any value that is not nil or the constant false is true")! Хорошо, тогда на мне ум приходит другая "гениальная" мысль - а давайте-ка использовать побитовое ИЛИ, что гарантировано даст возможность вычисления всех "сравнений". Да, но ведь в этом случае мы можем получитьвыражение 1 | -1, которое даст совсем не тот результат, который нужен. Следовательно, этот вариант тоже не подходит. В результате я пришел в селдующему варианту:
Ну и, наконец, озвучу свой вопрос - а не дурак ли я нет ли более простого варианта для решения задачи сортировки по нескольким условиям сразу? Меня не оставляет мысль, что это должно решаться как-то проще... Это сообщение отредактировал(а) Bikutoru - 3.12.2006, 16:16 -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
||||
|
|||||
Pete |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 318 Регистрация: 5.1.2006 Где: Москва Репутация: 2 Всего: 12 |
Это сообщение отредактировал(а) Pete - 10.12.2006, 19:58 -------------------- Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу) Не откладывай на завтра то, что можешь сделать сегодня. (Пословица) А теперь выпишем точное значение числа пи... (Препод) Жахни, Пендальф! © Гоблин |
|||
|
||||
Bikutoru |
|
|||
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: нет Всего: 22 |
Pete, как увидел твое решение, сразу пришло на ум небольшое упрощение:
Спасибо, именно такой взгляд со стороны и нужен был :-) -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
FunnyFalcon |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 27.3.2006 Репутация: 3 Всего: 7 |
??????????
|
|||
|
||||
V.A.KeRneL |
|
||||||||
![]() Vadim A. Kazantsev ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 3.12.2006 Где: Moscow, Russia Репутация: 1 Всего: 14 |
Минусик забыли! ![]() Вот так будет, что надо:
Моё стандартное решение с использованием метода `nonzero?':
Это сообщение отредактировал(а) V_A_KeRneL - 11.12.2006, 02:01 -------------------- «C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы» ---/)/)---(\.../)---(\(\ --(':'=)---(=';'=)---(=':') (")(")..)-(").--.(")-(..(")(") |
||||||||
|
|||||||||
Bikutoru |
|
|||
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: нет Всего: 22 |
FunnyFalcon, V_A_KeRneL, спасибо за предложенные решения. Мне они понравились гораздо больше...
Добавлено @ 12:32 Правда проверить раньше выходных на реальных данных не получится... -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Ruby: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |