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

Обсуждение, новости, материал и сплетни — все здесь https://t.me/CodeLabMLChat
Download Telegram
На этом этапе все становится понятно, наши ответы - расстояние между городами, подставляем в маршруты, ищем минимальный маршрут и вот вам ответ.

‼️Оптимальный маршрут для 5 городов это маршрут A -> B -> E -> C -> D -> A с общей длиной 16.62, потому что он наименьший.

😳Теперь представьте, если бы городов было хотя бы 15)). Это был самый 'тугой' способ - метод перебора, если мне хватит мозгов, то разберем еще пару методов позже.

🧑‍💻Чисто вам факт, если городов будет больше 66, то компьютеру понадобится несколько миллиардов лет, чтобы найти правильный ответ, потому что число, факториал из 66 это количество операций сложения) Да и к тому же, мы не знаем, какая там могла быть длина между городами. Вычисления ии ниже 👇🏿
Здесь применена формула для нахождения расстояния между двумя точками. Да и в целом, это все было расписано, чтобы показать, что нужно делать, чтобы решить задачу с самого начала, имея начальные координаты. #Алгоритмы #Книги
CodeLab
Да кто эти ваши инт и флот⁉️ 🧑‍💻 Они частенько у нас фигурировали в прошлых задачах. Они, то есть #типы_данных, используются для представления целых чисел (int) и чисел с плавающей точкой (float). Код: a = 18 print(float(a)) #18 c = 1.345 print(int(c))…
🔗Итак, мы пару дней назад завели разговор за типы данных, 🧑‍💻 начнем, пожалуй, с задачи про две старушки.

⭕️Нам нужны всего 2 формулы для решения этой задачи: V1​ + V2 = V (км/ч) - скорость сближения и T = S / V - формула для времени. #Две_старушки

s, v1, v2 = float(input()), float(input()), float(input())
v = v1 + v2
t = s / v
print(t)
Задание достаточно простое, я думаю, просто пойдем дальше, выше два решения 🔝 #Обратное_число

Код:
a = float(input())
if a != 0:
print(a ** -1)
else:
print('Обратного числа не существует')

a = float(input())
if a != 0:
print(1 / a)
else:
print('Обратного числа не существует')
Подается нам число - температура в градусах по шкале Фаренгейта, а вывести мы должны температуру по шкале Цельсия #451_градус_по_Фаренгейту

f = float(input())  
c = 5 / 9 * (f - 32)
print(c)
🔗А вот и самое задание #451_градус_по_Фаренгейту Решение выше 👆🏿
#Dog_age

🔗Тут нужно вычислить возраст кобеля в человеческих годах (ахуенно).
⭕️Первые два года равны 10.5 человеческим, значит умножаем на 2. Если возраст > 2, то каждый год будет равен 4 человеческим..
#Dog_age Если возраст меньше или равен 2, возраст умножаем на 10.5. Если возраст больше 2, то уже к 21 прибавляем (n-2) * 4 (n - 2, поскольку первые 2 года посчитали).


n = int(input())

if n <= 2:
dog_age = n * 10.5
else:
dog_age = 2 * 10.5 + (n - 2) * 4

print(dog_age)
🔗Итак, #Первая_цифра_после_точки. В задании указано, вывести первую цифру после десятичной точки, ну и хули там решаем
Самым обычным решением будет просто умножить наше число на 10, чтобы оно стало целым, а затем находим остаток от деления #Первая_цифра_после_точки

Код:

s = float(input())
print(int(s * 10) % 10)
Ебать я щас сидел разбирал другой пример решения, просто интересно ваше мнение: Как вы думаете, верно ли это решение или нет? Какой будет ответ, если ввести 19.9? #float

Код:

n = float(input())
print(int((n - int(n)) * 10))
Само решение степик пропускает, это если что решение к заданию выше, но есть нюанс
Anonymous Quiz
67%
Да, верно
33%
Нет, неверно
Так, еще раз, представим, что с клавиатуры подается число 19.9, теперь подставляем и думаем
Какой будет ответ?
Anonymous Quiz
67%
8
33%
9
CodeLab
Так, разберем сразу на примере, как раз увидим как работает функция len() и что такое метод split(). У нас подается строка, состоящая из 4 слов. Переменной words присваиваем нашу строку.split(). Как раз таки #split() это метод, который разделяет нашу строку…
⭕️ Еще одно решение, которое я спиздил в комментариях к заданию (чуть позже опубликую причины, почему решение выше не является верным).

‼️ Итак, гений решил через метод split(), который я уже пытался объяснить (Сообщение я прикрепил). Итак, что тут происходит

0️⃣ Input() запрашивает у нас ввод, вводим и он возвращает строку, тут все как обычно.

1️⃣ Дальше выводим s.split('.').

2️⃣ Мы разбиваем нашу строку s и в качестве разделителя используем точку, как раз, что нам и нужно.

3️⃣Допустим, было у нас число 111.234 - метод просто вернет список ['111', '234']. Дальше идет [-1]. Это значит что выбирается первый с конца элемент, как в нашем примере, это будет 234. Ну и собственно [0] выбирает первый символ '234', это будет просто 2, так как индекс [0] имеет первый символ. #split #Программирование
CodeLab
Какой будет ответ?
‼️ Теперь, почему все-таки 8? Берем код выше. input() возвращает нам строку и дальше выводим:

(int((n-int(n))*10)).

⭕️ Если бы подставили, скажем, 14.89, то все достаточно просто, вычитаем, получаем 0.89, умножаем на 10 и получаем 8.9, а перед скобками стоит int(), значит дробная часть отбрасывается, ответ 8.

Пока что все логично и понятно. Кароч, мне стало достаточно интересно узнать почему 0.1, 0.2, 0.3, 19.9, не могут быть точно представлены в виде конечной дроби в двоичной системе, поэтому я обратился к GPT.

Число 19.9 не может быть точно представлено в виде числа с плавающей точкой (тип float) из-за особенностей двоичного представления в компьютере.

🌶 Это связано с тем, что числа с плавающей точкой хранятся в двоичной системе счисления, а не в десятичной. Десятичные числа, такие как 19.9, записываются в виде суммы степеней числа 10 (пример 1 на фото) Однако, в двоичной системе, это число нужно представить в виде суммы степеней числа 2 (Пример 2 на фото).
🔗 Суть в том, что десятичные дроби, такие как 0.1, 0.2, 0.3 - 0.9 не могут быть точно представлены в виде конечной дроби в двоичной системе.

В результате они представляются как бесконечные двоичные дроби, которые необходимо округлить до ближайшего возможного значения, которое может быть представлено в системе с плавающей точкой.

❗️Так как компьютер ограничен количеством битов для хранения числа, он не может хранить бесконечную дробь и должен её округлить 19.9. до ближайшего возможного представления 19.899999999999998(примерно) 🧑‍💻
Завтра попробую об этом поподробнее рассказать, всем сладких 😋