Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Все задания по курсу #1280

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

desexcile
Copy link

В Урок6 task2 написал не совсем фундаментальный метод, но вполне действенный
В последнем задании Урок8 - task2 убрал комментарии, мне так удобнее было ориентироваться (листать меньше) :)

Алгоритм 3:
Создать множество из списка

Сложность: !!!.
Сложность: O(len...).
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

какая здесь итоговая сложность

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)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

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)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено



print(find_min_number_first(list_of_numbers))
print(find_min_number_second(list_of_numbers))
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

где какая сложность?

find_index = company_dict_values.index(max_value) # O(n)
max_key = company_dict_keys[find_index] # O(1)
print(max_key)
company_dict_values_2.remove(max_value) # O(n)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

print('Такого волшебника не существует!')


check_user_second(input('Ваше Имя на Эльфийском: '), input('Наколдуйте пароль: '))
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

print(f'Всего стопок: {ExObject.stack_count()}')
print(f'Тарелок в последней стопке: {ExObject.plates_in_last_stack()}')
else:
print('Ответ может быть y или n')
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

elif option == "4":
break
else:
print('Неверная команда!')
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

return still_equal


print(pal_checker("молоко делили ледоколом"))
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

calc()


calc()
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено



def fun(num):
global even, odd
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

глобал - антипаттерн


a = int(input('Введите число, которое требуется перевернуть: '))
print('Перевернутое число: ', end='')
fun(a)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено



n = int(input('Введите количество элементов: '))
print(f'Количество элементов - {n}, их сумма - {fun(n)}')
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

char_group(ascii_sym + 1)


char_group()
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

fun(i+1)


fun()
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено


m = int(n * (n + 1) / 2)
print(f'Значение функции 1+2+...+n, где n = {n} равно {fun(n)}. '
f'Что также равно функции n(n+1)/2 - {m}. Равенство выполняется!')
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

div_list(range_list)
div_dict(range_dict)

print('Во всех случаях операции со словарем проходят дольше!')
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

есть вопросы к проведению замеров
большинство операций словаря имеют сложность O(1) и дольше они выполняться не могут
посмотрите пример ДЗ

obj = pbkdf2_hmac(hash_name='sha256',
password=user_data_first,
salt=b'any_salt_2',
iterations=100000)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

obj = pbkdf2_hmac(hash_name='sha256', password=user_data_first, salt=b'any_salt_1', iterations=100000)obj = pbkdf2_hmac(hash_name='sha256', password=user_data_first, salt=b'any_salt_2', iterations=100000)

дублирование



user_data_second = input('Введите пароль еще раз для проверки: ').encode('utf-8')
obj_2 = pbkdf2_hmac(hash_name='sha256',
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

и опять дублирование



user_data = input("Введите строку состоящую только из строчных латинских букв: ")
print(f"Количество подстрок: {len(substrings(user_data))}")
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

new_web.get_page('https://habrahabr.ru/')
new_web.get_page('https://google.com/')
new_web.get_page('https://google.com/')
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

"""
Смена на цикл по парам номер_элемента - значение.
нет операции обращения к элементу массива по номеру, следовательно быстрее.
"""
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

здесь хорошо исп-ть LC

0.001513500000000001
0.0015310000000000046
0.0015724000000000016
"""
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мемоизация не нужна
а почему мы разобрали на уроке


Победитель функция revers_3, написанная используя встроеные конструкции языка. Ее выполенение заняло 0.04 секунды.
Большой разрыв по времени относительно других функиций и чем больше число, тем больше разрыв.
"""
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а четвертый ваш вариант?

func_4 использует модуль numpy, её приемущество в лаконичности кода, хоть и работает она медленнее чем func_3,
но быстрее первых двух
Время - 0.659
"""
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

Алгоритма Эратосфена O(n log(log(n))
Двойного цикл - O(n**2)
"""
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

print('Предприятия, с прибылью выше среднего значения: ',
[name for name, inc in income_y_dict.items() if inc > avg_income])
print('Предприятия, с прибылью ниже среднего значения: ',
[name for name, inc in income_y_dict.items() if inc <= avg_income])
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

реализовали через namedtuple, как мы и обсуждали на уроке



hex_calc()

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено как в примере

Удаление слева через list: 1.7133153
Удаление слева через deque: 0.002170500000000075
"""
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

OrderedDict проигрывает обычному словарю, кроме одного замера и то скорее всего случайно, но есть у него и плюсы,
скорее всего в своих проектах иногда буду его использовать.
"""
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

с каждым разом и уменьшает increment, но ускоряет процесс за счет еденичных повторений кода в отличие от первых
двух функций. Использование этого варината обосновано в тех случаях, когда модуль numpy уже используется в проекте
где либо еще, в противном случае использование приведет к лишнему весу приложения.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

При этом sys.getsizeof показывает нам одинаковый размер:
без директивы: 824464
с директивой: 824464
"""
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

профайлер будет запускаться столько раз сколько будет запускать себя рекурсивная функция
для избежания этого нужна другая функция запускающая рекурсию
"""

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

orig_list = [randint(-100, 100) for _ in range(10)]
print(f'Оригинальный список: \n{orig_list}')
print(f'Список, отсортированный методом "пузырька" в порядке убывания без доработки: \n{bubble_sort1(orig_list)}')
print(f'Список, отсортированный методом "пузырька" в порядке убывания после доработки: \n{bubble_sort2(orig_list)}')
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

результаты неверные
ваш массив будет отсортирован еще до замеров

orig_list = [random()*50 for _ in range(count_of_elements)]
print(f'Оригинальный список: \n{orig_list}')
print(f'Список, отсортированный методом слияния: \n{merge_sort(orig_list)}')

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено как в примере

print('Медиана без сортировки: \n', my_median(orig_list))
print(f'Медиана после сортировки: \n {sorted_median}')


Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

не прочитано ДЗ
"Массив размером 2m + 1, где m – натуральное число, заполнен случайным образом."
это важно, т.к. при сортировке медиана будет на позиции m

if my_string == decoded_str:
print('Успешно!')
else:
print('Ошибка!')
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

print(r.get_right_child().get_root_val())
r.get_right_child().set_root_val(16)
print(r.get_right_child().get_root_val())
print(f'Глубина дерева: {r.get_depth()}')
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants