CodeLab
145 subscribers
538 photos
20 videos
159 links
Говорим просто о сложном

Обсуждение, новости, материал и сплетни — все здесь https://t.me/CodeLabMLChat
Download Telegram
🌶🌶Разберем босса с 2 перчиками.

На вход программе подаются четыре целых числа a1, b1, a2, b2. ‼️

⭕️ Обязательное условие, что a1<b1, a2<b2.

Прикреплю также один из прекрасных наглядных комментариев. #Пересечение_отрезков
Итак, работаем, отталкиваясь, от подсказки.🧑‍💻Сначала, конечно же, вводим 4 int(input)-а.

0️⃣❗️Далее, разберем первый случай, когда общего пересечения нет (следующий скрин).

То есть, если один из двух случаев существует, значит общего пересечения нет.
Дальше, прописываем много много elif.

1️⃣ Значит так, если b1 == a2, значит пересечением будет точка a2.‼️АНАЛОГИЧНО‼️ будет и наоборот, если мы отрезки поставим, грубо говоря, наоборот, про это тоже не забываем

⭕️ То есть, пересечением второго отрезка будет точка a1
2️⃣ Идем дальше. ЕСЛИ a2 > a1 AND b1 < b2, то отрезок a2;b1 будет пересечением, и также наоборот по аналогии.
3️⃣ Ну и последний отрезок
🔗 Вот и сам код:🧑‍💻

a1, b1 = int(input()), int(input())
a2, b2 = int(input()), int(input())

if b1 < a2 or b2 < a1:
print('пустое множество')
elif b1 == a2:
print(a2)
elif b2 == a1:
print(a1)
elif a2 > a1 and b1 < b2:
print(a2, b1)
elif a2 < a1 and b1 > b2:
print(a1, b2)
elif a1 >= a2 and b2 >= b1:
print(a1,b1)
elif a2 >= a1 and b1 >= b2:
print(a2, b2)
Итак, дальше будут тесты 👇🏿
#1
#Continue #break #pass ‼️Вот вам неплохая шпора для понимая разницы этих трех операторов ‼️
#2 Кстати, continue используется внутри цикла, чтобы пропустить оставшуюся часть текущей итерации и перейти к следующей итерации цикла. Я уже объяснил на примере сверху, как это работает.
#3
Что выведет этот код, если мы подадим слово 'непон'
Anonymous Quiz
0%
непон (в столбик)
100%
нопен (в столбик)
0%
реально непон (не знаю)
0%
нопен
0%
непон
#4
Что выведет код? (Че такое break мы уже разобрали)
Anonymous Quiz
0%
a b d e d (в столбик)
0%
a b
0%
a b c d e d
50%
не знаю
50%
a b (в столбик)
Итак, сессия потихоньку подходит к концу, и, более того, я даже выжил.

Хотел бы начать свое долгое отсутствие объяснением ‼️O(n) и O(n^2), я как то уже разбирал сложность алгоритмов, поэтому стоит продолжить начатое. Итак, начнем с O(n), это у нас линейное время, достаточно медленный поиск. Алгоритмы с такой сложностью имеют время выполнения, которое увеличивается прямо пропорционально увеличению размера входных данных.

То есть, если у нас есть массив длинною n, то время выполнения алгоритма будет расти линейно вместе с увеличением n. ‼️(чем больше массив, тем дольше выполнение)‼️ #Алгоритмы
А, ну и забыл сказать, что применяется O(n) когда нам надо, к примеру, найти какой то элемент в неотсортированном списке,❗️

🔗Допустим, есть у нас список имен и все имена не отсортированы, тогда нам придется проверить каждый элемент списка.

‼️А следующая сложность алгоритма это Квадратичная сложность O(n^2).

🟰Время выполнения в таких алгоритмах увеличивается пропорционально квадрату размера входных данных. Допустим, у нас есть массив длинною n, его время выполнения будет увеличиваться как n^2. При увеличении размера списка вдвое время выполнения увеличится в четыре раза и так далее.🟰

🧑‍💻 Самым популярным примером такой сложности является сортировка пузырьком. Идея такого алгоритма сортировки состоит в последовательном сравнении значений соседних элементов. Вот даже вам нашел классную фотаче для понимания #BigO
🖤Итак, великое возвращение, наконец сессия сдана, надеюсь, посты будут каждый день !!! А начнем мы с нескольких простеньких тестов, чисто вам на внимание