@@ -5,13 +5,14 @@ My clean, typed, and tested solutions to LeetCode problems (Python 3.10+).
55<!-- START_STATS -->
66✅ ** Total** : ** 6**
77🟢 ** Easy** : 5   ; ` ░░░░░░░░░░ `   ; _ (0.5%)_
8- 🟡 ** Medium** : 1   ; ` ░░░░░░░░░░ `   ; _ (0.1 %)_
8+ 🟡 ** Medium** : 1   ; ` ░░░░░░░░░░ `   ; _ (0.0 %)_
99🔴 ** Hard** : 0   ; ` ░░░░░░░░░░ `   ; _ (0.0%)_
1010<!-- END_STATS -->
1111
1212<!-- START_TABLE -->
1313<details >
14- <summary ><b > Show all solved problems (6)</b ></summary >
14+ <summary ><b > Show all solved problems </b ></summary >
15+
1516## Problems
1617
1718| # | Title | Difficulty | Solution |
@@ -33,25 +34,18 @@ My clean, typed, and tested solutions to LeetCode problems (Python 3.10+).
3334Этот репозиторий — не просто сборник решений, а ** готовая среда для практики LeetCode** с автоматизацией и профессиональным workflow.
3435
3536### 💡 Что получает клонировавший:
36- - ✅ Все решения на ** Python ^3.10** с type hints
37- - ✅ Тесты для каждой задачи (` pytest ` )
38- - ✅ Автоматическая проверка стиля (` ruff ` )
39- - ✅ Автообновляемый ` README.md ` с прогрессом и ссылками
40- - ✅ Готовая CI/CD-настройка через GitHub Actions
37+ - ✅ Все решения на ** Python ^3.10** с type hints
38+ - ✅ Тесты для каждой задачи (` pytest ` )
39+ - ✅ Автоматическая проверка стиля (` ruff ` )
40+ - ✅ Автоматическое создание /feat ветки, файлов проблемы и теста
41+ - ✅ Генерация файлов с контентом: условие задачи, сниппеты кода и примеры тестов (fetch from LeetCode API)
42+ - ✅ Автообновляемый ` README.md ` с прогрессом и ссылками
43+ - ✅ Интеллектуальное управление кэшем: автоматическое обновление раз в неделю или по требованию
44+ - ✅ Готовая CI/CD-настройка через GitHub Actions
4145- ✅ Чёткая структура: ` solutions/ ` , ` tests/ ` , ` scripts/ `
4246
4347⚠️ Для работы скрипта обновления README требуется интернет (запрос к LeetCode 'API' при первом запуске).
4448
45- ⚠️ Именование файлов
46-
47- Номер задачи — 4 цифры с ведущими нулями — всегда в конце имени файла, после ` _ ` .
48-
49- | Тип | Шаблон | Обязательно? |
50- | ------| ------| -------------|
51- | Решение | {название_snake_case}_ {NNNN}.py | Да (для парсинга номера) |
52- | Тест | test_ {название_snake_case}_ {NNNN}.py | Желательно (для ясности), но достаточно test_ {название_snake_case/или номер}.py |
53-
54-
5549<hr >
5650
5751<details >
@@ -60,19 +54,14 @@ My clean, typed, and tested solutions to LeetCode problems (Python 3.10+).
6054This repo provides a production-grade setup for LeetCode practice:
6155- Typed, tested Python 3.10+ solutions
6256- Automated README generation with progress bars
57+ - Automated creation of /feat branch, problem and test files
58+ - Automated generation of files with content: problem statement, code snippets, and test examples (fetch from LeetCode API)
59+ - Smart cache management: automatic weekly refresh or on-demand
6360- Preconfigured CI (tests + linter) and CD (auto-update)
6461- No manual work — just solve, commit, PR
6562
6663⚠️ For proper README generation, internet access is required (to query LeetCode 'API' on first run).
6764
68- ⚠️ Naming convention
69-
70- The problem number — 4 digits with leading zeros — always at the end of the filename, after _ .
71-
72- | Type | Pattern | Required? |
73- | ------| -------| -----------|
74- | Solution | {problem_name_snake_case}_ {NNNN}.py | Yes (for number parsing) |
75- | Test | test_ {problem_name_snake_case}_ {NNNN}.py | Recommended (for clarity), but enough to have test_ {problem_name_snake_case/or number}.py |
7665</details >
7766
7867<hr >
@@ -109,12 +98,30 @@ pip install -e .[dev]
10998``` bash
11099pytest && ruff check .
111100```
112- #### 5. Создай токен GitHub и добавь его в Secrets репозитория
101+
102+ #### 5. Используй скрипт обновления README (опционально)
103+ ``` bash
104+ python scripts/update_readme.py
105+ ```
106+ Для принудительного обновления кэша задач используйте флаг ` --force-refresh-cache ` :
107+ ``` bash
108+ python scripts/update_readme.py --force-refresh-cache
109+ ```
110+
111+ - Кэш задач обновляется автоматически раз в неделю (от даты изменения файла problems_cache.json). Для принудительного обновления кэша задач используйте флаг --force-refresh-cache:
112+
113+ #### 6. Создай токен GitHub и добавь его в Secrets репозитория
1131141 ) https://github.com/settings/tokens → перейди по ссылке
1141152 ) Generate new token (classic) → Note: ` What’s this token for? ` → Expiration: ` your choice ` → Scopes: ` repo ` +` workflow ` → Generate token → Скопируй токен
1151163 ) Repo LeetCode_solutions Settings → Secrets and variables → Actions → New repository secret с именем ` GH_PAT ` → Вставь токен → Add secret
116117
117- #### 6. Создавай новую feat/ветку → Решай новую задачу → делай push → PR → merge в main → CI/CD сделает всё остальное автоматически!
118- 1 ) Удаление веток опционально (в истории коммитов сохраняется вся инфа)
118+ #### 7. Используй скрипт → Решай новую задачу → делай push → PR → merge в main → CI/CD сделает всё остальное автоматически!
119+
120+ ``` bash
121+ python3 scripts/create_problem.py < номер_задачи>
122+ ```
123+
124+ 1 ) Скрипт создает новую ** /feat** ветку, а так же файлы решения и тестов минимизируя рутину
125+ 2 ) Удаление веток после ** merge** опционально (в истории коммитов сохраняется вся инфа)
119126</details >
120127<hr >
0 commit comments