From 75f16393779f523237538f765c758989d8e2d268 Mon Sep 17 00:00:00 2001 From: Nikod Podin <54398975+NikosPodin@users.noreply.github.com> Date: Sat, 20 Mar 2021 21:51:35 +0500 Subject: [PATCH 1/5] Tokarchukov Task 1 --- .../task_1.py" | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) 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..dbf3dd8d 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(1). """ - lst_to_set = set(lst_obj) # !!! + lst_to_set = set(lst_obj) # O(1) 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(1) + return False # O(1) + return True # O(1) ############################################################################################# From fe8339ad09e99e9a91fc7d841cafa67286d601c1 Mon Sep 17 00:00:00 2001 From: Nikod Podin <54398975+NikosPodin@users.noreply.github.com> Date: Sat, 20 Mar 2021 22:02:13 +0500 Subject: [PATCH 2/5] Update task_1.py --- .../task_1.py" | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) 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 dbf3dd8d..150e70e7 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" @@ -43,8 +43,8 @@ def check_2(lst_obj): Сложность: O(n^2). """ - for j in range(len(lst_obj)): # O(n) - if lst_obj[j] in lst_obj[j+1:]: # O(1) + for j in range(len(lst_obj)): # O(n^2) + 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(nLog(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) ############################################################################################# From 0cfb5240f770b8a27837909f03a4326e91dcf34c Mon Sep 17 00:00:00 2001 From: Nikod Podin <54398975+NikosPodin@users.noreply.github.com> Date: Mon, 22 Mar 2021 23:51:44 +0500 Subject: [PATCH 3/5] Update task_7.py --- .../task_7.py" | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) 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_7.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_7.py" index 7f75aaa4..d510f0dc 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_7.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_7.py" @@ -10,3 +10,51 @@ Вам нужно доработать программу так, чтобы она могла выполнить проверку на палиндром и в таких строках (включающих пробелы) """ +# палиндром + +class DequeClass: + def __init__(self): + self.elems = [] + + def is_empty(self): + return self.elems == [] + + def add_to_front(self, elem): + self.elems.append(elem) + + def add_to_rear(self, elem): + self.elems.insert(0, elem) + + def remove_from_front(self): + return self.elems.pop() + + def remove_from_rear(self): + return self.elems.pop(0) + + def size(self): + return len(self.elems) + + +def pal_checker(string): + dc_obj = DequeClass() + string = string.replace(' ', '').lower() #Только это нужно добавить + перевод в один регистр + + for el in string: + dc_obj.add_to_rear(el) + + still_equal = True + + while dc_obj.size() > 1 and still_equal: + first = dc_obj.remove_from_front() + last = dc_obj.remove_from_rear() + if first != last: + still_equal = False + + return still_equal + + +print(pal_checker("молоко делили ледоколом")) +print(pal_checker("Лёша на полке клопа нашёл")) +print(pal_checker("Аргентина манит негра")) +print(pal_checker('Молебен о коне Белом')) + From 6fb7252c55c7280cfc907453ca0e8013f1625e53 Mon Sep 17 00:00:00 2001 From: Nikod Podin <54398975+NikosPodin@users.noreply.github.com> Date: Mon, 22 Mar 2021 23:52:19 +0500 Subject: [PATCH 4/5] Update task_2.py --- .../task_2.py" | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) 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..72eef801 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,33 @@ Алгоритмизатор должен развивать мышление, а это прежде всего практика. А без столкновения со сложностями его не развить. """ + + +from random import randint +numbers = [randint(1,101) for _ in range(1,10)] +print(numbers) + +#первый алгоритм +#вариант O(n) +print('проверочный вариант', min(numbers)) #автоматизированный вариант O(n) + +def min_numb(numb): + res = numb[8] #можно указать любое число, так как он перебирает весь список + for i in numb: + if res>i: + res = i + return res +print('вариант O(n):', min_numb(numbers)) + +#второе алгоритм +#вариант O(n^2) + +def min_numb2(number:list): + min_numb = number[0] + for i in number: + for y in number: + if i < y and i < min_numb: + min_numb = i + return min_numb + +print('вариант O(n^2):', min_numb2(numbers)) From 982a47282bc36f6f9e3430a66ab3a4cee01a4aeb Mon Sep 17 00:00:00 2001 From: Nikod Podin <54398975+NikosPodin@users.noreply.github.com> Date: Tue, 23 Mar 2021 00:40:27 +0500 Subject: [PATCH 5/5] Update task_3.py --- .../task_3.py" | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) 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..602a7a39 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,54 @@ Реализуйте поиск трех компаний с наибольшей годовой прибылью. Выведите результат. """ + + +company = { + 'ПАО НЕФТЯНАЯ КОМПАНИЯ РОСНЕФТЬ': 155.8, + 'ПАО ГАЗПРОМ НЕФТЬ': 162.6, + 'ПАО ГОРНО-МЕТАЛЛУРГИЧЕСКАЯ КОМПАНИЯ НОРИЛЬСКИЙ НИКЕЛЬ': 300.1, + 'ПАО СЕВЕРСТАЛЬ': 114.9, + 'ПАО НОВОЛИПЕЦКИЙ МЕТАЛЛУРГИЧЕСКИЙ КОМБИНАТ': 61.1 +} + +def sort_1(list_input): # вариант 1 : O(n) + input_max = {} + list_d = dict(list_input) + for i in range(3): + maximum = max(list_d.items(), key=lambda k_v: k_v[1]) + del list_d[maximum[0]] + input_max[maximum[0]] = maximum[1] + return input_max + +print('\nвариант 1\n') +print(sort_1(company)) + + + +def sort_2(random_list): # вариант 2: O(n ^ 2) + for i in range(len(random_list)): + low_value = i + for j in range(i + 1, len(random_list)): + if random_list[j][1] > random_list[low_value][1]: + low_value = j + random_list[i], random_list[low_value] = random_list[low_value], random_list[i] + return random_list[0:3] + +print('\nвариант 2\n') + +list_dict = list(company.items()) +for i in sort_2(list_dict): + + print(i[0], ':', i[1], ' ') + + +print('\nвариант 3\n') + +list_dict = list(company.items()) # Вариант 3: O(n log n) +list_dict.sort(key=lambda i: i[1], reverse=True) +for i in range(3): + print(list_dict[i][0], ':', list_dict[i][1] ) + +#Быстрее вариант 1 : O(n) - проще и быстрее в данном примере (объёме). +#Вариант 2 и уступает O(n) на небольших объёмах и при увеличении вводимых данных уступает варианту 3 +#Вариант 3 O(n log n) масштабируемый и при бОльших объёмах будет одинакого оперативно выдавать результат