🎄 Advent of Code День 11: Плутонські камінці
Сьогоднішня задача здалася дуже простою — треба було просто застосувати правила трансформації чисел багато разів. Але в цьому і була пастка!
В першій частині треба зробити 25 ітерацій — і це працює швидко. Але в другій частині вже 75 ітерацій, і якщо використовувати той самий підхід — комп'ютер рахував би 12 днів!
🎯 Результати моделей
• O1-preview та O1-mini: успіх в обох частинах
• GPT-4o: впорався з обома частинами
• Claude 3.5 Sonnet: тільки перша частина
• Gemini 1206: тільки перша частина
• Claude Haiku та GPT-4o-mini: не впоралися
💡 В чому фішка?
Замість того, щоб постійно перераховувати одні й ті ж комбінації, можна їх запам'ятовувати (memoization):
def stone_count(k, n, memo):
if n == 0:
return 1
key = (k, n)
# Якщо вже рахували цю комбінацію — беремо готовий результат
if key in memo:
return memo[key]
# Інакше рахуємо і зберігаємо результат
stones = calculate_new_stones(k) # застосовуємо правила
total = sum(stone_count(s, n-1, memo) for s in stones)
memo[key] = total
return total
Я крайнє не раджу юзати GPT-4o для коду. Просто не треба, або помилки в синтаксисі, або в логіці. Claude РЕАЛЬНО набагато краще, якщо порівнювати великі модельки.
Але навіть в маленьких модельках:
Claude 3.5 Haiku: 50/50
GPT-4o-mini: 30/45 (більше фейлу)
Це я назву 🎄 Advent of Code Benchmark
Але треба буде написати ще код для того щоб це все повністю автоматично протестити і дати кожній модельці хочаб кілька спроб
Для чистоти експерименту, прогнав ще:
- o1 де було присутнє рішення від o1-mini, і навпаки
- GPT-4o по тим ж задачам, де був Claude 3.5 sonnet
Ось поки що виходить подібна картина.
🎄 Advent of Code День 9: Дефрагментація диску
Суть завдання:
В першій частині маємо карту диску у вигляді послідовності чисел, де чергуються розмір файлу та розмір вільного місця. Треба перемістити блоки файлів зліва направо (звідси і назва — фрагментація диску)
В другій частині треба переміщувати цілі файли, а не окремі блоки, починаючи з файлу з найбільшим ID. Файл можна перемістити тільки якщо є достатньо вільного місця зліва.
🎯 Результати дня
• GPT-4o-Mini та GPT-4o дали неправильні відповіді
• Claude 3.5 Sonnet відмінно впорався з частиною 1
• Claude 3.5 Haiku зміг доповнити рішення частини 1, для вирішення частини 2.
• o1-mini дав правильне, але повільніше рішення
⚡️ Матеріали
• 📹 Запис стріму
• 🧑💻 Код на GitHub
⏱️ Таймкоди:
- 0:43 — Розбір першої частини
- 10:37 — GPT-4o-Mini: помилка
- 12:00 — Claude 3.5 Haiku: неправильна відповідь
- 13:42 — GPT-4o не впорався
- 17:46 — Claude 3.5 Sonnet: успішне рішення!
- 18:33 — Розбір рішення
- 21:52 — Читаємо частину 2
- 26:15 — GPT-4o-Mini знову невдача
- 28:33 — Claude 3.5 Haiku несподівано впорався
- 32:00 — Підсумки
- 34:54 — o1-mini: правильно, але повільніше
Чесно кажучи, дуже здивований результатами від о1. Навіть більше — дуже розчарований, бо вона фейлить вже не перше завдання, хоча мала б бути найрозумнішою моделькою.
Claude 3.5 Sonnet - поки що найкраща для програмування, всім раджу.
🎄 Advent of Code День 5: Теорія графів на практиці
День почався з цікавої задачі про впорядкування сторінок.
Суть завдання:
В першій частині треба перевірити, чи правильно розташовані сторінки за правилами виду "X|Y"
(сторінка X має бути надрукована раніше за Y).
В другій частині вже треба не просто знайти неправильні послідовності, а й виправити їх. Тут знадобився потужний інструмент з теорії графів — топологічне сортування.
🎯 Результати моделей
• Частина 1: обидві (gpt-4o-mini, claude 3.5 haiku) моделі впоралися
• Частина 2: тільки Claude 3.5 Sonnet та GPT-4o змогли застосувати правильний алгоритм.
💻 Як працює топологічне сортування
# Створюємо граф залежностей між сторінками
graph = {}
for before, after in rules:
graph.setdefault(before, set()).add(after)
graph.setdefault(after, set())
# Рахуємо кількість "залежностей" для кожної сторінки
in_degree = {node: 0 for node in graph}
for node in graph:
for neighbor in graph[node]:
in_degree[neighbor] += 1
# Сортуємо: беремо сторінки без залежностей і йдемо далі
queue = [node for node in graph if in_degree[node] == 0]
result = []
while queue:
node = queue.pop(0)
result.append(node)
for neighbor in graph[node]:
in_degree[neighbor] -= 1
if in_degree[neighbor] == 0:
queue.append(neighbor)
🎄 Advent of Code День 4: AI vs пошук патернів
Сьогодні мали дуже цікаве завдання:
Частина 1:
• Знайти слово XMAS
у матриці літер
• Слово може бути написано в будь-якому напрямку (горизонтально, вертикально, діагонально)
• Потрібно знайти всі можливі входження слова
Частина 2:
• Шукаємо патерн X-MAS
: два MAS
у формі літери X
• MAS
можна читати як вперед, так і назад
• Задача виявилася несподівано складною для AI!
🤖 Результати 4-го дня
Несподівані результати:
• GPT-4o-Mini спочатку дав неповне рішення для ч.1, але після уточнення впорався
• Claude 3.5 Haiku успішно розв'язав частину 1
• Частину 2 не змогли розв'язати ні GPT-4o-mini, ні Haiku, ні Sonnet
• Тільки o1-mini зміг знайти правильне рішення для частини 2!
⚡️ Матеріали
• 📹 Запис стріму
• 🧑💻 Код на GitHub
⏱️ Таймкоди стріму:
- 0:41 — Читаємо умову частини 1
- 4:33 — GPT-4o-Mini розв'язує ч.1
- 8:49 — Claude 3.5 Haiku розв'язує ч.1
- 17:12 — Читаємо умову частини 2
- 18:34 — GPT-4o-Mini не впорався з ч.2
- 20:27 — Claude 3.5 Haiku не впорався
- 23:13 — Claude 3.5 Sonnet спроба 1 (невдало)
- 26:05 — Claude 3.5 Sonnet спроба 2 (невдало)
- 29:48 — o1-mini успішно розв'язує ч.2!
- 39:50 — Аналіз коду o1-mini
🎄 Advent of Code День 2: AI проти задачі Red-Nosed Reports
Продовжуємо серію експериментів з AI на Advent of Code 2024! Сьогодні задачі про "рівні реактора".
🤖 Результати 2-го дня
Обидві моделі написали робочий код з першої спроби
⚡️ Матеріали
• 📹 Запис стріму
• 🧑💻 Код на GitHub
⏱️ Таймкоди стріму:
- 2:11 — Розбираємо умову частини 1
- 11:09 — Спроба GPT-4o-Mini та аналіз коду
- 13:20 — Claude 3.5 Haiku розв'язує ч.1
- 14:57 — Читаємо умову частини 2
- 17:00 — GPT-4o-Mini працює над ч.2
- 18:50 — Рішення від Claude Haiku
o1-preview написав анімацію на Manim для візуалізації розташування наноботів по цьому завданню (частина 2)
Правда наноботів було 1000шт, а на візуалізації всього 100, бо дуже довго генерує анімацію.
А ось 2018 - 24й день, що написала o1-preview і зробила читабельніше Claude
Цілу гру написав, де сражаються клітини імунітету і інфекції
https://gist.github.com/Latand/fce73e96dcf33f6d632e8fd6061baf4b
🔥 Telegram запускає офіційну реферальну програму
Telegram додає можливість власникам ботів створювати офіційні партнерські програми.
📱 Як це працюватиме:
- Бот, що заробляє гроші, може включити партнерку
- Ви отримуєте реферальне посилання
- За кожного, хто прийде за вашим посиланням і заплатить — ви отримуєте відсоток від покупки
💰 Схема проста:
Хтось купує в боті за $100:
- Власник бота отримує свою частку
- Ви отримуєте % за те, що привели клієнта
🎄 Advent of Code День 10: Пошук стежок
Суть завдання:
В першій частині маємо топографічну карту висот (0-9). Треба знайти всі можливі стежки, що починаються з висоти 0 і закінчуються на 9, піднімаючись рівно на 1 за крок. Для кожної початкової точки рахуємо, до скількох "дев'яток" можна дійти.
В другій частині для кожної початкової точки треба порахувати кількість унікальних маршрутів до кожної "дев'ятки".
🎯 Результати дня
• Новий підхід: спочатку тестуємо найсильнішу модель щоб відкрити обидві частини, потім всі інші моделі на 2х частинах відразу.
• o1-preview відмінно впорався з обома частинами
• Claude Haiku заплутався в частинах завдання
• GPT-4o, Claude Sonnet, o1-mini та Gemini-exp-1206 також впоралися з обома частинами
• GPT-4o-mini розв'язав тільки першу частину
⚡️ Матеріали
• 📹 Запис стріму
• 🧑💻 Код на GitHub
Пізніше можна навіть це автоматизувати, прогнати ВСІ модельки по API по всіх задачах. Не уявляю скільки це буде коштувати, але дуже цікаво))
Читать полностью…Підбив результативність моделей (успішні vs неуспішні спроби)
Це поки що лише 9/25 днів, тому статистика пізніше буде більш репрезентативна.
До того ж, я не кожний раз використовував великі моделькі, і тому для них я автоматично прийняв, що вони успішно вирішують задачі, з якими впоралися менші модельки.
🎄 Advent of Code День 8: Антени та антивузли
Суть завдання:
В першій частині маємо карту з антенами різних частот (позначені літерами/цифрами). Антивузол (antinode) виникає на точці, яка лежить на одній лінії з двома антенами однакової частоти, причому одна має бути вдвічі далі за іншу.
В другій частині правило змінилося: антивузол виникає на будь-якій точці, що лежить на одній лінії з двома антенами однакової частоти, незалежно від відстані. Тобто антивузли починають повторюватися з однаковими дистанціями.
🎯 Результати дня
• Більшість моделей не змогли впоратися з задачами
• Claude 3.5 Sonnet несподівано не зміг розв'язати
• o1-mini єдиний впорався з обома частинами
• В кінці спробували візуалізувати рішення
⚡️ Матеріали
• 📹 Запис стріму
• 🧑💻 Код на GitHub
🎄 Advent of Code День 7: Калібрування мосту
Суть завдання:
В першій частині маємо рівняння з числами, між якими треба розставити оператори +
та *
. Важливо: обчислення йде зліва направо, без пріоритету операцій.
В другій додався оператор конкатенації ||
(наприклад, 12 || 345 = 12345
). Треба знайти всі можливі комбінації операторів для кожного рівняння.
🎯 Несподівані результати
• GPT-4o-Mini забув імпорт в першій частині
• Claude 3.5 Haiku відмінно впорався з частиною 1
• GPT-4o-Mini несподівано добре розв'язав частину 2
• O1, незважаючи на потужність, не зміг повністю розв'язати частину 2
• Claude 3.5 Sonnet дав правильне, хоч і не оптимізоване рішення (якщо це взагалі можливо оптимізувати)
⚡️ Матеріали
• 📹 Запис стріму
• 🧑💻 Код на GitHub
⏱️ Таймкоди:
- 1:10 — Розбір першої частини
- 6:30 — GPT-4o-Mini: майже правильно
- 8:49 — Claude Haiku: успішне рішення
- 12:45 — Розбір умови частини 2
- 16:58 — GPT-4o-Mini справляється
- 22:37 — Claude 3.5 Sonnet: правильно, але не оптимально
- 27:03 — о1: невдала спроба (з оптимізацією)
- 31:11 — о1: друга спроба, теж невдало
🎄 Advent of Code День 6: Стежимо за охоронцем
Суть завдання:
В першій частині треба симулювати рух охоронця за простими правилами: якщо попереду перешкода (#
)— поворот праворуч, якщо ні — крок вперед. Потрібно порахувати всі унікальні позиції до того, як охоронець покине карту.
В другій частині треба знайти всі можливі місця де можна поставити перешкоду, які змусять охоронця ходити по колу.
🤖 Цікаві результати
Частина 1:
• Більшість моделей застрягли у безкінечних циклах через різні причини. Вони чомусь порахували, що якщо кінець мапи - охоронець має повертати, хоча в завданні чітко сказано що він може покинути мапу.
• Claude 3.5 Sonnet написав робочий код з першої спроби
• O1 впорався лише з 4-ї спроби, але код вийшов заплутаним
Частина 2:
• Тільки Claude 3.5 Sonnet та O1 змогли розв'язати
• O1 показав значно швидше рішення (22 секунди проти 99)
⚡️ Матеріали
• 📹 Запис стріму
• 🧑💻 Код на GitHub
⏱️ Таймкоди:
- 2:26 — Розбір першої частини
- 8:09 — GPT-4o-Mini застряг у циклі
- 13:30 — Claude Haiku: код вже кращий, але не працює), також спроби інших моделей
- 37:35 — Claude Sonnet: успіх з першої спроби!
- 39:42 — Розбір умов частини 2
- 54:50 — Claude Sonnet розв'язує за 99 секунд
- 1:04:20 — O1 знаходить швидше рішення
Affiliate Programs and Bot API 8.1
Starting today, Bot and Mini App developers can launch their own Affiliate Programs, and specify how much of their future ⭐️ Star revenue from referred users they are willing to share with those who invited them.
It only takes a few taps to set up an Affiliate Program — you can find out more in our dedicated guide.
With Bot API 8.1, all bots can also detect commissions and affiliate transactions out of the box, see the full changelog for details.
⚠️ Warning: As of December 1 2024, messages with video posted in big communities can be delayed by the server until the respective video is reencoded. Read more here.
🎄 Advent of Code День 3: AI vs парсинг
Сьогодні мали цікаве завдання:
Частина 1:
• Знайти в зіпсованій пам'яті коректні інструкції множення mul(X,Y)
• Проігнорувати всі некоректні варіанти (наприклад, mul(4*
або mul[3,7]
)
• Просумувати результати всіх коректних множень
Частина 2:
• Додалися інструкції do()
та don't()
, які вмикають/вимикають наступні множення
• Враховувати лише множення, які "активні" на момент їх знаходження, і так само — просумувати
🤖 Результати 3-го дня
Сьогодні моделі показали різні результати:
• GPT-4o-Mini впорався з частиною 1, але не зміг з частиною 2
• Claude 3.5 Haiku несподівано не впорався з парсингом у частині 1, але блискуче розв'язав частину 2
💡 Цікаві спостереження
Здається, що цей день виявився набагато складнішою для AI, ніж попередні дні. Основна складність — правильний парсинг та обробка умов. Але нагадую, що зараз ми тестуємо найменші модельки з найрозумніших. В більш складних задачах ми будемо використовувати топові модельки.
⚡️ Матеріали
• 📹 Запис стріму
• 🧑💻 Код на GitHub
⏱️ Таймкоди стріму:
- 0:47 — Читаємо умову частини 1
- 3:54 — GPT-4o-Mini успішно розв'язує ч.1
- 6:18 — Claude 3.5 Haiku не впорався з ч.1
- 9:37 — Розбираємо умову частини 2
- 11:20 — GPT-4o-Mini не впорався з ч.2
- 13:10 — Claude 3.5 Haiku успішно вирішує ч.2
- 15:26 — Claude 3.5 Sonnet (теж успішно, але рішення інше)
🎄 Advent of Code День 1: AI + Cursor в дії
Завершив перший стрім з серії "AI vs Advent of Code 2024"! Якщо ви пропустили — не біда, ділюся всіма матеріалами.
🎯 Що тестували
Перший день приніс цікаві результати:
• Claude Haiku відмінно впорався із завданням
• GPT-4 Mini спочатку мав труднощі
• Обидві моделі успішно розв'язали другу частину
🔧 Cursor і його можливості
На стрімі я демонстрував роботу з новим агентним інструментом у Cursor. Особливо корисною виявилася його здатність аналізувати результати виконання команд і автоматично пропонувати наступні кроки.
⚡️ Де знайти матеріали
Для всіх, хто хоче детальніше вивчити процес:
• 📹 Запис стріму
• 🧑💻 Код на GitHub
⏱️ Таймкоди стріму Advent of Code:
- 7:27 — Читаємо умову першого дня AOC
- 15:03 — Знайомство з Cursor Composer, створення структури
- 22:17 — Пробуємо розв'язати частину 1 з GPT-4o-Mini (не вийшло)
- 27:07 — Claude Haiku успішно вирішує ч.1
- 30:00 — Розбираємо умову другої частини
- 33:52 — Спроба GPT-4o-Mini на ч.2
- 36:45 — Тестуємо Claude 3.5 Haiku на ч.2
Буду радий вашим коментарям та враженням від експерименту! Які моделі хотіли б побачити в наступних днях? 🤔
А ще, використовуючи бібліотеку Manim - можна анімувати і візуалізувати подібні речі.
Її створив 3Blue1Brown, автор ютуб каналу і просто дуже розумна людина. Демка:
https://youtu.be/rbu7Zu5X1zI?si=Aul05Lss3a4aiIhz
Тобто, власники ботів діляться прибутком з покупок з тими, хто просуває їх ботів
Можна встановити % і тривалість
Хай навіть 50% економії на мої 32г в тиждень - це я б заробляв в 2 рази менше без нього. Але реальну економію треба заміряти, і це буде боляче.
Програмувати без ШІ - це як сидіти без інтернету і намагатись знайти якусь інформацію по книжках.
🎯 Cursor 0.43: Що нового?
В світ вийшла нова версія Cursor 0.43, що суттєво розширює можливості IDE для роботи з AI. Не розумію чому власники курсору мені ще не платять, я б знижки роздавати міг 😅
Composer тепер працює в боковій панелі та отримав інтегрований перегляд diff-ів. AI-агент навчився самостійно використовувати термінал і автоматично створювати commit-повідомлення для ваших змін у Git.
💻 Покращений досвід взаємодії
File pill рекомендації тепер доступні прямо в chat/composer вікні. Додано @Recommended
для семантичного пошуку по контексту, що значно спрощує навігацію по коду. Також покращено інтерфейс для drag-and-drop зображень.
⚡️ Потужність ⬆️
• Оптимізовано швидкодію IDE
• У Beta-тестуванні — новий bug finder
• Покращено роботу з великими файлами
Оновлення розгортається поступово, тож певні функції можуть бути ще недоступні.
🎬 *Demo нових можливостей дивіться у відео нижче*
https://youtu.be/SG2I93I1pY4