From ae6045ab03cf29c6d4aae6145d13cf553d47ee7d Mon Sep 17 00:00:00 2001 From: mikirzh Date: Sun, 21 Jun 2020 01:57:40 +0300 Subject: [PATCH 1/5] =?UTF-8?q?=D0=94=D0=97=20=D0=BA=20=D1=83=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D1=83=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task_1.py" | 9 +++++++ .../task_2.py" | 11 ++++++++ .../task_3.py" | 17 ++++++++++++ .../task_4.py" | 11 ++++++++ .../task_5.py" | 16 +++++++++++ .../task_6.py" | 27 +++++++++++++++++++ .../task_7.py" | 26 ++++++++++++++++++ 7 files changed, 117 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 a3eb8cb5..4b51c7f5 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -14,3 +14,12 @@ В диапазоне 2-99: 12 чисел кратны 8 В диапазоне 2-99: 11 чисел кратны 9 """ +result = {} +for n in range(2, 10): + result[n] = [] + for f in range(2, 100): + if f % n == 0: + result[n].append(f) + print( + f'Для числа {n} кратны - {len(result[n])}. Кратные числа: {result[n]}.' + ) \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 af8e1d66..fea41126 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -10,3 +10,14 @@ Пример: Исходный массив: [8, 3, 15, 6, 4, 2], результат: [0, 3, 4, 5] """ +import random + +r = [random.randint(0, 99) for _ in range(10)] +print(f'Первый массив {r}') +index_even = [] + +for n in r: + if n % 2 == 0: + index_even.append(r.index(n)) + +print(f'Индексы чётных элементов первого массива: {index_even}') \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 f987b9cc..c9dfb58a 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -11,3 +11,20 @@ 6 позиции, а минимальное число -49 стоит на 0 позиции [-49, 26, 41, 75, 23, 52, 88, 60, 69, -18] """ +import random + +r = [random.randint(0, 99) for _ in range(10)] +print(f'Массив до изменения: {r}') + +max = r[0] +min = r[0] + +for i in r: + if i > max: + max = i + elif i < min: + min = i +min_index = r.index(min) +max_index = r.index(max) +r[min_index], r[max_index] = r[max_index], r[min_index] +print(f'Массив осле изменения элементов {min_index} и {max_index}: {r}') \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 d906bdaa..a4150690 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -3,3 +3,14 @@ Подсказка: можно применить ф-цию max с параметром key """ +import random + +r = [random.randint(0, 99) for _ in range(100)] +print(f'Массив: {r}') + +max_index = 0 +for i in r: + if r.count(max_index) < r.count(i): + max_index = r.index(i) + +print(f'Число {r[max_index]}, встречается {r.count(max_index)} раза') \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 c6d2fdde..7c68790f 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -8,3 +8,19 @@ Базовый список: [-55, -69, -5, 72, -41, -58, -79, 58, 74, 1] Максимальный отрицательный элемент в данном массиве = -5, его индекс 2 """ +import random + +r = [random.randint(-99, 99) for _ in range(100)] +print(f'Массив: {r}') + +min_index = 0 + +for i in r: + if r[min_index] > i: + min_index = r.index(i) + +if r[min_index] >= 0: + print(f'В массиве нет отрицательных элементов') +else: + print(f'В массиве минимальный отрицательный элемент: {r[min_index]}.', + f'Находится в массиве на позиции {min_index}') \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 923e89af..da65a502 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -13,3 +13,30 @@ Массив: [88, 58, 50, 77, 49, 6, 42, 67, 14, 79] Сумма элементов между минимальным (6) и максимальным (88) элементами: 234 """ +import random + +r = [random.randint(0, 99) for _ in range(10)] +print(f'Массив: {r}') + +min_index = 0 +max_index = 0 +step = 1 +sum = 0 + +for i in r: + if r[min_index] > i: + min_index = r.index(i) + elif r[max_index] < i: + max_index = r.index(i) + +if max_index - min_index < 0: + step = -1 + +for i in r[min_index + step:max_index:step]: + sum += i + # print(f'DEBUG i={i}') + +print( + f'Сумма элементов между минимальным ({r[min_index]})', + f' и максимальным ({r[max_index]}) элементами: {sum}' + ) \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\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 3.\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 7e93662d..ac41bfd7 100644 --- "a/\320\243\321\200\320\276\320\272 3.\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 3.\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" @@ -7,3 +7,29 @@ Наименьший элемент: -86, встречается в этом массиве 1 раз Второй наименьший элемент: -73 """ +import random + +r = [random.randint(0, 99) for _ in range(100)] +print(f'Массив: {r}') + +min_index_1 = 0 +min_index_2 = 1 + +for i in r: + if r[min_index_1] > i: + min_index_2 = min_index_1 + min_index_1 = r.index(i) + elif r[min_index_2] > i: + min_index_2 = r.index(i) + +print(f'Два наименьших элемента: {r[min_index_1]} и {r[min_index_2]}') + +'''Второй способ через сортировку списка''' + +sort_list = [] +sort_list.extend(r) +sort_list.sort() + +print( + f'Два наименьших элемента (второй способ): {sort_list[0]} и {sort_list[1]}' + ) \ No newline at end of file From 023c92bf9267dcc5b90c398e88c4c587b90ee209 Mon Sep 17 00:00:00 2001 From: mikirzh Date: Fri, 26 Jun 2020 20:55:22 +0300 Subject: [PATCH 2/5] =?UTF-8?q?=D0=94=D0=97=20=D0=BA=20=D1=83=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D1=83=206?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task_1.py" | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 6. \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 6. \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 0bbcc43f..9994618c 100644 --- "a/\320\243\321\200\320\276\320\272 6. \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 6. \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" @@ -12,3 +12,65 @@ ВНИМАНИЕ: ЗАДАНИЯ, В КОТОРЫХ БУДУТ ГОЛЫЕ ЦИФРЫ ЗАМЕРОВ (БЕЗ АНАЛИТИКИ) БУДУТ ПРИНИМАТЬСЯ С ОЦЕНКОЙ УДОВЛЕТВОРИТЕЛЬНО """ +import sys +from memory_profiler import profile + + +@profile() +def my_slice(a): + print(sys.getrefcount(a[::-1])) + print(sys.getsizeof(a[::-1])) + return a[::-1] + + +@profile() +def my_reverse(a): + a = list(a) + i, j = 0, len(a) - 1 + while i < j: + a[i], a[j] = a[j], a[i] + i += 1 + j -= 1 + print(sys.getsizeof(a)) + print(sys.getrefcount(a)) + return "".join(a) + + +@profile() +def my_recursion(a): + print(sys.getsizeof(a)) + print(sys.getrefcount(a)) + if len(a) == 1: + return a + else: + return a[-1] + my_recursion(a[:-1]) + + +my_str = "123456789012345678901234567890" + +print("Срез:") +print(my_slice(my_str)) + +print("Список:") +print(my_reverse(my_str)) + +print("Рекурсия:") +print(my_recursion(my_str)) + +""" +Количество ссылок на объект a: +my_slice: 1 +my_reverse: 3 +my_recursion: 12 +Размер объекта a в байтах: +my_slice: 79 +my_reverse: 376 +my_recursion: 79 +Выделено памяти на выполнение скрипта: +my_slice: 10.4 MiB +my_reverse: 10.5 MiB +my_recursion: 10.6 MiB +Скрипт my_slice - оптимальный по времени выполнения и по работе с памятью +python 2.7 +OS - 64bit +""" \ No newline at end of file From b6926ff54fc3e5591f0e24b148557dc026f3678e Mon Sep 17 00:00:00 2001 From: mikirzh Date: Mon, 29 Jun 2020 22:00:04 +0300 Subject: [PATCH 3/5] =?UTF-8?q?=D0=94=D0=97=20=D0=BA=20=D1=83=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D1=83=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task_1.py" | 23 ++++++++ .../task_2.py" | 40 +++++++++++++ .../task_3.py" | 59 +++++++++++++++++++ 3 files changed, 122 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 7. \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 7. \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 07560cfa..ec7b8bce 100644 --- "a/\320\243\321\200\320\276\320\272 7. \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 7. \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" @@ -9,3 +9,26 @@ Подсказка: обратите внимание, сортируем не по возрастанию, как в примере, а по убыванию """ +import random + +LST_LEN = 10 +random_lst = [random.randint(-100, 99) for i in range(LST_LEN)] + + +def bubble_sort(numb_arr): + a = numb_arr + + len_arr = len(a) + for i in range(len_arr - 1): + counter = 0 + for j in range(len_arr - 1 - i): + if a[j] < a[j+1]: + a[j], a[j+1] = a[j+1], a[j] + counter += 1 + if counter == 0: + break + return a + + +print(f'Исходный массив:\n{random_lst}\n') +print(f'Сортированный массив:\n{bubble_sort(random_lst)}') \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 7. \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 7. \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 73d3dfb6..f6298b6b 100644 --- "a/\320\243\321\200\320\276\320\272 7. \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 7. \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" @@ -8,3 +8,43 @@ Исходный - [46.11436617832828, 41.62921998361278, 18.45859540989644, 12.128870723745806, 8.025098788570562] Отсортированный - [8.025098788570562, 12.128870723745806, 18.45859540989644, 41.62921998361278, 46.11436617832828] """ +import random + +LST_LEN = 10 +random_lst = [round(random.uniform(0, 49.99), 2) for i in range(LST_LEN)] + + +def merge_sort(lst): + + if len(lst) <= 1: + return lst + + left_side = merge_sort(lst[:len(lst) // 2]) + right_side = merge_sort(lst[len(lst) // 2:]) + + i = j = 0 + res = [] + + while i < len(left_side) or j < len(right_side): + + if i >= len(left_side): + res.append(right_side[j]) + j += 1 + + elif j >= len(right_side): + res.append(left_side[i]) + i += 1 + + elif left_side[i] < right_side[j]: + res.append(left_side[i]) + i += 1 + + else: + res.append(right_side[j]) + j += 1 + + return res + + +print(f'Исходный массив:\n{random_lst}\n') +print(f'Сортированный массив:\n{merge_sort(random_lst)}') \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 7. \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 7. \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 33530404..1bd1b05c 100644 --- "a/\320\243\321\200\320\276\320\272 7. \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 7. \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" @@ -6,3 +6,62 @@ массива. Но если это слишком сложно, то используйте метод сортировки, который не рассматривался на уроках """ +import random + +LST_LEN = 5 + +lst = [random.randint(0, 100) for _ in range(2 * LST_LEN + 1)] + + +# К сожалению, не хавтило времени доделать до конца. +# Функция неверно возвращет значение если медиана встречается в массиве больше одного раза :( +def median(lst): + k = 0 + min_val = min(lst) + max_val = max(lst) + + while True: + + min_lst = 0 + max_lst = 0 + var = lst[k] + + if min_val <= var <= max_val: + for i in lst: + if i <= var: + min_lst += 1 + if i >= var: + max_lst += 1 + + if min_lst == max_lst != 0: + return var + elif min_lst > max_lst: + max_val = var + elif min_lst < max_lst: + min_val = var + + if len(lst)-1 > k: + k += 1 + else: + return max_val + + +# Гномья сортировка +def gnome_sort(lst): + i = 1 + while i < len(lst): + + if lst[i - 1] <= lst[i]: + i += 1 + else: + lst[i], lst[i - 1] = lst[i - 1], lst[i] + i -= 1 + if i == 0: + i = 1 + + return lst + + +print(f'Исходный массив:\n{lst}') +print(f'Медиана по гномьей сортировке: {gnome_sort(lst)[len(lst) // 2]}') +print(f'Медиана по моей сортировке: {median(lst)}') \ No newline at end of file From 68ae737a0ddebf6df76feefc22d52ff83bcab81e Mon Sep 17 00:00:00 2001 From: mikirzh Date: Wed, 1 Jul 2020 16:44:03 +0300 Subject: [PATCH 4/5] m --- .../task_3.py" | 59 ------------------- 1 file changed, 59 deletions(-) diff --git "a/\320\243\321\200\320\276\320\272 7. \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 7. \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 1bd1b05c..33530404 100644 --- "a/\320\243\321\200\320\276\320\272 7. \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 7. \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" @@ -6,62 +6,3 @@ массива. Но если это слишком сложно, то используйте метод сортировки, который не рассматривался на уроках """ -import random - -LST_LEN = 5 - -lst = [random.randint(0, 100) for _ in range(2 * LST_LEN + 1)] - - -# К сожалению, не хавтило времени доделать до конца. -# Функция неверно возвращет значение если медиана встречается в массиве больше одного раза :( -def median(lst): - k = 0 - min_val = min(lst) - max_val = max(lst) - - while True: - - min_lst = 0 - max_lst = 0 - var = lst[k] - - if min_val <= var <= max_val: - for i in lst: - if i <= var: - min_lst += 1 - if i >= var: - max_lst += 1 - - if min_lst == max_lst != 0: - return var - elif min_lst > max_lst: - max_val = var - elif min_lst < max_lst: - min_val = var - - if len(lst)-1 > k: - k += 1 - else: - return max_val - - -# Гномья сортировка -def gnome_sort(lst): - i = 1 - while i < len(lst): - - if lst[i - 1] <= lst[i]: - i += 1 - else: - lst[i], lst[i - 1] = lst[i - 1], lst[i] - i -= 1 - if i == 0: - i = 1 - - return lst - - -print(f'Исходный массив:\n{lst}') -print(f'Медиана по гномьей сортировке: {gnome_sort(lst)[len(lst) // 2]}') -print(f'Медиана по моей сортировке: {median(lst)}') \ No newline at end of file From b7c34b2b48d49e2e69a1fee0dcb84f116bfd7a19 Mon Sep 17 00:00:00 2001 From: mikirzh Date: Mon, 6 Jul 2020 23:25:32 +0300 Subject: [PATCH 5/5] =?UTF-8?q?=D0=94=D0=97=20=D0=BA=20=D1=83=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D1=83=208?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task_1.py" | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git "a/\320\243\321\200\320\276\320\272 8. \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 8. \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 045a8cc9..137b8d32 100644 --- "a/\320\243\321\200\320\276\320\272 8. \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 8. \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" @@ -16,3 +16,22 @@ Итог: 6 подстрок """ +s = 'papa' + + +def search_strings(s): + n = len(s) + arr_str = set() + for i in range(1, n): + + for j in range(n - i + 1): + + k = hash(s[j:j+i]) + + if k not in arr_str: + arr_str.add(k) + + return len(arr_str) + + +print(f'Количество подстрок: {search_strings(s)}') \ No newline at end of file