team-work-it-semkaeee

0
5 месяцев назад
4 месяца назад
4 месяца назад
4 месяца назад
5 месяцев назад
4 месяца назад
README.md

Текстовый анализатор с индексом слов

📋 Обзор проекта

Текстовый анализатор - это консольное приложение на C# для анализа текстовых файлов с построением индекса слов, подсчетом статистики и поддержкой быстрого поиска. Проект реализован в рамках учебного задания с распределением ролей между студентами.

👥 Участники проекта

РольУчастникGitVerse аккаунт
Student 1Семён
@semkaeee
Student 2Кирилл
@KiraD
Student 3Дмитрий
@D1amond

🏗️ Структура репозитория

📁 Текстовый анализатор/ ├── 📁 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 (последняя версия)
  • Инструменты: Использован контекст спецификации для точного соответствия ТЗ
  • Процесс:
    1. Анализ спецификации
      codex.md
    2. Поэтапная реализация всех требуемых классов
    3. Проверка на соответствие каждому пункту ТЗ
    4. Добавление встроенных тестов для верификации
  • Результат:
    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%):

  1. Все классы из спецификации
    • WordPosition, WordInfo, TextAnalyzer, AnalysisResult
  2. Все методы TextAnalyzer
    • LoadText(), LoadFromFile(), Analyze(), BuildIndex()
    • BinarySearchWord(), SearchWordPositions()
    • SortByFrequency(), GetStatistics(), GetTopWords()
    • SaveIndex(), LoadIndex()
  3. Все алгоритмы
    • QuickSort (самостоятельная реализация)
    • Бинарный поиск O(log n)
  4. Все команды интерфейса
    • load, analyze, search, top, save, test, help, exit
  5. Обработка текста
    • Кириллица и латиница
    • Регистронезависимость
    • Игнорирование пунктуации
    • Дефисы в словах

🧪 Тестирование

Встроенная система тестов проверяет:

  • Подсчет частоты слов
  • Регистронезависимость
  • Сортировку по частоте
  • Поиск позиций слов

🎯 Использование

Запуск приложения:

Пример рабочего сеанса:

Текстовый анализатор с индексом слов Версия 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/
содержатся материалы, подтверждающие работу приложения:

  1. Тестовые тексты (
    test_texts/
    ) - примеры входных данных
  2. Выходные данные (
    output/
    ) - сохраненные индексы и статистика
  3. Тестовые сценарии (
    test_scenarios/
    ) - последовательности команд
  4. Логи выполнения (
    logs/
    ) - журналы работы приложения

📈 Выводы

Проект успешно реализован по методологии распределенной разработки:

  1. Спецификация (Student 1) - создана полная и детальная ТЗ
  2. Реализация (Student 2) - код соответствует 100% требований
  3. Ревью (Student 3) - проведена проверка качества и соответствия

Преимущества подхода:

  • Четкое разделение ответственности
  • Контроль качества через ревью
  • Документированный процесс разработки
  • Возможность проверки соответствия ТЗ

У кого я был вторым студентом: @alika_mat