diff --git a/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/README.md b/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/README.md index 0c5d0a1..3d8cba6 100644 --- a/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/README.md +++ b/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/README.md @@ -1,118 +1,137 @@ # Сырой текст задания → плоская карточка ## Описание проекта -Проект предназначен для преобразования **сырого текста** (например, из файла `.txt` или `md`) в **плоскую карточку** – компактный формат, пригодный для импорта в системы обучения, флеш-карточки и т.п. -Ключевая идея: взять исходный текст задания, разбить его на логические части (вопросы/ответы), добавить метаданные (теги, уровень сложности) и вывести результат в виде простого CSV‑файла. +Проект реализует конвертацию «сырого» текста задания (например, из формата Markdown или простого текста) в **плоскую карточку** – компактный формат, пригодный для отображения в чат‑ботах, веб‑страницах и мобильных приложениях. +Основные возможности: -> **Важно** – проект не содержит графического интерфейса. Всё делается через командную строку. +- Парсинг исходного текста с выделением заголовков, списков, цитат и т.д. +- Генерация упрощённой карточки без лишних разметок. +- Поддержка нескольких языков (английский/русский) через простую локализацию. -## Структура репозитория +## Структура проекта ``` -. +project/ ├── src/ -│ ├── main.py # точка входа, обрабатывает CLI -│ └── processor.py # логика преобразования текста в карточки -├── tests/ # unit‑тесты (необязательно) -├── requirements.txt # зависимости проекта -└── README.md +│ ├── parser.py # Парсер исходного текста +│ ├── card_generator.py # Генератор карточки +│ └── utils.py # Вспомогательные функции +├── tests/ # Тесты (необязательно) +├── requirements.txt # Зависимости +└── README.md # Это файл ``` ## Установка зависимостей ```bash -# Создайте виртуальное окружение (рекомендуется) +# Создайте виртуальное окружение (рекомендовано) python -m venv .venv -source .venv/bin/activate # Windows: .\.venv\Scripts\activate +source .venv/bin/activate # Windows: .venv\Scripts\activate -# Установите зависимости из файла requirements.txt +# Установите зависимости из requirements.txt pip install -r requirements.txt ``` -`requirements.txt` содержит только стандартные библиотеки, но если вы захотите добавить поддержку Markdown‑парсинга или NLP‑модулей – просто добавьте нужный пакет. +`requirements.txt` содержит только стандартные библиотеки, но если понадобится парсинг Markdown – добавьте `markdown`. -## Запуск проекта +## Запуск каждого файла -### 1. Преобразование одного файла +### 1. Парсер (`parser.py`) +Парсер читает сырой текст и возвращает структуру данных (словарь/список). ```bash -python src/main.py --input raw_task.txt --output flat_card.csv +python src/parser.py ``` -- `--input` – путь к файлу с сырым текстом задания. -- `--output` – куда будет сохранён CSV‑файл. - -#### Параметры (опциональные) - -| Флаг | Описание | -|------|----------| -| `--tags TAG1,TAG2` | Добавить теги, разделённые запятой. | -| `--difficulty LEVEL` | Указать уровень сложности (`easy`, `medium`, `hard`). | - -### 2. Массовый запуск - -Если у вас несколько файлов в каталоге `tasks/`, можно использовать цикл: +Пример: ```bash -for f in tasks/*.txt; do - python src/main.py --input "$f" \ - --output "cards/$(basename "${f%.*}").csv" \ - --tags math,algebra -done +python src/parser.py data/raw_task.txt ``` -### 3. Проверка работы +Вывод в консоль будет выглядеть так: +```json +{ + "title": "Задача №1", + "body": [ + {"type":"paragraph","text":"Выполните ..."}, + {"type":"list","items":["Пункт 1", "Пункт 2"]}, + ... + ] +} +``` -После выполнения вы получите CSV‑файл вида: +### 2. Генератор карточки (`card_generator.py`) +Генерирует плоскую карточку из структуры, полученной парсером. -```csv -question,answer,tags,difficulty -"What is the derivative of x^2?","2x","math,calculus","easy" -... +```bash +python src/card_generator.py +``` + +Пример: + +```bash +python src/card_generator.py data/parsed.json data/card.txt +``` + +### 3. Полный скрипт (`main.py`) +Если в проекте есть `main.py`, он объединяет оба шага. + +```bash +python src/main.py +``` + +Пример: + +```bash +python src/main.py data/raw_task.txt data/card.txt ``` ## Пример использования -Предположим, у вас есть файл `example_task.txt` со следующим содержанием: +1. **Соберите сырой текст задания** в файл `raw_task.txt`: + ``` + # Задача 1 + + Напишите программу, которая выводит сумму двух чисел. + + ## Требования + + - Ввод: два целых числа + - Вывод: их сумма + ``` -``` -Вопрос: Какой результат умножения 7 и 6? -Ответ: 42 -Теги: математика, арифметика -Уровень сложности: средний -``` +2. **Запустите конвертацию**: -Запустите скрипт: + ```bash + python src/main.py raw_task.txt card.txt + ``` -```bash -python src/main.py --input example_task.txt --output example_card.csv -``` +3. **Результат (`card.txt`)**: + ``` + Задача 1 + Напишите программу, которая выводит сумму двух чисел. + + Требования: + - Ввод: два целых числа + - Вывод: их сумма + ``` -Полученный CSV будет выглядеть так: +## Тесты (необязательно) -```csv -question,answer,tags,difficulty -"Какой результат умножения 7 и 6?","42","математика, арифметика","средний" -``` - -Теперь файл `example_card.csv` можно импортировать в любую систему флеш‑карточек (Anki, Quizlet и др.). - -## Тесты - -Если вы хотите проверить корректность работы: +Если в проекте есть папка `tests`, запустите: ```bash pytest tests/ ``` -(Требуется пакет `pytest`, добавьте его в `requirements.txt` при необходимости.) +## Лицензия -## Вклад - -1. Сделайте форк репозитория. -2. Создайте ветку с вашим изменением (`git checkout -b feature/…`). -3. Запуште и откройте Pull Request. +MIT License – см. файл `LICENSE`. --- -**Автор:** *[Ваше имя]* -**Дата создания:** 26‑05‑2026 \ No newline at end of file +**Важно:** +- Все пути указываются относительно корня проекта. +- При работе с большими файлами используйте потоковую обработку (`open(..., 'r', encoding='utf-8')`). + +Если возникнут вопросы – откройте issue в репозитории! \ No newline at end of file