38 lines
2.2 KiB
Markdown
38 lines
2.2 KiB
Markdown
## Домашнее задание №3 «Частотный анализ»
|
||
|
||
Необходимо написать Go функцию, принимающую на вход строку с текстом и
|
||
возвращающую слайс с 10-ю наиболее часто встречаемыми в тексте словами.
|
||
|
||
* Если есть более 10 самых частотых слов (например 15 разных слов встречаются ровно 133 раза,
|
||
остальные < 100), можно вернуть любые 10 из самых частотных.
|
||
|
||
* Словоформы не учитываем. "нога", "ногу", "ноги" - это разные слова.
|
||
|
||
* Слово с большой и маленькой буквы считать за разные слова.
|
||
"Нога" и "нога" - это разные слова.
|
||
|
||
* Знаки препинания считать "буквами" слова или отдельными словами.
|
||
"-" (тире) - это отдельное слово. "нога," и "нога" - это разные слова.
|
||
|
||
Пример: "cat and dog, one dog,two cats and one man".
|
||
"and", "one", "dog," - встречаются 2, 2 и 1 раз, это топ-3.
|
||
|
||
При необходимости можно выделять дополнительные функции / ошибки.
|
||
|
||
**(*) Дополнительное задание: учитывать большие/маленькие буквы и знаки препинания:**
|
||
* "Нога" и "нога" - это одинаковые слова, "нога!", "нога" и " 'нога' " - это одинаковые слова;
|
||
* "какой-то" и "какойто" - это разные слова, "—" (тире) - это не слово.
|
||
|
||
### Критерии оценки
|
||
- Пайплайн зелёный - 4 балла
|
||
- Добавлены новые юнит-тесты - до 4 баллов
|
||
- Понятность и чистота кода - до 2 баллов
|
||
- Дополнительное задание на баллы не влияет
|
||
|
||
#### Зачёт от 7 баллов
|
||
|
||
### Подсказки
|
||
- `regexp.MustCompile`
|
||
- `strings.Split`
|
||
- `sort.Slice`
|