Skip to content

Latest commit

 

History

History

hw03_frequency_analysis

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Домашнее задание №3 «Частотный анализ»

Необходимо написать Go функцию, принимающую на вход строку с текстом и возвращающую слайс с 10-ю наиболее часто встречаемыми в тексте словами.

Если слова имеют одинаковую частоту, то должны быть отсортированы лексикографически.

  • Словом считается набор символов, разделенных пробельными символами.

  • Если есть более 10 самых частотых слов (например 15 разных слов встречаются ровно 133 раза, остальные < 100), то следует вернуть 10 лексикографически первых слов.

  • Словоформы не учитываем: "нога", "ногу", "ноги" - это разные слова.

  • Слово с большой и маленькой буквы считать за разные слова. "Нога" и "нога" - это разные слова.

  • Знаки препинания считать "буквами" слова или отдельными словами. "-" (тире) - это отдельное слово. "нога," и "нога" - это разные слова.

Пример

cat and dog, one dog,two cats and one man

Топ 7:

  • and (2)
  • one (2)
  • cat (1)
  • cats (1)
  • dog, (1)
  • dog,two (1)
  • man (1)

При необходимости можно выделять дополнительные функции / ошибки.

(*) Дополнительное задание: не учитывать регистр букв и знаки препинания по краям слова:

  • "Нога" и "нога" - это одинаковые слова, "нога!", "нога", "нога," и " 'нога' " - это одинаковые слова;
  • "какой-то" и "какойто" - это разные слова.
  • "dog,cat", "dog...cat", "dogcat" - разные слова
  • "-------" это слово
  • "-" словом не является

Критерии оценки

  • Пайплайн зелёный - 4 балла
  • Добавлены новые юнит-тесты - до 4 баллов
  • Понятность и чистота кода - до 2 баллов
  • Дополнительное задание на баллы не влияет

Зачёт от 7 баллов

Подсказки

  • regexp.MustCompile
  • strings.Split
  • strings.Fields
  • sort.Slice

Частые ошибки

  • regexp.MustCompile используется в функции, а не уровне пакета - это плохо по следующим причинам:
    • производительность: нет смысла компилировать регулярку каждый раз при вызове функции;
    • функция не должна паниковать!
  • При выполнении задания со звёздочкой забывают, что тире не должно являться словом.