Разбираем задание также в разделе 6.2 #Три_города.
0️⃣ Для начала, введем переменные для всех трех городов:
1️⃣❗️ Сравним минимальную длину одного из введенных городов с каждым из городов, если, к примеру, из всех трех, самое короткое слово это название первого города - то его и выводим:
2️⃣❗️ Аналогично с максимальной длиной среди всех городов:
0️⃣ Для начала, введем переменные для всех трех городов:
first = input()
second = input()
third = input()
1️⃣❗️ Сравним минимальную длину одного из введенных городов с каждым из городов, если, к примеру, из всех трех, самое короткое слово это название первого города - то его и выводим:
if min (len(first), len(second), len(third)) == len(first):
print(first)
elif min (len(first), len(second), len(third)) == len(second):
print(second)
else:
print(third)
2️⃣❗️ Аналогично с максимальной длиной среди всех городов:
if max (len(first), len(second), len(third)) == len(first):
print(first)
elif max (len(first), len(second), len(third)) == len(second):
print(second)
else:
print(third)
👨💻2
CodeLab
👨💻 Иииитак, вчера я ничего не делал, щас буду рассказывать про хранение памяти в компьютере, как раз это свяжем с проблемой чисел с плавающей точкой, поэтому постарайтесь все внимательно прочитать‼️ ⭕️ Для хранения одной ячейки информации в памяти используется…
Итак, я уже рассказывал на базовом уровне как работает память, хотя можно будет как-нибудь сделать об этом отдельный пост. В чем же суть?
🧑💻 Речь пойдет про сортировку выбором, а про память мы еще поговорим. Я вам уже говорил что память можно представить в виде ячеек памяти. В книге, автор говорит о памяти, как о гардеробе, в каждую ячейку которого, помещается ровно один предмет, для хранения трех вещей, нам потребуется выделить три ящика. Каждая такая ячейка имеет свой уникальный адрес, про это я уже рассказывал. Когда мы хотим сохранить какую-нибудь темку, мы запрашиваем у компьютера место в памяти и он нам выдает адрес для сохранения, а если мы захотим сохранить несколько элементов, это можно сделать с помощью связанных списков или массивов. #Память #Связанные_списки #Массивы
🧑💻 Речь пойдет про сортировку выбором, а про память мы еще поговорим. Я вам уже говорил что память можно представить в виде ячеек памяти. В книге, автор говорит о памяти, как о гардеробе, в каждую ячейку которого, помещается ровно один предмет, для хранения трех вещей, нам потребуется выделить три ящика. Каждая такая ячейка имеет свой уникальный адрес, про это я уже рассказывал. Когда мы хотим сохранить какую-нибудь темку, мы запрашиваем у компьютера место в памяти и он нам выдает адрес для сохранения, а если мы захотим сохранить несколько элементов, это можно сделать с помощью связанных списков или массивов. #Память #Связанные_списки #Массивы
Допустим, мы хотим сохранить список дел на сегодня, сначала попробуем сохранить наши, допустим, 3 задачи в массиве.
Ща вам расскажу в чем суть массива.
Итак, в массиве все задачи хранятся в памяти непрерывно, то есть, у нас есть структура данных (Массив), состоящая из фиксированного числа элементов, а расположены элементы в смежных ячейках (Идут друг за другом), периодически буду приводить примеры из книги. Также стоит сказать, что элементы массива имеют индекс, по которому к ним можно быстро получить доступ, об этом еще поговорим. #Память #Связанные_списки #Массивы
Ща вам расскажу в чем суть массива.
Итак, в массиве все задачи хранятся в памяти непрерывно, то есть, у нас есть структура данных (Массив), состоящая из фиксированного числа элементов, а расположены элементы в смежных ячейках (Идут друг за другом), периодически буду приводить примеры из книги. Также стоит сказать, что элементы массива имеют индекс, по которому к ним можно быстро получить доступ, об этом еще поговорим. #Память #Связанные_списки #Массивы
🥰2
Дак вот, возвращаемся к списку дел. У нас есть пока что три темки, чем мы можем заняться, для них компьютер уже выделил память (как раз три ячейки), но вдруг у нас появляется четвертая задача, а следующая ячейка памяти уже занята! Что нам теперь делать??? В таком случае, нам придется запросить новый блок памяти, где будет сразу 4 свободных ячейки памяти, которые идут друг за другом, а затем переместить наши 4 задачи туда. Но как вы уже поняли, это достаточно медленно, типо прикиньте у нас всегда будет появляться новая задача, а места под нее хватать не будет, и нам придется всегда искать в компьютере другой блок памяти. ⚙️ #Память #Связанные_списки #Массивы
🥰2
✅Простейшим решением будет бронирование (резервирование) места в массиве.
Вместо того, чтобы выделять память ровно под необходимое количество элементов, выделяется больше памяти, чем нужно в данный момент. Это позволяет добавлять новые элементы в массив, не перевыделяя память каждый раз. То есть, если у нас пока что 4 задачи, но мы не уверены что это конечное число, просто резервируем сразу 7-8 мест и не паримся. Конечно же, есть недостатки.
⁉️Первое, забронировав 8 мест, не факт, что все они будут использоваться, следовательно память будет расходоваться неэффективно. И мы ее не используем и никто другой.
‼️Второе, если количество задач выйдет за 8, то перемещать все ровно придется. Теперь разберем связанные списки... #Память #Связанные_списки #Массивы
Вместо того, чтобы выделять память ровно под необходимое количество элементов, выделяется больше памяти, чем нужно в данный момент. Это позволяет добавлять новые элементы в массив, не перевыделяя память каждый раз. То есть, если у нас пока что 4 задачи, но мы не уверены что это конечное число, просто резервируем сразу 7-8 мест и не паримся. Конечно же, есть недостатки.
⁉️Первое, забронировав 8 мест, не факт, что все они будут использоваться, следовательно память будет расходоваться неэффективно. И мы ее не используем и никто другой.
‼️Второе, если количество задач выйдет за 8, то перемещать все ровно придется. Теперь разберем связанные списки... #Память #Связанные_списки #Массивы
🥰2👍1
А, хотя подождите, сначала про недостатки массивов, а затем сразу к связанным спискам!
❌1. Это конечно же проблема с выделением памяти. Когда мы сохраняем задачи в массиве, нам нужен фиксированный и непрерывный участок памяти, это где элементы идут друг за другом. Если у нас всего три свободных ячейки памяти и вдруг понадобилась четвертая, но она занята, нам придется запросить новый блок памяти. Есть конечно резервирование ячеек, но про их минусы я также написал. 💻
❌2. Трудности с вставкой и удалением элементов (об этом еще поговорим позже). Вставка или удаление элемента в середине массива требует сдвига всех последующих элементов, что занимает линейное время O(n), если вы не шарите в этой теме, я об этом писал, можете смотреть в навигации. Это если че достаточно медленный алгоритм.
❌3. Фиксированный размер, нам придется задавать размер массива при создании. Большие массивы могут вызывать проблемы, особенно если нам не хватает ячеек памяти.
❌4. Наверное. это все-таки минус - однородность элементов в массиве. То есть, мы можем хранить только элементы одного типа
❌1. Это конечно же проблема с выделением памяти. Когда мы сохраняем задачи в массиве, нам нужен фиксированный и непрерывный участок памяти, это где элементы идут друг за другом. Если у нас всего три свободных ячейки памяти и вдруг понадобилась четвертая, но она занята, нам придется запросить новый блок памяти. Есть конечно резервирование ячеек, но про их минусы я также написал. 💻
❌2. Трудности с вставкой и удалением элементов (об этом еще поговорим позже). Вставка или удаление элемента в середине массива требует сдвига всех последующих элементов, что занимает линейное время O(n), если вы не шарите в этой теме, я об этом писал, можете смотреть в навигации. Это если че достаточно медленный алгоритм.
❌3. Фиксированный размер, нам придется задавать размер массива при создании. Большие массивы могут вызывать проблемы, особенно если нам не хватает ячеек памяти.
❌4. Наверное. это все-таки минус - однородность элементов в массиве. То есть, мы можем хранить только элементы одного типа
🥰2
Ииитак, о преимуществах массивов говорить нам нельзя пока что, мы еще связанные списки не рассмотрели.
‼️ Первое, что вы сразу могли заметить, наши задачи размещаются где угодно в памяти, в каждом элементе хранится адрес следующего элемента списка. А вот набор произвольных адресов памяти объединяется в цепочку. Я немного об этом подробнее почитал, вот вам рассказываю. Каждая такая 'задача' это узел.
‼️ Первое, что вы сразу могли заметить, наши задачи размещаются где угодно в памяти, в каждом элементе хранится адрес следующего элемента списка. А вот набор произвольных адресов памяти объединяется в цепочку. Я немного об этом подробнее почитал, вот вам рассказываю. Каждая такая 'задача' это узел.
🥰1
CodeLab
Связаный список содержит элемент ссылки, называемой first (первой). Каждая ссылка имеет поле или поля данных и поле ссылки, называемой next (следующей). Каждая ссылка связана со следующей посредством своей ссылки next. Последняя ссылка содержит ссылку…
Воссап всем, ща буду рассказывать дальше про связанные списки.. Итак, связанный список это структура данных, которая состоит из элементов, называемых узлами.
Эти самые узлы хранят в себе данные и ссылки на следующий элемент в списке (это характерно для односвязного списка). Двухсвязный список имеет ссылки с переходом по элементам вперед и назад.
В прикрепленном сообщении все хорошо описано.
Эти самые узлы хранят в себе данные и ссылки на следующий элемент в списке (это характерно для односвязного списка). Двухсвязный список имеет ссылки с переходом по элементам вперед и назад.
В прикрепленном сообщении все хорошо описано.
Вот вам пару ссылок, если хотите ознакомиться сами, я попробую это скомпоновать по-своему
https://medium.com/nuances-of-programming/структуры-данных-и-алгоритмы-связный-список-6ae2625be22b - связаный список
https://medium.com/nuances-of-programming/структуры-данных-кольцевой-циклический-замкнутый-связный-список-93afae65157e - кольцевой связанный список
https://nuancesprog.ru/p/15493/ - двусвязный (двунаправленный) список
https://medium.com/nuances-of-programming/структуры-данных-и-алгоритмы-связный-список-6ae2625be22b - связаный список
https://medium.com/nuances-of-programming/структуры-данных-кольцевой-циклический-замкнутый-связный-список-93afae65157e - кольцевой связанный список
https://nuancesprog.ru/p/15493/ - двусвязный (двунаправленный) список
🖇А вот так выглядит двусвязный (двунаправленный) список, он содержит элемент ссылок first (для первой) и last (для последней). Также, явное отличие от односвязного списка - это переход по элементам не только вперед, но и назад. То есть, каждая ссылка связана со следующей посредством своей ссылки next, с предыдущей посредством своей ссылки prev. Последняя ссылка содержит ссылку со значением null, обозначающую конец списка.
⚙️ Теперь, третий вид связанного списка - кольцевой (циклический, замкнутый) связный список. Главная суть (сейчас вы увидите по фоткам), последний элемент не содержит null или None в указателе на следующий узел, как в обычных связных списках. Вместо этого последний узел ссылается на первый узел списка, а последний — на первый. Кольцевой связанный список можно сделать как из односвязного (однонаправленного), так и двусвязного (двунаправленного) списка. Сейчас поговорим отдельно о каждом
На данном этапе мы примерно поняли что делают массивы и связанные списки, разобрали минусы массивов и виды связанных списков. Теперь поговорим о плюсах и минусах связных списков и попробуем сравнить с массивами...
👨💻2
CodeLab
Ииитак, о преимуществах массивов говорить нам нельзя пока что, мы еще связанные списки не рассмотрели. ‼️ Первое, что вы сразу могли заметить, наши задачи размещаются где угодно в памяти, в каждом элементе хранится адрес следующего элемента списка. А вот…
Как я уже сказал, элементы размещаются где угодно в памяти и в каждом таком элементе хранится ссылка на следующий объект, так что по сути, мы просто идем по адресам наших элементов.