![]() |
|
|
![]()
|
|
| Krieger |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 26.6.2006 Репутация: нет Всего: нет |
Вопрос наверно простой, но я голову уже совсем сломал)
Есть книга, нужно найти в ней слова, которые чаще всего встречаются в тексте. Проверка равенства каждого слова с каждым словом в тексте и присвоение ему значения занимает слишком много времени. Знаю, что можно сделать через hash, но не понимаю как. Пишу в ruby. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 454 |
Сортировка подсчётом?
Нет. Какой бы ни был хороши хэш - всегда возможны коллизии. Это сообщение отредактировал(а) Akina - 10.12.2009, 08:34 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: нет Всего: 183 |
Т.е. просто подсчитать, сколько раз встречается какое слово (за один проход по тексту) и взять максимальный счетчик. Подходящая структура данных - контейнер map или hash_map "строка -> счетчик". Только в этом контексте тебе может пригодиться хэш - чтобы строки побыстрее искать. Но можно и сортированный map использовать, не существенно.
-------------------- ... |
|||
|
||||
| Krieger |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 26.6.2006 Репутация: нет Всего: нет |
программа должна считывать текст и он выводит например 3 слова, которые чаще всего встречаются в тексте
с каждым новым словом он будет либо записывать новый элемент в хеш массиве, либо если слово уже такое есть приписывать к значению слова +1. Вот только как это записать, что бы машина поняла, не знаю.. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 454 |
Вопрос программной реализации следует обсуждать в разделе форума по конкретному языку программирования. А ещё лучше - иди сразу в "Центр помощи", всё равно твоей теме судьба оказаться именно там.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Krieger |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 26.6.2006 Репутация: нет Всего: нет |
Я тут новичок и плохо ориентируюсь, буду знать. Мне нужно подробное логическое объяснение алгоритма. С программной реализацией, думаю, что справлюсь.
Это сообщение отредактировал(а) Krieger - 10.12.2009, 11:27 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: нет Всего: 183 |
Да нет тут никакого алгоритма. Одна сплошная реализация, а она зависит от языка.
Еще раз: нужна структура данных, которая эффективно отображает строку на счетчик. Чаще всего это называется Map. Читаешь текст пословно, для каждого слова ищешь его в Map, если нет - добавляешь (с нулевым счетчиком), затем инкрементируешь счетчик. -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "Ruby: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Ruby: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |