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