PythonTalk
4.82K subscribers
1.52K photos
49 videos
6 files
1.34K links
Привет, меня зовут Олег Булыгин 👋

🐍 Здесь я делюсь полезной информацией для тех, кто пишет код на Python: от разработки до Data Science.

По вопросам: @obulygin91
Download Telegram
🐍 Разбор задачки: поиск слова в матрице

Всё решается через рекурсию, поиск в глубину (DFS) и техники backtracking (поиск с возвратом).

Основная идея — представить матрицу как граф. Наша задача — найти в этом графе путь, который в точности повторяет заданное слово, не посещая одну и ту же вершину (ячейку) дважды.

def exist(board, word):
if not board:
return False

rows, cols = len(board), len(board[0])

def dfs(r, c, index):
if index == len(word):
return True

if r < 0 or c < 0 or r >= rows or c >= cols or board[r][c] != word[index]:
return False

temp = board[r][c]
board[r][c] = '#'

found = (dfs(r + 1, c, index + 1) or
dfs(r - 1, c, index + 1) or
dfs(r, c + 1, index + 1) or
dfs(r, c - 1, index + 1))

board[r][c] = temp
return found

for i in range(rows):
for j in range(cols):
if board[i][j] == word[0] and dfs(i, j, 0):
return True

return False


Как это работает? 🤔

1️⃣ Основной цикл: Сначала мы просто ищем стартовую точку. Пробегаемся по всей матрице (i, j) и, как только находим ячейку, совпадающую с первой буквой слова (word[0]), запускаем оттуда рекурсивный поиск dfs.

2️⃣ Функция dfs(r, c, index):
- проверяет, не дошли ли мы до конца слова (index == len(word)). Если да — путь найден, возвращаем True.
- Затем идёт проверка на выход за границы поля или несоответствие буквы. Если условие выполняется, эта ветка поиска — тупиковая, возвращаем False.

3️⃣Backtracking:
- Чтобы не использовать одну и ту же ячейку дважды, мы временно "портим" её значение, заменяя на #. Это способ пометить ячейку как "посещённую" в рамках текущего пути.
- После этого рекурсивно запускаем dfs для всех четырёх соседей.
- И самое главное: после завершения рекурсивных вызовов мы восстанавливаем исходное значение ячейки (board[r][c] = temp). Этот шаг и есть backtracking. Он позволяет другим путям использовать эту ячейку в будущем.

⚙️ Анализ сложности
- Время: O(M * N * 4^L), где M и N — размеры матрицы, а L — длина слова. В худшем случае мы можем начать поиск из каждой из M * N ячеек, и для каждой буквы слова проверять до 4-х направлений.
- Память: O(L). Мы не используем дополнительную память (вроде множества visited), а глубина стека рекурсии в худшем случае равна длине слова.

#алгособес
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2🙏1
⚰️ ИИ вынес людей на главном турнире по программированию.

На прошедшем финале ICPC World Finals 2025 — это главная и самая престижная олимпиада по программированию для студентов — произошла тихая революция.

Пока все следили за командами, OpenAI и DeepMind в отдельном онлайн-треке тестировали свои последние модели на тех же задачах. Результаты такие:

🥇 OpenAI (GPT-5 + experimental model): решила все 12 из 12 задач. Безупречный результат, который принёс бы им чистое первое место.
🥈 Google DeepMind (Gemini 2.5 Deep Think): решила 10 из 12 задач. Это уровень золотой медали и второе место в общем зачёте.

А кто же тогда официальные чемпионы? Золото и первое место среди людей взяла команда СПбГУ, решив 11 из 12 задач. Наши парни оказались круче всех кожаных мешков на планете, но до идеального счёта OpenAI чуть-чуть не дотянули.

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


Пару месяцев назад эти же нейронки брали золото на Международной математической олимпиаде.

🤖
Please open Telegram to view this post
VIEW IN TELEGRAM
😢9❤‍🔥3🔥32👍211
💥 Alibaba показала, как надо делать AI-агентов. И выложила всё в опенсорс.

Подразделение Alibaba Tongyi Lab выкатило опенсорс не просто модель-агента, а целый завод по их производствуTongyi DeepResearch.

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

Большинство агентов сегодня работают по принципу ReAct (Мысль → Действие → Наблюдение). Весь контекст — удачные и неудачные шаги, найденная инфа, мусор — сваливается в одну кучу.
Рано или поздно модель тонет в своём контексте. Разработчики это назвали "когнитивным удушьем" и "шумовым загрязнением".

🧠 Что сделали в Alibaba? Придумали свой подход — IterResearch.
Вместо одного бесконечного потока мыслей агент работает короткими "исследовательскими раундами". В конце каждого раунда он "убирает со стола" 🧹 всё лишнее, оставляя только краткую сводку и план на следующий шаг. Это позволяет ему сохранять ясность мысли на протяжении решения очень длинных и запутанных задач.

Главный тезис команды: "Данные — это основной драйвер улучшения возможностей модели; их важность даже превосходит важность алгоритма". Для этого они построили целую машину по генерации синтетических данных нужной сложности.

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

Разобрал их архитектуру и подход подробнее в статье, читайте:
https://olegtalks.ru/tpost/rv7dibj091-tongyi-deepresearch-ai-agenta-ot-alibaba ◀️◀️

#годный_опенсорс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍221🆒1
Появился тут инструментик, который с 95% точностью (якобы) определяет, написан ли код человеком или сгенерирован ИИ. Работает на ML-модельке, натренированной на миллионах примеров.

В планах такие доп. фишки:
▪️ AI Code Ratio: Трекинг соотношения кода, написанного ИИ и человеком.
▪️ Defect rates: Мониторинг багов в коде, написанном ИИ.
▪️ PR Velocity: Анализ того, как использование ИИ влияет на продуктивность команды.

В целом: какая же это бесполезная хрень. Проблема ведь не в том, кто написал код — человек или машина. Проблема в том, что код — говно. И он может быть говном вне зависимости от автора. Не туда совсем смотреть надо.

Кстати, большую часть моего собственного кода он распознаёт, как с высокой вероятностью сгенерированный AI 🤣

Почекайте, какие у вас будут результаты 👇🏻
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍43
Великая война фреймворков: как "скучный" Django уделал "магический" Ruby on Rails ⚔️ ⚔️

В середине 2000-х веб-разработка была болью. И тут появился Ruby on Rails — и весь IT-мир встал на уши. 15-минутное видео, где с нуля создаётся блог, выглядело как настоящая магия.

А в это время в скучном Канзасе двое газетчиков пилили свой инструмент. Им нужен был не секси-стартап-тул, а надежная рабочая лошадка. Так родился Django. ⚙️

Столкнулись не только две технологии, но две разных философии. Листайте карточки, чтобы узнать, как из этой войны родился современный веб и почему победа досталась не тому, на кого все ставили.

#так_сложилось
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥742👏1🙏1
👨‍💻 Следующим Биллом Гейтсом станет 13-летний подросток. И он даже не учит синтаксис.

Это почти прямая цитата Александра Вана — самого молодого селф-мейд миллиардера в мире (в 24 года), который сейчас в свои 28 рулит одной из самых мощных AI-лабораторий в компании, которую нельзя называть. И этот парень советует нынешним подросткам забить на всё и заниматься только одним — "vibe coding".

Его главный тезис:
Буквально весь код, который я написал в своей жизни, будет заменен тем, что произведет модель ИИ.


Ванг называет это "радикализацией через ИИ-кодинг". Смысл уже не в том, чтобы выучить синтаксис очередного языка, а в том, чтобы набить 10 000 часов, "играя" с AI-инструментами и учась управлять ими лучше других. Он сравнивает это с зарей ПК-революции. Гейтсы и Цукерберги получили гигантское преимущество просто потому, что в детстве ковырялись с первыми компьютерами. Сейчас происходит ровно то же самое, только вместо паяльника — GPT.

Гендир Google же говорит, что у них ИИ уже генерит более 30% нового кода. Глава Klarna хвастается, что теперь тестирует идеи за 20 минут вместо недель работы инженеров.

Роль инженера меняется на глазах. Ценность смещается от написания кода к его постановке и интуитивному управлению генерацией 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👎2🔥1😢1🆒1
⚔️ 5 способов убрать дубли из списка в Python

Казалось бы, задача для первого курса. Но за каждым способом скрываются свои неочевидные недостатки:

1️⃣ set() — Самый быстрый способ потерять исходный порядок данных. Если он был важен — ты только что всё сломал.

2️⃣ for — Решение «в лоб». Работает, но на больших списках можешь идти заваривать чай. И кофе. И обед готовить. Сложность O(n²) не прощает.

3️⃣ numpy — Стрелять из гаубицы по комару. Тащить тяжеленную зависимость ради такой мелочи — дурной тон, если ты не работаешь с данными 24/7.

4️⃣ dict.fromkeys() — Пожалуй, золотая середина в современном Python. Быстро, лаконично, и главное — сохраняет порядок.

5️⃣ more-itertools — Выбор тех, кто знает, что для многих задач уже есть готовые, оптимизированные инструменты. Чистый и понятный код.

Может, знаете другой метод, который уделает все эти? 👇

#анатомия_питона
🔥133👍2🆒21🙏1