diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml
new file mode 100644
index 00000000..f4ef7b50
--- /dev/null
+++ b/.idea/dbnavigator.xml
@@ -0,0 +1,454 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 00000000..105ce2da
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000..4b7dda96
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..cafd05d9
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/python_algos_gb.iml b/.idea/python_algos_gb.iml
new file mode 100644
index 00000000..62c9dd65
--- /dev/null
+++ b/.idea/python_algos_gb.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..94a25f7f
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" "b/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py"
index 835c283b..3f318eaa 100644
--- "a/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py"
+++ "b/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py"
@@ -26,9 +26,9 @@ def check_1(lst_obj):
Алгоритм 3:
Создать множество из списка
- Сложность: !!!.
+ Сложность: O(n)
"""
- lst_to_set = set(lst_obj) # !!!
+ lst_to_set = set(lst_obj) # O(n)
return lst_to_set
@@ -41,12 +41,12 @@ def check_2(lst_obj):
что такой элемент отстутствует
в оставшихся справа элементах
- Сложность: !!!.
+ Сложность: O(N^2)
"""
- for j in range(len(lst_obj)): # !!!
- if lst_obj[j] in lst_obj[j+1:]: # !!!
- return False # !!!
- return True # !!!
+ for j in range(len(lst_obj)): # O(N)
+ if lst_obj[j] in lst_obj[j+1:]: # O(N)
+ return False # O(1)
+ return True # O(1)
#############################################################################################
@@ -57,14 +57,14 @@ def check_3(lst_obj):
Вначале выполним для списка сортировку, далее, сравниваем элементы попарно
Если присутствуют дубли, они будут находиться рядом.
- Сложность: !!!
+ Сложность: O(N Log N)
"""
- lst_copy = list(lst_obj) # !!!
- lst_copy.sort() # !!!
- for i in range(len(lst_obj) - 1): # !!!
- if lst_copy[i] == lst_copy[i+1]: # !!!
- return False # !!!
- return True # !!!
+ lst_copy = list(lst_obj) # O(N)
+ lst_copy.sort() # O(N Log N)
+ for i in range(len(lst_obj) - 1): # O(N)
+ if lst_copy[i] == lst_copy[i+1]: # O(1)
+ return False # O(1)
+ return True # O(1)
#############################################################################################
diff --git "a/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py" "b/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py"
index 3a5eabbc..2e7e9c30 100644
--- "a/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py"
+++ "b/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_2.py"
@@ -17,3 +17,28 @@
Алгоритмизатор должен развивать мышление, а это прежде всего практика.
А без столкновения со сложностями его не развить.
"""
+from random import randint
+
+
+def check_min2(obj):
+ for i in obj:
+ minn = True
+ for j in obj:
+ if i > j:
+ minn = False
+ if minn:
+ return i
+
+
+def check_min(obj):
+ minn = obj[0]
+ for i in obj:
+ if i < minn:
+ minn = i
+ return minn
+
+lst = [randint(0, 1000) for i in range(40)]
+print(lst)
+print(check_min2(lst))
+print(check_min(lst))
+print(sorted(lst))
\ No newline at end of file
diff --git "a/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py" "b/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py"
index e52aafcb..23fe3944 100644
--- "a/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py"
+++ "b/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_3.py"
@@ -22,3 +22,44 @@
Реализуйте поиск трех компаний с наибольшей годовой прибылью.
Выведите результат.
"""
+compamy = {
+ 'gazprom': 2000,
+ 'navafarm': 300,
+ 'microsoft': 3000,
+ 'rosnano': 800,
+ 'apple': 1500,
+ 'adidas': 50
+}
+
+
+def sorted_n2(lst):
+ for i in range(len(lst)):
+ low_index = i
+ for j in range(i + 1, len(lst)):
+ if lst[j][1] > lst[low_index][1]:
+ low_index = j
+ lst[i], lst[low_index] = lst[low_index], lst[i]
+ return lst[0:3]
+
+
+lst_dict = list(compamy.items())
+for i in sorted_n2(lst_dict):
+ print(f'{i[0]} : {i[1]}')
+
+print('=' * 20)
+
+
+def sorted_n(lst):
+ max_value = {}
+ lstdict = dict(lst)
+ for i in range(3):
+ maximum = max(lstdict.items(), key=lambda key_val: key_val[1])
+ del lstdict[maximum[0]]
+ max_value[maximum[0]] = maximum[1]
+ return max_value
+
+
+print(sorted_n(compamy))
+
+'''лучшим вариантом будет функция sortetd_n так как имеет
+минимальную вычислительную сложность'''
\ No newline at end of file
diff --git "a/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4.py" "b/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4.py"
index d1193f62..8002961e 100644
--- "a/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4.py"
+++ "b/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_4.py"
@@ -27,3 +27,16 @@
Для реализации хранилища можно применить любой подход,
который вы придумаете, например, реализовать словарь.
"""
+# сложность O(1)
+def autorizacion(users, user_name, user_pass):
+ '''реализация проверки допуска к ресурсу'''
+ if users.get(user_name):
+ if users[user_name]['passowrd'] == user_pass and user_name['active']:
+ return 'Доступ разрешен'
+ elif users[user_name]['passowrd'] == user_pass and not user_name['active']:
+ return 'Необходимо войти в учетную запись'
+ elif users[user_name]['password'] != user_pass:
+ return 'Вы ввели не верный пароль'
+ else:
+ return "Пользователя не сущестует"
+'''самая быстрая проверка которая пришла на ум. Быстрая потому что нет цикла'''
\ No newline at end of file
diff --git "a/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" "b/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py"
index 291af805..e1eae41b 100644
--- "a/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py"
+++ "b/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py"
@@ -18,3 +18,5 @@
После реализации структуры, проверьте ее работу на различных сценариях
"""
+
+
diff --git "a/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" "b/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py"
index 37594599..63f6bc6c 100644
--- "a/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py"
+++ "b/\320\243\321\200\320\276\320\272 1. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py"
@@ -15,3 +15,50 @@
После реализации структуры, проверьте ее работу на различных сценариях
"""
+class Queueing:
+ def __init__(self):
+ self.elements = []
+
+ def is_null(self):
+ return self.elements == []
+
+ def to_queue(self, tasks):
+ self.elements.insert(0, tasks)
+
+ def from_queue(self):
+ return self.elements.pop()
+
+ def sized(self):
+ return len(self.elements)
+
+
+class Board_task:
+ def __init__(self):
+ self.base_queue = Queueing()
+ self.queue_for_revision = Queueing()
+ self.list_of_completed = []
+
+ def perform_task(self):
+ task = self.base_queue.from_queue()
+ self.list_of_completed.append(task)
+
+
+ def for_revision_task(self):
+ task = self.queue_for_revision.from_queue()
+ self.queue_for_revision.to_queue(task)
+
+ def add_to_current(self, tasks):
+ self.base_queue.to_queue(tasks)
+
+ def from_revision(self):
+ task = self.queue_for_revision.from_queue()
+ self.base_queue.to_queue(task)
+
+if __name__ == '__main__':
+ taskBoard = Board_task()
+ taskBoard.add_to_current("Здача1")
+ taskBoard.add_to_current("Здача2")
+ taskBoard.add_to_current("Здача3")
+ taskBoard.add_to_current("Здача4")
+ print(taskBoard.base_queue.elements)
+ print(taskBoard.from_revision())
\ No newline at end of file