Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
4aa7c08
Первый отчет
rizespbya Jul 11, 2025
fb9fd49
Первый отчет
rizespbya Jul 11, 2025
083d9a7
Конспект
rizespbya Jul 28, 2025
c7669ce
Алгоритмы made-easy
rizespbya Jul 28, 2025
437890c
Задания из Основы Python
rizespbya Jul 28, 2025
ac0683c
Задания из Основы Python
rizespbya Jul 29, 2025
fb7d6a2
Задания из Основы Python
rizespbya Jul 29, 2025
82ece81
Задания из Основы Python
rizespbya Aug 1, 2025
2b31f9f
Задания из Основы Python
rizespbya Aug 4, 2025
8270e86
Задания из Основы Python
rizespbya Aug 7, 2025
4d4e9cf
Задания из Основы Python
rizespbya Aug 9, 2025
7c298d6
Задания из Основы Python
rizespbya Aug 13, 2025
dc94cc3
Задания из Основы Python
rizespbya Aug 15, 2025
d1c4989
Задания из Основы Python
rizespbya Aug 19, 2025
be23bad
Задания из Основы Python
rizespbya Aug 23, 2025
ffd7f4f
Задания из Основы Python
rizespbya Aug 25, 2025
de6f7f7
Задания из Основы Python
rizespbya Aug 26, 2025
83990d2
Задания из Основы Python
rizespbya Aug 28, 2025
3fd2ac1
Задания из Основы Python
rizespbya Sep 8, 2025
fa9a5de
Quiz #6 (https://github.com/SENATOROVAI/intro-cs/issues/6)
rizespbya Sep 18, 2025
9a47339
Cpython #4 (https://github.com/SENATOROVAI/intro-cs/issues/4)
rizespbya Sep 21, 2025
b185d0f
Cpython #4 (https://github.com/SENATOROVAI/intro-cs/issues/4)
rizespbya Sep 22, 2025
ecd282d
Fixes
rizespbya Sep 23, 2025
8ec5937
Converted to *.py
rizespbya Sep 23, 2025
41f053c
Виртуальное окружение #7 (https://github.com/SENATOROVAI/intro-cs/is…
rizespbya Sep 24, 2025
c41ddfa
issues #2 (https://github.com/SENATOROVAI/intro-cs/issues/2)
rizespbya Sep 26, 2025
d5ea79c
UPDATE README #416
rizespbya Sep 27, 2025
430d404
UPDATE README
rizespbya Sep 27, 2025
66a964b
Merge pull request #1 from rizespbya/dev
rizespbya Sep 27, 2025
44cc857
Контрибьютинг в Open Source #8 (https://github.com/SENATOROVAI/intro…
rizespbya Sep 27, 2025
c16eb36
Added project structure
rizespbya Sep 28, 2025
e67683c
Задания из Основы Python
rizespbya Oct 4, 2025
2580c52
Задания из Основы Python
rizespbya Oct 5, 2025
f9d8c38
Задания из Основы Python
rizespbya Oct 8, 2025
8ebfcdf
pd.dataпЗадания из Основы Python
rizespbya Oct 9, 2025
0267c3e
Задания из Основы Python
rizespbya Oct 11, 2025
6ef27af
Блокноты Макаров
rizespbya Oct 12, 2025
a1d8f26
Merge branch 'TEMP'
rizespbya Oct 16, 2025
6134041
Блокноты Макаров
rizespbya Oct 17, 2025
055dffb
ООП Молчанов
rizespbya Oct 19, 2025
20e39ba
Правки линтеров
rizespbya Oct 23, 2025
4eafc76
Reconverted all files to *.py
rizespbya Oct 25, 2025
81ac708
Fixed get missing timeout error
rizespbya Oct 25, 2025
f25e753
Fixed post,put, delete missing timeout error
rizespbya Oct 25, 2025
ed4516a
Конспекты книг
rizespbya Oct 26, 2025
ed372b7
Changed flake8 max length
rizespbya Oct 27, 2025
b0bab93
Set up isort
rizespbya Oct 29, 2025
93a8a0c
Setup pre-commit action
rizespbya Oct 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 24 additions & 24 deletions .github/workflows/isort.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ name: SENATOROV
on:
push:
branches:
- "**"
- '**'

schedule:
- cron: "0 0 * * *" # Run every day
- cron: '0 0 * * *' # Run every day
workflow_dispatch:
create:
delete:
Expand All @@ -16,26 +16,26 @@ jobs:
isort:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: isort/isort-action@v1
with:
- uses: actions/checkout@v4
- uses: isort/isort-action@v1
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install isort nbqa
- name: isort
run: |
nbqa isort --float-to-top $(git ls-files '*.ipynb')
isort --float-to-top $(git ls-files '*.py')
- name: Commit and push changes
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
run: |
git config --global user.name "GitHub Actions"
git config --global user.email "actions@github.com"
git remote set-url origin https://x-access-token:${{ secrets.GH_TOKEN }}@github.com/${{ github.repository }}
git pull origin ${{ github.ref_name }}
git add .
git diff --quiet || (git commit -m "Sort imports and apply isort fixes" && git push origin ${{ github.ref_name }})
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install isort nbqa
- name: isort
run: |
nbqa isort --float-to-top $(git ls-files '*.ipynb')
isort --float-to-top --profile=black $(git ls-files '*.py')
- name: Commit and push changes
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
run: |
git config --global user.name "GitHub Actions"
git config --global user.email "actions@github.com"
git remote set-url origin https://x-access-token:${{ secrets.GH_TOKEN }}@github.com/${{ github.repository }}
git pull origin ${{ github.ref_name }}
git add .
git diff --quiet || (git commit -m "Sort imports and apply isort fixes" && git push origin ${{ github.ref_name }})
21 changes: 21 additions & 0 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: pre-commit

on:
pull_request:
branches:
- '*'
push:
branches:
- '*'

jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
with:
python-version: '3.11'
- uses: pre-commit/action@v3.0.1
with:
extra_args: --all-files
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# Для задание из issue 7 Venv
/SENATOROV
NO_COMMIT.py


# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
Expand Down
57 changes: 26 additions & 31 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
repos:
- repo: https://github.com/mwouts/jupytext
rev: "v1.16.4b"
rev: 'v1.16.4b'
hooks:
- id: jupytext
entry: jupytext
language: python
types: [jupyter]
args:
- --from=ipynb
- --to=py:light
- --set-formats=ipynb,py:light
- --quiet
- --sync
- --warn-only
exclude: '.*\.md$'
- id: jupytext
entry: jupytext
language: python
types: [jupyter]
args:
- --from=ipynb
- --to=py:light
- --set-formats=ipynb,py:light
- --quiet
- --sync
- --warn-only
exclude: '.*\.md$'
- repo: https://github.com/PyCQA/docformatter
rev: "eb1df347edd128b30cd3368dddc3aa65edcfac38"
rev: 'eb1df347edd128b30cd3368dddc3aa65edcfac38'
hooks:
- id: docformatter
args: [--in-place, --wrap-descriptions=90, --style=google]
- repo: https://github.com/psf/black.git
rev: "24.10.0"
rev: '24.10.0'
hooks:
- id: black

Expand All @@ -36,21 +36,21 @@ repos:
types_or: [jupyter, markdown]
additional_dependencies: [black]
- repo: https://github.com/asottile/pyupgrade
rev: "v3.19.0"
rev: 'v3.19.0'
hooks:
- id: pyupgrade
args: [--py39-plus]
- repo: https://github.com/pycqa/isort
rev: "5.13.2"
rev: '5.13.2'
hooks:
- id: isort
entry: isort
args:
- --profile=black
- --profile=black
- --float-to-top

- repo: https://github.com/nbQA-dev/nbQA
rev: "1.9.0"
rev: '1.9.0'
hooks:
- id: nbqa
entry: nbqa blacken-docs
Expand Down Expand Up @@ -79,8 +79,8 @@ repos:
types_or: [jupyter, markdown]
additional_dependencies: [isort]
args:
- --profile=black
- --float-to-top
- --profile=black
- --float-to-top

- repo: https://github.com/codespell-project/codespell
rev: v2.3.0
Expand Down Expand Up @@ -165,8 +165,6 @@ repos:
- --warn-return-any
- --disallow-any-explicit



- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.13.0
hooks:
Expand Down Expand Up @@ -195,7 +193,6 @@ repos:
- --warn-return-any
- --disallow-any-explicit


additional_dependencies:
- mypy
- pandas-stubs
Expand All @@ -222,9 +219,8 @@ repos:
- --const-naming-style=any
- --disable=E0401,W0104,R0903,R1721,E1101,E0611,F0002,C0305,C0303,E2515


- repo: https://github.com/pylint-dev/pylint
rev: "v3.3.1"
rev: 'v3.3.1'
hooks:
- id: pylint
name: pylint
Expand All @@ -233,10 +229,10 @@ repos:
types: [python]
args:
[
"--ignore=no_check*,__init__.py",
"--max-line-length=90",
"--const-naming-style=any",
"--disable=E0401,W0104,R0903,R1721,E1101,E0611,F0002,C0305,line-too-long,C0303,E2515"
'--ignore=no_check*,__init__.py',
'--max-line-length=90',
'--const-naming-style=any',
'--disable=E0401,W0104,R0903,R1721,E1101,E0611,F0002,C0305,line-too-long,C0303,E2515',
]
additional_dependencies: [pylint]

Expand Down Expand Up @@ -275,4 +271,3 @@ repos:
- --ignore-regex=^\s*"image\/(jpeg|png|gif|bmp|tiff)":\s.*
- --ignore-regex=[A-Za-z0-9+/]{100,}
- --skip=*.js,*.html,*.css,*.svg",*.json,*.png,*.jpg,*.yml,*.yaml

126 changes: 126 additions & 0 deletions Python/algoritmy-i-struktury-dannykh-na-python/chapter_10.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "13e666a1",
"metadata": {},
"outputs": [],
"source": [
"\"\"\"Сложные вычислительные задачи.\"\"\""
]
},
{
"cell_type": "markdown",
"id": "8011fe2e",
"metadata": {},
"source": [
"Функция f(n) называется полиномиально возрастающей, если она растет растёт пропорционально полиному (многочлену) от размера входных данных.\n",
"\n",
"**Полиномиально возрастающие функции** (примеры):\n",
"* f(n) = 3n + 2 → линейный рост O(n)\n",
"* f(n) = n^2 → квадратичный рост O(n^2)\n",
"* f(n) = 5n^3 + 10n → кубический рост O(n^3)\n",
"\n",
"**Не является полиномиальным ростом**:\n",
"Эти функции растут быстрее любого полинома.\n",
"\n",
"* Экспоненциальный рост: f(n) = 2^n, f(n) = e^n\n",
"* Факториальный рост: f(n) = n!\n",
"* Суперполиномиальный рост: f(n) = n * log n\n",
"\n",
"**Полиномиальный** означает, что «растёт как какая-то степень n»\n",
"\n",
"**Полиномиально возрастающий** — значит растущий как многочлен от n , например n, n^2, n^10, но не как 2^n или n! "
]
},
{
"cell_type": "markdown",
"id": "1f1c97e1",
"metadata": {},
"source": [
"**P-задача** – это класс задач, которые можно решить быстро (за полиномиальное время) на обычном компьютере (время работы алгоритма растёт как многочлен от размера входа: например, O(n), O(n^2), O(n^3) — это всё полиномиально)\n",
"\n",
"**NP-задача** — это класс задач, для которых решение можно проверить быстро (за полиномиальное время), если оно уже дано."
]
},
{
"cell_type": "markdown",
"id": "cd403d1f",
"metadata": {},
"source": [
"# NP-полнота"
]
},
{
"cell_type": "markdown",
"id": "156f10e6",
"metadata": {},
"source": [
"NР - недетерминированное полиномиальное время\n",
"\n",
"NР относится к группе вычислительных задач, которые решаются за время, полиномиально возрастающее по мере увеличения размера задачи. У этих задач есть отличительная черта: если решение предложено, то его точность может быть подтверждена или опровергнута за полиномиальное время.\n",
"\n",
"Задача считается NP-полной, если принадлежит классу NP и является такой же трудной, как и любая другая задача NP. Другими словами, NP-полные задачи — одни из самых сложных в информатике."
]
},
{
"cell_type": "markdown",
"id": "d177ea3f",
"metadata": {},
"source": [
"Редукция – преобразование известной задачи, которая, как доказано, является NР-полной, в другую. Успешно выполнив это преобразование, мы устанавливаем, что вторая задача также является NР-полной."
]
},
{
"cell_type": "markdown",
"id": "cff78d4a",
"metadata": {},
"source": [
"# NР-трудность"
]
},
{
"cell_type": "markdown",
"id": "c243a999",
"metadata": {},
"source": [
"В теории сложности вычислений задача называется NР-трудной, если ее решение за полиномиальное время означает, что любая задача из класса NР может быть решена за аналогичное время.\n",
"\n",
"NР-трудные задачи имеют характерную черту: они могут быть, а могут и не быть частью класса NР. То есть, несмотря на то что они трудноразрешимы, могут существовать решения, проверяемые за полиномиальное время. Отсутствие такого решения не исключает возможности его существования.\n",
"\n",
"Примеры:\n",
"* Задача о коммивояжере.\n",
"* Задача о наполнении рюкзака наиболее ценными предметами и пр.\n",
"\n",
"NP-трудные задачи обычно решаются с помощью **эвристических и аппроксимирующих алгоритмов**. То есть эти алгоритмы неидеальны, но **достаточно** эффективны для получения результата."
]
},
{
"cell_type": "markdown",
"id": "510b7528",
"metadata": {},
"source": [
"Изучение и решение NР-трудных и NP-пoлныx задач позволяют находить алгоритмы, которые обеспечивают равновесие между точностью и эффективностью использования времени и ресурсов."
]
},
{
"cell_type": "markdown",
"id": "441d2e68",
"metadata": {},
"source": [
"* **P** – задачу легко решить.\n",
"* **NP** – задачу сложно решить быстро, но если есть решение, его можно быстро проверить.\n",
"* **NP-полная (NP-complete)** – самые трудные из NP.\n",
"* **NP-трудные (NP-hard)** – еще труднее (или не из NP вообще). И проверить её правильность тоже невозможно, но если ты это решишь, то и все головоломки из NP тоже решишь."
]
}
],
"metadata": {
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
52 changes: 52 additions & 0 deletions Python/algoritmy-i-struktury-dannykh-na-python/chapter_10.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
"""Сложные вычислительные задачи."""

# Функция f(n) называется полиномиально возрастающей, если она растет растёт пропорционально полиному (многочлену) от размера входных данных.
#
# **Полиномиально возрастающие функции** (примеры):
# * f(n) = 3n + 2 → линейный рост O(n)
# * f(n) = n^2 → квадратичный рост O(n^2)
# * f(n) = 5n^3 + 10n → кубический рост O(n^3)
#
# **Не является полиномиальным ростом**:
# Эти функции растут быстрее любого полинома.
#
# * Экспоненциальный рост: f(n) = 2^n, f(n) = e^n
# * Факториальный рост: f(n) = n!
# * Суперполиномиальный рост: f(n) = n * log n
#
# **Полиномиальный** означает, что «растёт как какая-то степень n»
#
# **Полиномиально возрастающий** — значит растущий как многочлен от n , например n, n^2, n^10, но не как 2^n или n!

# **P-задача** – это класс задач, которые можно решить быстро (за полиномиальное время) на обычном компьютере (время работы алгоритма растёт как многочлен от размера входа: например, O(n), O(n^2), O(n^3) — это всё полиномиально)
#
# **NP-задача** — это класс задач, для которых решение можно проверить быстро (за полиномиальное время), если оно уже дано.

# # NP-полнота

# NР - недетерминированное полиномиальное время
#
# NР относится к группе вычислительных задач, которые решаются за время, полиномиально возрастающее по мере увеличения размера задачи. У этих задач есть отличительная черта: если решение предложено, то его точность может быть подтверждена или опровергнута за полиномиальное время.
#
# Задача считается NP-полной, если принадлежит классу NP и является такой же трудной, как и любая другая задача NP. Другими словами, NP-полные задачи — одни из самых сложных в информатике.

# Редукция – преобразование известной задачи, которая, как доказано, является NР-полной, в другую. Успешно выполнив это преобразование, мы устанавливаем, что вторая задача также является NР-полной.

# # NР-трудность

# В теории сложности вычислений задача называется NР-трудной, если ее решение за полиномиальное время означает, что любая задача из класса NР может быть решена за аналогичное время.
#
# NР-трудные задачи имеют характерную черту: они могут быть, а могут и не быть частью класса NР. То есть, несмотря на то что они трудноразрешимы, могут существовать решения, проверяемые за полиномиальное время. Отсутствие такого решения не исключает возможности его существования.
#
# Примеры:
# * Задача о коммивояжере.
# * Задача о наполнении рюкзака наиболее ценными предметами и пр.
#
# NP-трудные задачи обычно решаются с помощью **эвристических и аппроксимирующих алгоритмов**. То есть эти алгоритмы неидеальны, но **достаточно** эффективны для получения результата.

# Изучение и решение NР-трудных и NP-пoлныx задач позволяют находить алгоритмы, которые обеспечивают равновесие между точностью и эффективностью использования времени и ресурсов.

# * **P** – задачу легко решить.
# * **NP** – задачу сложно решить быстро, но если есть решение, его можно быстро проверить.
# * **NP-полная (NP-complete)** – самые трудные из NP.
# * **NP-трудные (NP-hard)** – еще труднее (или не из NP вообще). И проверить её правильность тоже невозможно, но если ты это решишь, то и все головоломки из NP тоже решишь.
Loading
Loading