team-work-it-semkaeee
5 месяцев назад
4 месяца назад
4 месяца назад
4 месяца назад
5 месяцев назад
4 месяца назад
4 месяца назад
README.md
Текстовый анализатор с индексом слов
📋 Обзор проекта
Текстовый анализатор - это консольное приложение на C# для анализа текстовых файлов с построением индекса слов, подсчетом статистики и поддержкой быстрого поиска. Проект реализован в рамках учебного задания с распределением ролей между студентами.
👥 Участники проекта
| Роль | Участник | GitVerse аккаунт |
|---|---|---|
| Student 1 | Семён | |
| Student 2 | Кирилл | |
| Student 3 | Дмитрий | |
🏗️ Структура репозитория
📁 Текстовый анализатор/
├── 📁 spec/ # Спецификации проекта
│ └── 📄 codex.md # Полная спецификация от Student 1
├── 📁 dev/ # Разработка
│ └── 📄 solution.cs # Полный исходный код приложения
├── 📁 demo/ # Демонстрационные артефакты
│ └── 📁 screenshots/ # Скриншоты работы приложения
├── 📄 README.md # Этот файл
🔧 Процесс разработки
Этап 1: Создание спецификации (Student 1)
- Модель: ChatGPT/GigaCodeIDE 5.1+
- Результат:
с полным техническим заданиемspec/codex.md - Содержание:
- Системные требования и ограничения
- Описание классов и методов
- Форматы ввода/вывода
- Алгоритмы (QuickSort, бинарный поиск)
- Критерии приемки и тестовые сценарии
Этап 2: Реализация кода (Student 2)
- Модель: DeepSeek (последняя версия)
- Инструменты: Использован контекст спецификации для точного соответствия ТЗ
- Процесс:
- Анализ спецификации codex.md
- Поэтапная реализация всех требуемых классов
- Проверка на соответствие каждому пункту ТЗ
- Добавление встроенных тестов для верификации
- Анализ спецификации
- Результат:
- полный рабочий кодdev/solution.cs
Этап 3: Ревью кода (Student 3)
- Проверки:
- Соответствие спецификации (100%)
- Качество кода и читаемость
- Обработка ошибок
- Эффективность алгоритмов
- Соблюдение best practices
- Формат: Комментарии в Pull Request с конкретными замечаниями
🚀 Описание реализации
Архитектура приложения
Ключевые особенности реализации
1. Анализ текста
- Регулярные выражения для извлечения слов: [\p{L}\p{M}]+(?:-[\p{L}\p{M}]+)*
- Поддержка кириллицы, латиницы и дефисов в словах
- Регистронезависимая обработка (
)ToLower() - Подсчет позиций (строка:столбец, 1-based индексы)
2. Алгоритмы сортировки и поиска
3. Статистика
- Общее количество слов
- Количество уникальных слов
- Средняя длина слова
- Самые длинные/короткие слова
- Время анализа
4. Командный интерфейс
load <путь_к_файлу> - загрузить текст из файла
analyze - проанализировать текст
search <слово> - найти слово в индексе
top <число> - показать топ N частых слов
save index - сохранить индекс в файл
test - запустить тесты
help - показать справку
exit - завершить работу
Технические характеристики
Производительность:
- Время анализа: O(n) для n слов
- Время поиска: O(log n) с использованием бинарного поиска
- Память: O(k) для k уникальных слов
- Поддержка: Тексты до 1 млн слов
Обработка граничных случаев:
- Пустой текст
- Одно слово в тексте
- Повторы слов
- Знаки препинания
- Специальные символы
- Большие файлы (построчная обработка)
📊 Соответствие спецификации
✅ Полностью реализовано (100%):
- Все классы из спецификации
- WordPosition, WordInfo, TextAnalyzer, AnalysisResult
- Все методы TextAnalyzer
- LoadText(), LoadFromFile(), Analyze(), BuildIndex()
- BinarySearchWord(), SearchWordPositions()
- SortByFrequency(), GetStatistics(), GetTopWords()
- SaveIndex(), LoadIndex()
- Все алгоритмы
- QuickSort (самостоятельная реализация)
- Бинарный поиск O(log n)
- Все команды интерфейса
- load, analyze, search, top, save, test, help, exit
- Обработка текста
- Кириллица и латиница
- Регистронезависимость
- Игнорирование пунктуации
- Дефисы в словах
🧪 Тестирование
Встроенная система тестов проверяет:
- Подсчет частоты слов
- Регистронезависимость
- Сортировку по частоте
- Поиск позиций слов
🎯 Использование
Запуск приложения:
Пример рабочего сеанса:
Текстовый анализатор с индексом слов
Версия 1.0
=====================================
> load demo/test_texts/sample1_simple.txt
Текст загружен из файла: demo/test_texts/sample1_simple.txt
> analyze
=== Статистика анализа ===
Всего слов: 9
Уникальных слов: 8
Средняя длина слова: 6.22 символов
Время анализа: 1.23 мс
> search привет
Слово 'привет' найдено 2 раз(а):
Строка 1, позиция 1
Строка 1, позиция 8
> top 5
Топ 5 самых частых слов:
1. привет - 2 раз(а)
2. это - 2 раз(а)
3. текст - 2 раз(а)
4. мир - 1 раз(а)
5. тестовый - 1 раз(а)
> save index
Индекс сохранен в файл: word_index.txt
> exit
Завершение работы...
🔍 Артефакты подтверждения
В папке содержатся материалы, подтверждающие работу приложения:demo/
- Тестовые тексты (
) - примеры входных данныхtest_texts/ - Выходные данные (
) - сохраненные индексы и статистикаoutput/ - Тестовые сценарии (
) - последовательности командtest_scenarios/ - Логи выполнения (
) - журналы работы приложенияlogs/
📈 Выводы
Проект успешно реализован по методологии распределенной разработки:
- Спецификация (Student 1) - создана полная и детальная ТЗ
- Реализация (Student 2) - код соответствует 100% требований
- Ревью (Student 3) - проведена проверка качества и соответствия
Преимущества подхода:
- Четкое разделение ответственности
- Контроль качества через ревью
- Документированный процесс разработки
- Возможность проверки соответствия ТЗ
У кого я был вторым студентом: @alika_mat