-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTechnical specification
20 lines (17 loc) · 2.73 KB
/
Technical specification
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Аналізатор текстів
Ціль: реалізація ефективної по часу виконання програми що робить статистичний аналіз текстів.
Задача: реалізувати проект у вигляді клієнт — сервера. Тип з'єднання — TCP. Необхідно підрахувати повну кількість слів у тексті, кількість унікальних слів, та кількість слів у найдовшій послідовності слів де слова не повторюються.
Опис: Клієнт відкриває з’єднання з сервером. Клієнт читає текстовий файл, ім’я якого передається через командний рядок. Клієнт надсилає вміст файлу на сервер, де відбуваються основні обчислення. Сервер повертає клієнту результат обчислення. Клієнт виводить результат в консоль. Клієнт закриває з’єднання з сервером і завершує роботу.
Словом вважається будь-яка послідовність латинських літер розділена символом не-літерою. Але слова типу Alice's, isn't, I'm,… вважати одним словом. Великі і маленькі літери не розрізняти.
За замовчанням вважаємо що текст у файлі в кодуванні UTF-8.
Приклад:
'I do,' Alice hastily replied; 'at least--at least I mean what I say--that's the same thing, you know.'
Сервер повинен повернути
кількість слів: 20
кількість унікальних слів: 16
найдовша послідовність унікальних слів: 10 (mean what I say that's the same thing you know)
Формат відповіді сервера — JSON
Сервер веде лог своєї роботи в консоль.
Написати на С++, клієнт і сервер повинні бути косплатформовими (на рівні джерельного коду) Клієнт реалізувати з використанням бібліотеки Qt, сервер - boots
зразок тексту для аналізу взяти тут: https://github.com/amueller/word_cloud/blob/main/examples/alice.txt
Усі “незрозумілі вам моменти” та “не однозначні формулювання” у ТЗ - можна зробити на власний розсуд.