Вау, вышел фильм про Python 😍
Это не просто нарезка интервью на 20 минут. Это полноценный, 90-минутный фильм о том, как хобби-проект Гвидо ван Россума из 90-х превратился в технологию, которая сегодня двигает ИИ, Data Science и половину мирового веба.
Внутри — весь пантеон:
▫️Сам Гвидо ван Россум
▫️Трэвис Олифант (отец-основатель NumPy)
▫️Барри Варшава (один из ключевых разработчиков CPython)
▫️Люди из Dropbox, Anaconda и куча других компаний.
Рассказывают, как язык чуть не умер по дороге и почему именно комьюнити сделало его бессмертным.
👉 Гоу, смотреть: https://youtu.be/GfH4QL4VqJ0
И это очень уместный релиз для новой рубрики #так_сложилось на канале, первый пост в которой выйдет завтра 😉
Это не просто нарезка интервью на 20 минут. Это полноценный, 90-минутный фильм о том, как хобби-проект Гвидо ван Россума из 90-х превратился в технологию, которая сегодня двигает ИИ, Data Science и половину мирового веба.
Внутри — весь пантеон:
▫️Сам Гвидо ван Россум
▫️Трэвис Олифант (отец-основатель NumPy)
▫️Барри Варшава (один из ключевых разработчиков CPython)
▫️Люди из Dropbox, Anaconda и куча других компаний.
Рассказывают, как язык чуть не умер по дороге и почему именно комьюнити сделало его бессмертным.
👉 Гоу, смотреть: https://youtu.be/GfH4QL4VqJ0
И это очень уместный релиз для новой рубрики #так_сложилось на канале, первый пост в которой выйдет завтра 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Python: The Documentary | An origin story
This is the story of the world's most beloved programming language: Python. What began as a side project in Amsterdam during the 1990s became the software powering artificial intelligence, data science and some of the world’s biggest companies. But Python's…
🔥14 3❤2⚡1🥰1🙏1
Я выучил синтаксис Python, прошёл курс, а что дальше? Почему резюме игнорят, а на собесах валят?
Это частый запрос многих начинающих. Есть разрыв между учебной теорией и тем, что реально нужно бизнесу. Можно годами сидеть на Stepik, но так и не понять, как работает настоящая коммерческая разработка, как проходить собесы и как себя "продать".
Познакомься с Сергеем Филичкиным — Senior Backend (стартапы + корпорации). Он не «учит питону», он доводит до оффера:
- Диагностика на бесплатной письменной консультации: разбираете твой уровень и цель (какая роль, какие деньги, какой горизонт).
- Тренировка под реальную работу: Docker, Git, CI/CD, code-review, разбор прод-кейсов. Параллельно — резюме и профиль, которые отвечают на запрос HR, а не список курсов.
- Мок-собесы: закрываете пробелы до интервью, а не после отказа.
- Сопровождение до закрытия испытательного срока: доходишь до конкретного оффера и проходишь испытательный без провалов.
Цифры, подтвержающие эффективность менторства с Сергеем:
🚀 Оффер в 2–4 раза быстрее рынка: медиана — 1,5 месяца после окончания программы (против 3–6 месяцев).
💰 Первый оффер: ~200К ₽ медиана (против типичных 60–120К ₽ у джунов).
✅ 0% провалов на испытательном за 2 года.
Хочешь выбраться из «вечного обучения» к реальной работе и деньгам?
➡️ Запишись на бесплатную консультацию к Сергею тут, составите план под твою ситуацию и сроки. Это ни к чему не обязывает, но часто именно отсюда начинается движение к офферу.
Реклама. ИП Филичкин С.А., ИНН 183401586208
ERID: 2VtzqusRsBg
⚡2✍1👍1🤔1🤝1🆒1 1
Стэнфорд вынес приговор: ИИ уже сжирает джунов 😱
Споры "заменит или не заменит ИИ программистов" продолжаются, но тут вышло большое исследование от Стэнфорда. Они не гадали на кофейной гуще, а проанализировали миллионы зарплатных ведомостей с конца 2022-го, как раз с прихода ChatGPT.
Самое главное:
1️⃣ Занятость среди джунов (22-25 лет) в профессиях, подверженных ИИ (разработчики, саппорт), рухнула на 13%. При этом у их более опытных коллег на тех же позициях она, наоборот, выросла на 6-9%. Дверь в профессию начали прикрывать.
2️⃣ Падение происходит именно там, где ИИ автоматизирует рутину (написание простых скриптов, базовых тестов). А там, где он дополняет эксперта (рефакторинг, сложная отладка), занятость растет. Проблема в том, что вся работа джуна — это и была та самая рутина, на которой он учился.
3️⃣ Зарплаты почти не изменились. И это создает опасную иллюзию, что всё в порядке. На деле компании не режут оклады, они просто замораживают найм "лишних" ртов. Классическая реакция рынка.
Более подробный разбор читаем здесь: Стэнфорд вынес приговор: ИИ уже вытесняет junior-разработчиков◀️
Видеопересказ смотрим тут◀️
#рыночек_порешал
Споры "заменит или не заменит ИИ программистов" продолжаются, но тут вышло большое исследование от Стэнфорда. Они не гадали на кофейной гуще, а проанализировали миллионы зарплатных ведомостей с конца 2022-го, как раз с прихода ChatGPT.
Самое главное:
Более подробный разбор читаем здесь: Стэнфорд вынес приговор: ИИ уже вытесняет junior-разработчиков
Видеопересказ смотрим тут
#рыночек_порешал
Please open Telegram to view this post
VIEW IN TELEGRAM
😢6✍1❤1👻1 1
Python-агент, который сам откликается на тысячи вакансий 👨💻
Помните про ИИ-петлю обреченности, когда соискатели используют ИИ, чтобы массово рассылать сотни резюме, а компании используют ИИ, чтобы так же массово их отсеивать?
Наткнулся на open-source проект
1. Даешь ему ссылку на вакансию.
2. Он парсит описание с помощью LLM (прощайте, хрупкие селекторы!).
3. Берет твое базовое резюме, прогоняет через GPT и "затачивает" его под конкретные требования.
4. То же самое делает с сопроводительным письмом.
5. На выходе — готовые, кастомизированные PDF-ки.
Идеальный ответ на бездушную HR-машину, которая отсеивает кандидатов по ключевым словам. Натравить одного робота на другого — что может быть справедливее?
Только помните, что вы тогда являетесь соучастником того, что весь процесс превращается в какой-то гребаный цирк😁
Разобрал, как этот инструмент работает в статье: Архитектурный разбор AI-агента для генерации резюме на Python 👈🏻
#щупаем_сорцы
Помните про ИИ-петлю обреченности, когда соискатели используют ИИ, чтобы массово рассылать сотни резюме, а компании используют ИИ, чтобы так же массово их отсеивать?
Наткнулся на open-source проект
Auto_Jobs_Applier_AIHawk
, суть такая:1. Даешь ему ссылку на вакансию.
2. Он парсит описание с помощью LLM (прощайте, хрупкие селекторы!).
3. Берет твое базовое резюме, прогоняет через GPT и "затачивает" его под конкретные требования.
4. То же самое делает с сопроводительным письмом.
5. На выходе — готовые, кастомизированные PDF-ки.
Идеальный ответ на бездушную HR-машину, которая отсеивает кандидатов по ключевым словам. Натравить одного робота на другого — что может быть справедливее?
Только помните, что вы тогда являетесь соучастником того, что весь процесс превращается в какой-то гребаный цирк
Разобрал, как этот инструмент работает в статье: Архитектурный разбор AI-агента для генерации резюме на Python 👈🏻
#щупаем_сорцы
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6🔥4😱4⚡2👍2❤1
print "Hello"
против print("Hello")
— казалось бы, мелочь, но именно она стала одним из символов Великого Раскола, который на 10 лет погрузил Python-сообщество в настоящую гражданскую войну.Почему Гвидо ван Россум (создатель Python) пошел на такой шаг? Что на самом деле сломалось, кроме
print
? И как этот конфликт, полный ожесточенных споров, багов и переписываний кода, сформировал тот Python, которым мы пользуемся сегодня?Это не просто история обновления. Это сага о технических долгах, о сопротивлении сообщества и о том, как ради чистоты и будущего языка пришлось пожертвовать прошлым.
Историю «Великого Раскола», с примерами кода читайте в статье
#так_сложилось
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍 Алгоритмическая задачка
Представьте, что вы участвуете в карточном турнире 🃏. Перед вами на столе лежит ряд карт, каждая со своим номиналом. Правила просты, но требуют стратегического мышления.
Условие
Дан список очков
Функция должна принять список
Примеры 👇
1️⃣
Вывод:
Пояснение: Оптимальная стратегия — взять три карты справа: 1, затем 6, затем 5. Сумма = 1 + 6 + 5 = 12.
2️⃣
Вывод:
Пояснение: Неважно, какие две карты взять, сумма всегда будет 4.
3️⃣
Вывод:
Пояснение: Мы должны забрать все карты, поэтому результат — это их общая сумма.
Жду ваши эффективные решения🖥
Представьте, что вы участвуете в карточном турнире 🃏. Перед вами на столе лежит ряд карт, каждая со своим номиналом. Правила просты, но требуют стратегического мышления.
Условие
Дан список очков
card_points
. За k
ходов нужно набрать максимальную сумму очков. За один ход можно взять одну карту: либо самую левую, либо самую правую.Функция должна принять список
card_points
и число k
и вернуть максимально возможную сумму.Примеры 👇
1️⃣
card_points = [1, 2, 3, 4, 5, 6, 1]
, k = 3
Вывод:
12
Пояснение: Оптимальная стратегия — взять три карты справа: 1, затем 6, затем 5. Сумма = 1 + 6 + 5 = 12.
2️⃣
card_points = [2, 2, 2]
, k = 2
Вывод:
4
Пояснение: Неважно, какие две карты взять, сумма всегда будет 4.
3️⃣
card_points = [9, 7, 7, 9, 7, 7, 9]
, k = 7
Вывод:
55
Пояснение: Мы должны забрать все карты, поэтому результат — это их общая сумма.
Жду ваши эффективные решения
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2🙏1
Кто-то из вас мечтает пилить проекты, попивая мохито в шезлонге на Бали (или в Крыму). А кто-то сойдет с ума, работая вне коллектива и без живого общения.
Где вы реально чувствуете себя наиболее эффективным и счастливым?
Где вы реально чувствуете себя наиболее эффективным и счастливым?
Anonymous Poll
35%
Только удаленка. Продуктивность зашкаливает, никаких отвлекающих факторов и пробок.
46%
Гибрид – идеальный баланс. И поработать в тишине, и с людьми поболтать, когда надо.
3%
Только офис. Живое общение, атмосфера, и дома работа не лезет в личную жизнь.
15%
Там, где платят нормально. Формат не важен, когда зарплата мотивирует закрыть глаза на всё.
❤3👍2🔥2🙏1 1
🗓Итоги месяца (август 2025)
🏆Топовый пост: бесплатный курс по deep learning от MIT🎓
👀 Топ по просмотрам 👨🏻💻
1️⃣ Технические доклады из конференции «Code with Claude».
2️⃣ Релиз модельки Qwen Image.
3️⃣ Свежий отчёт «The State of Python 2025» от JetBrains.
📨 Топ по репостам 📥
1️⃣ MMORPG Artifacts, в которой можно писать скрипты для управления персонажами.
2️⃣ Как GPT-4o инвестирует на фондовом рынке.
3️⃣ Гайд по промптингу для программирования в GPT5 от OpenAI.
👍🏻 Топ по реакциям 😍
1️⃣ Как выбрать арбуз при помощи Python.
2️⃣ О том, что сейчас происходит в IT-найме.
3️⃣ Гайд по enumerate в Python.
#итоги_месяца
🏆Топовый пост: бесплатный курс по deep learning от MIT
👀 Топ по просмотрам 👨🏻💻
1️⃣ Технические доклады из конференции «Code with Claude».
2️⃣ Релиз модельки Qwen Image.
3️⃣ Свежий отчёт «The State of Python 2025» от JetBrains.
📨 Топ по репостам 📥
1️⃣ MMORPG Artifacts, в которой можно писать скрипты для управления персонажами.
2️⃣ Как GPT-4o инвестирует на фондовом рынке.
3️⃣ Гайд по промптингу для программирования в GPT5 от OpenAI.
👍🏻 Топ по реакциям 😍
1️⃣ Как выбрать арбуз при помощи Python.
2️⃣ О том, что сейчас происходит в IT-найме.
3️⃣ Гайд по enumerate в Python.
#итоги_месяца
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🎉2👍1🙏1👨💻1
🃏 Разбор карточной задачки: от O(k²) к O(k)!
Пришло время разобрать нашу задачу про карточный турнир.
🤔 Распространённый подход: полный перебор
Самая очевидная стратегия — перебрать все возможные комбинации взятых карт. Мы можем взять:
-
-
-
- ...
- 0 карт слева,
Этот подход абсолютно корректен. Однако, если реализовывать его "в лоб", на каждом шаге пересчитывая сумму срезов, код будет выглядеть примерно так:
А можно ли быстрее? Конечно!
🚀 Эталонное решение: Скользящее окно за O(k)
Вместо того чтобы каждый раз пересчитывать сумму с нуля, мы можем вычислить её один раз, а затем "сдвигать" наш выбор, обновляя сумму за константное время
Как это работает?
1. Сначала считаем, что мы взяли первые
2. Затем в цикле
3. На каждом шаге обновляем текущую сумму и сравниваем её с максимальной.
⏳ Время:
💾 Память:
💡 Красивая альтернатива: инверсия задачи
Есть и другой, очень изящный способ взглянуть на проблему.
Задача превращается в "найти непрерывный подмассив длиной
Этот подход имеет сложность
#алгособес
Пришло время разобрать нашу задачу про карточный турнир.
🤔 Распространённый подход: полный перебор
Самая очевидная стратегия — перебрать все возможные комбинации взятых карт. Мы можем взять:
-
k
карт слева, 0 справа-
k-1
карт слева, 1 справа-
k-2
карт слева, 2 справа- ...
- 0 карт слева,
k
карт справаЭтот подход абсолютно корректен. Однако, если реализовывать его "в лоб", на каждом шаге пересчитывая сумму срезов, код будет выглядеть примерно так:
def max_score_slow(card_points, k):
max_sum = 0
n = len(card_points)
for i in range(k + 1):
# i - сколько карт берем справа
# k-i - сколько карт берем слева
left_sum = sum(card_points[:k - i])
right_sum = sum(card_points[n - i:])
max_sum = max(max_sum, left_sum + right_sum)
return max_sum
Главный минус здесь — многократный вызов sum() внутри цикла. Каждая такая операция сама по себе занимает время, пропорциональное количеству элементов. В итоге общая сложность алгоритма получается O(k²), что может быть медленно на больших данных.
А можно ли быстрее? Конечно!
🚀 Эталонное решение: Скользящее окно за O(k)
Вместо того чтобы каждый раз пересчитывать сумму с нуля, мы можем вычислить её один раз, а затем "сдвигать" наш выбор, обновляя сумму за константное время
O(1)
.Как это работает?
1. Сначала считаем, что мы взяли первые
k
карт слева. Это наша первоначальная max_sum
.2. Затем в цикле
k
раз делаем "обмен": убираем одну карту с конца левой группы и добавляем одну карту справа.3. На каждом шаге обновляем текущую сумму и сравниваем её с максимальной.
def max_score_fast(card_points, k):
n = len(card_points)
current_sum = sum(card_points[:k])
max_sum = current_sum
for i in range(1, k + 1):
# Обновляем сумму за O(1):
# отнимаем крайний левый элемент и прибавляем крайний правый
current_sum = current_sum - card_points[k - i] + card_points[n - i]
max_sum = max(max_sum, current_sum)
return max_sum
⏳ Время:
O(k)
. Один начальный подсчет суммы sum(card_points[:k])
занимает O(k)
, и цикл также выполняется k
раз с операциями за O(1)
.💾 Память:
O(1)
. Мы храним всего несколько переменных.💡 Красивая альтернатива: инверсия задачи
Есть и другой, очень изящный способ взглянуть на проблему.
Вместо того чтобы максимизировать сумму k карт, которые мы берём, давайте минимизируем сумму n-k карт в центре, которые мы оставляем на столе.
Задача превращается в "найти непрерывный подмассив длиной
n-k
с минимальной суммой". Это тоже классическая задача на скользящее окно!def max_score_inverted(card_points, k):
n = len(card_points)
window_size = n - k
total_sum = sum(card_points)
if window_size <= 0:
return total_sum
min_subarray_sum = current_sum = sum(card_points[:window_size])
for i in range(window_size, n):
current_sum += card_points[i] - card_points[i - window_size]
min_subarray_sum = min(min_subarray_sum, current_sum)
return total_sum - min_subarray_sum
Этот подход имеет сложность
O(N)
, что тоже отлично. Он особенно хорош, когда k
близко к N
.#алгособес
Telegram
PythonTalk
🐍 Алгоритмическая задачка
Представьте, что вы участвуете в карточном турнире 🃏. Перед вами на столе лежит ряд карт, каждая со своим номиналом. Правила просты, но требуют стратегического мышления.
Условие
Дан список очков card_points. За k ходов нужно набрать…
Представьте, что вы участвуете в карточном турнире 🃏. Перед вами на столе лежит ряд карт, каждая со своим номиналом. Правила просты, но требуют стратегического мышления.
Условие
Дан список очков card_points. За k ходов нужно набрать…
👍3✍1🔥1🙏1
👨💻 Главный IT-навык 2025 — не AI
Пока все носятся с вайб-кодерами и AI-экспертами, которым платят много денюжек, реальность постучалась в дверь.
Тут издание Course Report провело исследование: проанализировали 12 миллионов (!!!) IT-вакансий на Indeed. И знаете, какой навык самый востребованный?
Держитесь за стулья:
➡️ Microsoft Excel:
➡️ Python:
➡️ SQL:
...
➡️ AI: жалкие
Да-да, программа, выпущенная 40 лет назад, упоминается в вакансиях почти в 8 раз чаще, чем Python. И в 21 раз чаще, чем AI.
Как сказал один из экспертов в статье: "За всем блеском чат-ботов и нейросеток стоит старый-добрый Excel. Реальные решения и реальные доллары двигаются именно там".
Так и живём.
Пока все носятся с вайб-кодерами и AI-экспертами, которым платят много денюжек, реальность постучалась в дверь.
Тут издание Course Report провело исследование: проанализировали 12 миллионов (!!!) IT-вакансий на Indeed. И знаете, какой навык самый востребованный?
Держитесь за стулья:
➡️ Microsoft Excel:
531 000
упоминаний➡️ Python:
67 000
упоминаний➡️ SQL:
60 000
упоминаний...
➡️ AI: жалкие
25 000
упоминаний.Да-да, программа, выпущенная 40 лет назад, упоминается в вакансиях почти в 8 раз чаще, чем Python. И в 21 раз чаще, чем AI.
Как сказал один из экспертов в статье: "За всем блеском чат-ботов и нейросеток стоит старый-добрый Excel. Реальные решения и реальные доллары двигаются именно там".
Так и живём.
🗿11👍8😁4🤔2😱2❤1😢1🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
🇨🇳 Tencent за последнюю пару недель выкатила в опенсорс сразу две нейросети. Одна озвучивает видео, а вторая — метит в убийцы DeepL.
Посмотрите, что делает Hunyuan Video-Foley. Берем немое видео, пишем промпт... и получаем норм такой саунд-дизайн.
Это полноценный Foley — то самое искусство создания звуковых эффектов, которым занимаются целые студии. И теперь Tencent отдает эту технологию в паблик. Можно "потрогать" самому, если у вас есть что-то вроде RTX 3090/4090.
Второй релиз — Hunyuan-MT. Это семейство моделей-переводчиков, которое, по заявлениям Tencent, уже взяло первое место на конкурсе WMT25.
Что там интересного:
1️⃣ Есть модель-"редактор" Chimera. Она не переводит сама, а берет несколько вариантов перевода и "собирает" из них лучший. Впервые такой подход в опенсорсе.
2️⃣ Можно файн-тюнить. Самое ценное для нас, разрабов. Можно дообучить модель на своей специфической лексике (юр, мед, IT-термины) и получить переводчик, который реально понимает ваш контекст.
Кому интересно залезть под капот и запустить это у себя — читайте: Разбор новых SOTA-моделей для перевода (MT) и озвучки видео (Video-Foley)◀️ ◀️
Лайтовый видеопересказ здесь◀️
#щупаем_сорцы
Посмотрите, что делает Hunyuan Video-Foley. Берем немое видео, пишем промпт... и получаем норм такой саунд-дизайн.
Это полноценный Foley — то самое искусство создания звуковых эффектов, которым занимаются целые студии. И теперь Tencent отдает эту технологию в паблик. Можно "потрогать" самому, если у вас есть что-то вроде RTX 3090/4090.
Второй релиз — Hunyuan-MT. Это семейство моделей-переводчиков, которое, по заявлениям Tencent, уже взяло первое место на конкурсе WMT25.
Что там интересного:
1️⃣ Есть модель-"редактор" Chimera. Она не переводит сама, а берет несколько вариантов перевода и "собирает" из них лучший. Впервые такой подход в опенсорсе.
2️⃣ Можно файн-тюнить. Самое ценное для нас, разрабов. Можно дообучить модель на своей специфической лексике (юр, мед, IT-термины) и получить переводчик, который реально понимает ваш контекст.
Кому интересно залезть под капот и запустить это у себя — читайте: Разбор новых SOTA-моделей для перевода (MT) и озвучки видео (Video-Foley)
Лайтовый видеопересказ здесь
#щупаем_сорцы
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2🔥2🙏1🆒1
Среда — маленькая пятница, а значит, мозг уже можно нагружать по полной. Держите задачку, которая на первый взгляд кажется простой.
Есть список положительных чисел
Цель — добиться минимально возможной разницы между самым большим и самым маленьким элементом в списке.
Правила игры:
С любым элементом списка можно сколько угодно раз проворачивать два трюка:
📉 Если число чётное — делим его на 2.
📈 Если число нечётное — умножаем на 2.
Пара примеров:
(Например, можно превратить в [2, 2, 3, 2])
(Можно получить [4, 2, 5, 5, 3])
Ну что, как решать будете?
#алгособес
Есть список положительных чисел
nums
.Цель — добиться минимально возможной разницы между самым большим и самым маленьким элементом в списке.
Правила игры:
С любым элементом списка можно сколько угодно раз проворачивать два трюка:
📉 Если число чётное — делим его на 2.
📈 Если число нечётное — умножаем на 2.
Пара примеров:
nums = [1, 2, 3, 4]
→ разница 1(Например, можно превратить в [2, 2, 3, 2])
nums = [4, 1, 5, 20, 3]
→ разница 3(Можно получить [4, 2, 5, 5, 3])
nums = [2, 10, 8]
→ разница 3Ну что, как решать будете?
#алгособес
👍3🔥3🙏1
Программист против кота! ⌨️🐈⬛
Отходишь на 5 минут за кофе, а твой пушистый засранец уже отправил начальнику в чат «жжждлоавыоаы» и закрыл без сохранения файлик, в котором ты работал весь день.
Так вот, один разработчик решил эту проблему как и положено инженеру — написал код.
Встречайте, CatLock — гениальная в своей простоте утилита на Python. Нажимаешь хоткей — и клавиатура полностью блокируется, а поверх экрана появляется полупрозрачный слой. Всё видно, но коту можно. Для разблокировки достаточно кликнуть мышкой.
Вся магия, кстати, на чистом Python с помощью библиотек
А помогать тестировать программу разрабу помогал рыжий (на фото).
Срочно нужны фото ваших котеек на клавиатуре!😺
Отходишь на 5 минут за кофе, а твой пушистый засранец уже отправил начальнику в чат «жжждлоавыоаы» и закрыл без сохранения файлик, в котором ты работал весь день.
Так вот, один разработчик решил эту проблему как и положено инженеру — написал код.
Встречайте, CatLock — гениальная в своей простоте утилита на Python. Нажимаешь хоткей — и клавиатура полностью блокируется, а поверх экрана появляется полупрозрачный слой. Всё видно, но коту можно. Для разблокировки достаточно кликнуть мышкой.
Вся магия, кстати, на чистом Python с помощью библиотек
keyboard
и tkinter
. А помогать тестировать программу разрабу помогал рыжий (на фото).
Срочно нужны фото ваших котеек на клавиатуре!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍6⚡4👌1 1
Разбор задачки: да поможет нам куча! 💪🏻
Самая большая сложность задачи — в двойственности операций. Числа могут как расти, так и убывать. А что, если заставить их двигаться только в одном направлении?
Если мы сразу преобразуем все нечётные числа в списке, умножив их на 2, мы получим новую задачу: "Есть список чисел, любое из которых можно поделить на 2, если оно чётное. Найдите минимальную разницу".
Теперь все операции ведут только к уменьшению чисел. Это меняет всё!
⚙️ Как это работает: жадный алгоритм + max-heap
Раз мы можем только уменьшать числа, то для минимизации разницы
Алгоритм получается таким:
1️⃣ Нормализация. Создаём новый набор чисел: все нечётные умножаем на 2, чётные оставляем как есть. На этом же шаге находим минимальное значение в этом наборе.
2️⃣ Max-heap. Все полученные числа кладём в max-heap. Она позволит нам получать наибольший элемент за
3️⃣ Итерации. В цикле, пока текущий максимум остаётся чётным:
- Достаём максимум из кучи.
- Вычисляем текущую разницу и обновляем наш рекорд, если она меньше.
- Делим максимум на 2 и кладём обратно в кучу.
- Не забываем обновить и общий минимум, если новое число оказалось меньше.
Когда максимум в куче становится нечётным, мы останавливаемся, так как уменьшать его больше нельзя.
Вот как эта идея выглядит в коде. Обратите внимание, как в Python эмулируется max-heap с помощью
Асимптотика:
- Время:
- Память:
Кому хочется подробнее почитать про кучи, то залетайте: Ультимативный гайд по структурам данных и алгоритмам на Python. Часть 5: деревья, BST и heapq 👈🏻
#алгособес
Самая большая сложность задачи — в двойственности операций. Числа могут как расти, так и убывать. А что, если заставить их двигаться только в одном направлении?
Ключевой трюк: любое нечётное число n можно превратить в 2n, а дальше — только уменьшать. Это значит, что для каждого числа мы можем найти его максимально возможного чётного предка.
Если мы сразу преобразуем все нечётные числа в списке, умножив их на 2, мы получим новую задачу: "Есть список чисел, любое из которых можно поделить на 2, если оно чётное. Найдите минимальную разницу".
Теперь все операции ведут только к уменьшению чисел. Это меняет всё!
⚙️ Как это работает: жадный алгоритм + max-heap
Раз мы можем только уменьшать числа, то для минимизации разницы
max - min
нам выгодно уменьшать именно max
. Этот жадный подход здесь работает идеально.Алгоритм получается таким:
1️⃣ Нормализация. Создаём новый набор чисел: все нечётные умножаем на 2, чётные оставляем как есть. На этом же шаге находим минимальное значение в этом наборе.
2️⃣ Max-heap. Все полученные числа кладём в max-heap. Она позволит нам получать наибольший элемент за
O(1)
.3️⃣ Итерации. В цикле, пока текущий максимум остаётся чётным:
- Достаём максимум из кучи.
- Вычисляем текущую разницу и обновляем наш рекорд, если она меньше.
- Делим максимум на 2 и кладём обратно в кучу.
- Не забываем обновить и общий минимум, если новое число оказалось меньше.
Когда максимум в куче становится нечётным, мы останавливаемся, так как уменьшать его больше нельзя.
Вот как эта идея выглядит в коде. Обратите внимание, как в Python эмулируется max-heap с помощью
heapq
(min-heap), сохраняя отрицательные числа.import heapq
def minimum_deviation(nums):
min_val = float('inf')
max_heap = []
# Шаг 1: Нормализация и инициализация
# Превращаем все числа в "максимальных предков"
# и сразу находим минимум
for n in set(nums):
val = n * 2 if n % 2 != 0 else n
heapq.heappush(max_heap, -val)
min_val = min(min_val, val)
min_deviation = -max_heap[0] - min_val
# Шаг 2: Итеративно уменьшаем максимум
while max_heap[0] % 2 == 0:
max_val = -heapq.heappop(max_heap)
new_val = max_val // 2
min_val = min(min_val, new_val)
heapq.heappush(max_heap, -new_val)
current_max = -max_heap[0]
min_deviation = min(min_deviation, current_max - min_val)
return min_deviation
Асимптотика:
- Время:
O(N * log(MAX_VAL))
. Начальное построение кучи O(N)
. Каждое число может быть поделено log(val)
раз, и каждая операция с кучей стоит log(N)
. Но так как N
и MAX_VAL
связаны, сложность можно оценить так.- Память:
O(N)
для хранения кучи.Кому хочется подробнее почитать про кучи, то залетайте: Ультимативный гайд по структурам данных и алгоритмам на Python. Часть 5: деревья, BST и heapq 👈🏻
#алгособес
olegtalks.ru
Ультимативный гайд по структурам данных и алгоритмам на Python. Часть 5: деревья, BST и heapq
Файловые системы, DOM, оргструктуры — всё это иерархии, для моделирования которых в программировании служат деревья (trees). Понимание деревьев — ключ к эффективной работе с иерархическими данными и многим продвинутым алгоритмам.
👍3🔥1🙏1👌1
Что получим при запуске кода?
Anonymous Quiz
21%
AttributeError: type object 'Child' has no attribute 'create'
5%
TypeError
28%
Parent
17%
None
29%
Child
🔥2 2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Marimo — как Jupyter, только лучше 😎
Marimo — open-source IDE, которая похожа на привычный Jupyter, но с рядом интересных преимуществ:
🔸при запуске ячейки автоматически запускаются зависимые ячейки (вот это супер удобно!);
🔸ноутбуки сохраняются без вывода ячеек в исполняемом
🔸интеграция с git из коробки;
🔸поддерживаются интерактивные элементы;
🔸встроенный менеджер пакетов, GitHub Copilot, AI-ассистенты, Ruff, экспорт в HTML и многое другое.
При этом поддерживает только Python 🐍
В статье разработчик рассказывает про все решения и преимущества.
Попробовать можно так:
#тулбокс
Marimo — open-source IDE, которая похожа на привычный Jupyter, но с рядом интересных преимуществ:
🔸при запуске ячейки автоматически запускаются зависимые ячейки (вот это супер удобно!);
🔸ноутбуки сохраняются без вывода ячеек в исполняемом
.py
формате, что обеспечивает полную совместимость с другими IDE (тоже круто!) и удобное версионирование.🔸интеграция с git из коробки;
🔸поддерживаются интерактивные элементы;
🔸встроенный менеджер пакетов, GitHub Copilot, AI-ассистенты, Ruff, экспорт в HTML и многое другое.
При этом поддерживает только Python 🐍
В статье разработчик рассказывает про все решения и преимущества.
Попробовать можно так:
pip install marimo && marimo tutorial intro
#тулбокс
🔥8👍4🙏1
Валютная удалёнка – мечта или реальность?
Работать из РФ и получать зп в долларах – кто об этом не мечтал! Но выглядит это слишком тяжело и нереалистично. Сразу возникает куча вопросов:
⭐️ Как податься в иностранную компанию?
⭐️ В чем отличия в процессе собеседования?
⭐️ К каким вопросам и задачам готовиться?
В зарубежных компаниях (без топ менеджмента из выходцев из Восточной Европы) всё может быть совсем иначе — начиная с формата резюме и заканчивая этапами интервью.
Если эта тема вам актуальна, рекомендую полезный ресурс, который ведёт Иван Анисимов. У него большой опыт поиска работы и релокации в IT и он разбирает типичные ошибки кандидатов, которые мешают пройти отбор.
В чате:
– Общение с единомышленниками, которые тоже ищут работу за рубежом
– Ответы на частые вопросы — от поиска вакансий до нюансов оформления
– Бесплатные консультации по резюме и гайды, чтобы не тратить недели на сбор информации
Формат дружелюбный — можно просто читать, можно задавать вопросы или помогать другим. Для желающих выйти на зарубежный IT-рынок — отличная точка старта.
Если вам актуально, подписывайтесь🌸
Реклама. erid: 2VtzqwyKbTR, ИНН: 500517272124
Работать из РФ и получать зп в долларах – кто об этом не мечтал! Но выглядит это слишком тяжело и нереалистично. Сразу возникает куча вопросов:
В зарубежных компаниях (без топ менеджмента из выходцев из Восточной Европы) всё может быть совсем иначе — начиная с формата резюме и заканчивая этапами интервью.
Если эта тема вам актуальна, рекомендую полезный ресурс, который ведёт Иван Анисимов. У него большой опыт поиска работы и релокации в IT и он разбирает типичные ошибки кандидатов, которые мешают пройти отбор.
В чате:
– Общение с единомышленниками, которые тоже ищут работу за рубежом
– Ответы на частые вопросы — от поиска вакансий до нюансов оформления
– Бесплатные консультации по резюме и гайды, чтобы не тратить недели на сбор информации
Формат дружелюбный — можно просто читать, можно задавать вопросы или помогать другим. Для желающих выйти на зарубежный IT-рынок — отличная точка старта.
Если вам актуально, подписывайтесь
Реклама. erid: 2VtzqwyKbTR, ИНН: 500517272124
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Удалёнка в IT | Анисимов
Всё о валютной удалёнке и много-работничестве.
Принимаю на менторство всех желающих: @followthesun
Админ: @sixty_am
Принимаю на менторство всех желающих: @followthesun
Админ: @sixty_am
❤5👍1🔥1🙏1👨💻1 1