Чекер OWLTO
https://claim.owlto.finance/
Чат | Support | Market
Pelican | HiddenCode [EN]
📟 Прилетело из @hidden_coding
https://claim.owlto.finance/
Чат | Support | Market
Pelican | HiddenCode [EN]
📟 Прилетело из @hidden_coding
Если кто-то еще ждет дропа от трояна, рекомендую поставить трекеры на этот кош - J4Fa7LMUsVZQAcczPeH7chtU3ZzWufFtADKUrepMGwFu
С него в основном фандился кошелек для раздачи, мб поменяют
Также можете последить за этим кошельком - 4U4cAx8vwYKTXZqzggTyW6ZgAE61d26ZSz72kmqtJhGq
Этим фандился первый кош
📟 Прилетело из @dolbaebskicode
С него в основном фандился кошелек для раздачи, мб поменяют
Также можете последить за этим кошельком - 4U4cAx8vwYKTXZqzggTyW6ZgAE61d26ZSz72kmqtJhGq
Этим фандился первый кош
📟 Прилетело из @dolbaebskicode
Это один из самых смартовых каналов на рынке
Читаю Флаву уже больше полугода и регулярно нахожу полезную информацию по крипте, стиму. Плюс много мыслей о жизни и мышлении. Ну и, конечно, он постоянно на пассиве лутает с этих ниш вполне приличные суммы.
Без воды разборы ниш, идеи и подходы, которые реально можно применять и зарабатывать на этом. Если вам интересна не только лудка канал точно зайдёт)
https://t.iss.one/+UifWe9e9v7xkNGQy
#реклама
📟 Прилетело из @hidden_coding
Читаю Флаву уже больше полугода и регулярно нахожу полезную информацию по крипте, стиму. Плюс много мыслей о жизни и мышлении. Ну и, конечно, он постоянно на пассиве лутает с этих ниш вполне приличные суммы.
Без воды разборы ниш, идеи и подходы, которые реально можно применять и зарабатывать на этом. Если вам интересна не только лудка канал точно зайдёт)
https://t.iss.one/+UifWe9e9v7xkNGQy
#реклама
📟 Прилетело из @hidden_coding
astrum.labs | 🌟 BaseApp
Сделали полную отработку приложения BaseApp. По названию понятно что крышей являются сами Base. Фишка приложения в постоянных раздачах стейблов за различные действия внутри него (инвайты, создание контента). Софт имитирует работу телефона, за счет чего аккаунты получаются неотличимыми от ваших родных айфонов. В общем лучшая активность с расчетом под дроп Base
Функционал модуля:
🟣 Обход антифрода (бесплатные транзакции).
Благодаря имитации работы с телефона, софтовые аккаунты получают высокий скор от антифрод системы и приложение BaseApp платит за все внутренние транзакции самостоятельно
🟢 Создание аккаунтов по Email/PrivateKey
🟢 Полный онборд аккаунта (BaseName,Farcaster)
🟢 Поддержка Claude/GPT/Nous для генерации текстов
🟢 Создание постов c Zora койнами
🟢 Создание обычных постов
🟢 Лайки/репосты/комменты постов
🟢 Покупка/продажа запущенных койнов
🟢 Фарм подписок
Roadmap:
🟠 Подвязка старого Farcaster профиля
🟠 Реализация mini-dapps внутри приложения
Доступ к модулю можно получить став членом astrum.labs
———>BUY MEMBERSHIP<———
———>BUY MEMBERSHIP<———
———>BUY MEMBERSHIP<———
Также немного инфы из сообщества для желающих поворкать после праздников:
🟢 23 января дедлайн для отработки 1 сезона MetaMask, софт делает 1000 поинтов за 3.1$
🟢 Polymarket и Opinion продолжают фармить стейблы, в комментах отчет одного из мемберов за последнюю неделю
🟢 На подходе модуль по TruthTensor, метовый фри актив
Братья, итоги года не успел сделать, а щас уже как-то не очень дропать после НГ. На следующий новый год сделаю сразу за два года. В целом хочу сказать, что я очень вырос как кодер и планирую направить свои силы в этом году в несколько интересных для меня вещей. Весь мой прогресс буду дропать в @askaerlogs. На последок напомню, чтобы вы не забыли то, что обещали себе в прошлом году.
foundation | astrum.labs | astrum.solver
📟 Прилетело из @askaer
Полноценное мобильное приложение внутри софта
Сделали полную отработку приложения BaseApp. По названию понятно что крышей являются сами Base. Фишка приложения в постоянных раздачах стейблов за различные действия внутри него (инвайты, создание контента). Софт имитирует работу телефона, за счет чего аккаунты получаются неотличимыми от ваших родных айфонов. В общем лучшая активность с расчетом под дроп Base
Функционал модуля:
Благодаря имитации работы с телефона, софтовые аккаунты получают высокий скор от антифрод системы и приложение BaseApp платит за все внутренние транзакции самостоятельно
Roadmap:
Доступ к модулю можно получить став членом astrum.labs
———>BUY MEMBERSHIP<———
———>BUY MEMBERSHIP<———
———>BUY MEMBERSHIP<———
Также немного инфы из сообщества для желающих поворкать после праздников:
Братья, итоги года не успел сделать, а щас уже как-то не очень дропать после НГ. На следующий новый год сделаю сразу за два года. В целом хочу сказать, что я очень вырос как кодер и планирую направить свои силы в этом году в несколько интересных для меня вещей. Весь мой прогресс буду дропать в @askaerlogs. На последок напомню, чтобы вы не забыли то, что обещали себе в прошлом году.
foundation | astrum.labs | astrum.solver
📟 Прилетело из @askaer
Please open Telegram to view this post
VIEW IN TELEGRAM
#Polymarket #OxygenDelta #обновления
Залили пачку полезных обновлений в нашу таблицу для предикшен маркетов. Теперь мониторить спреды и собирать арбитраж стало заметно удобнее.
👀 Что нового
— Добавили отображение объемов на Predict.Fun
— Появилась сортировка по объёму для каждой площадки
— Редактирование ордера: двойной клик по цене YES/NO, чтобы поставить свои значения (быстрые расчеты под лимитки)
— Подключили новую площадку: Probable
— Можно включать/выключать площадки в списке маркетов (оставляете только то, где торгуете)
✍️ Советы по работе
1. Смотрите на Last Update.
Это индикатор, когда таблица реально получила свежие данные.
Auto-refresh показывает, когда мы отправляем запросы, но площадки иногда отвечают с задержкой или обновляют данные не сразу. Ориентируйтесь на минуты/секунды в Last Update.
2. Если одна лимитка не заполнилась, а цена уехала - пересчитайте усреднение.
Бывает так: на одной площадке ордер уже исполнился, на другой ещё висит, а спред стал даже лучше. В этом случае можно докупить там, где исполнилось, и взять вторую сторону маркетом на другой площадке. Иногда это даже улучшает итоговую доходность.
3. Не забывайте про Polymarket rewards.
На Polymarket начисляют USDC за лимитки в стакане. В разных маркетах суммы разные, но если крутите крупные ордера периодически проверяйте вкладку Rewards, там может неплохо насыпать просто за то, что держите лимитки.
https://oxygendelta.com
https://oxygendelta.com
https://oxygendelta.com
За сутки на сайт зашло более 1500 человек, мы считаем это отличным результатом. Сейчас работаем над новым дизайном и функциями для еще большего удобства.
📟 Прилетело из @oxygen_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
Алгоритмы. Рекурсия
По предыдущему посту я понял, чтобы объяснить более менее детально какую-либо тему, приходится расписывать все куда детальнее, чем во многих гайдах и обзорах. Поэтому посты по алгоритмам будут большие, но оно того стоит. Сегодня мы поговорим о рекурсии простым языком.
Понятие рекурсии можно представить как образ из мира зеркал: когда одно зеркало отражается в другом, и это отражение, в свою очередь, находит своё отражение, создавая уходящую в бесконечность череду образов. В программировании рекурсия действует схожим образом — это техника, при которой функция для решения задачи вызывает сама себя. Хотя идея может показаться необычной, при правильном применении она становится мощным и элегантным инструментом.
Для корректной работы любой рекурсивной функции необходимы два фундаментальных компонента. Во-первых, это базовый случай — условие остановки, которое предотвращает бесконечный цикл вызовов. Его можно сравнить с последней ступенькой лестницы: достигнув её, вы прекращаете движение. Во-вторых, требуется рекурсивный шаг — вызов функцией самой себя, но с изменёнными входными данными, которые должны гарантированно приближать выполнение к базовому случаю. Это подобно каждому следующему шагу вниз по лестнице, который сокращает оставшееся до низа расстояние.
Рассмотрим простейшую иллюстрацию — функцию обратного отсчёта от заданного числа до единицы. Её логика наглядно демонстрирует оба принципа.
Вывод этой программы будет последовательным:
Внутри этого процесса происходит следующее: вызов
Классическим примером, раскрывающим суть рекурсивного мышления, является вычисление факториала числа n, обозначаемого как n!. По определению, факториал — это произведение всех натуральных чисел от 1 до n, при этом 0! и 1! равны 1 (вообще не так чтобы равны, посто принято такое равенство для удобства расчетов). Ключевое наблюдение здесь — рекурсивная природа операции: факториал любого числа n можно выразить через факториал меньшего числа, а именно n! = n * (n-1)!. Это и становится основой для алгоритма.
# Стек вызовов для factorial(3):
Пошаговое выполнение функции для
Эта же логика применима ко множеству других задач. Например, для вычисления суммы всех чисел от 1 до n.
Аналогично работает возведение числа в натуральную степень.
📟 Прилетело из @solidityset
По предыдущему посту я понял, чтобы объяснить более менее детально какую-либо тему, приходится расписывать все куда детальнее, чем во многих гайдах и обзорах. Поэтому посты по алгоритмам будут большие, но оно того стоит. Сегодня мы поговорим о рекурсии простым языком.
Понятие рекурсии можно представить как образ из мира зеркал: когда одно зеркало отражается в другом, и это отражение, в свою очередь, находит своё отражение, создавая уходящую в бесконечность череду образов. В программировании рекурсия действует схожим образом — это техника, при которой функция для решения задачи вызывает сама себя. Хотя идея может показаться необычной, при правильном применении она становится мощным и элегантным инструментом.
Для корректной работы любой рекурсивной функции необходимы два фундаментальных компонента. Во-первых, это базовый случай — условие остановки, которое предотвращает бесконечный цикл вызовов. Его можно сравнить с последней ступенькой лестницы: достигнув её, вы прекращаете движение. Во-вторых, требуется рекурсивный шаг — вызов функцией самой себя, но с изменёнными входными данными, которые должны гарантированно приближать выполнение к базовому случаю. Это подобно каждому следующему шагу вниз по лестнице, который сокращает оставшееся до низа расстояние.
Рассмотрим простейшую иллюстрацию — функцию обратного отсчёта от заданного числа до единицы. Её логика наглядно демонстрирует оба принципа.
def count_down(n):
# Базовый случай: когда достигли 0, останавливаемся
if n == 0:
print("Готово!")
return
# Выводим текущее число
print(n)
# Рекурсивный шаг: вызываем функцию с n-1
count_down(n - 1)
count_down(5)
Вывод этой программы будет последовательным:
5
4
3
2
1
Готово!
Внутри этого процесса происходит следующее: вызов
count_down(5) приводит к выводу числа 5 и новому вызову count_down(4). Этот процесс вкладывается, подобно матрёшкам, пока вызов count_down(0) не достигнет базового случая, выведет "Готово!" и не начнёт возвращать управление обратно по цепочке предыдущих вызовов.Классическим примером, раскрывающим суть рекурсивного мышления, является вычисление факториала числа n, обозначаемого как n!. По определению, факториал — это произведение всех натуральных чисел от 1 до n, при этом 0! и 1! равны 1 (вообще не так чтобы равны, посто принято такое равенство для удобства расчетов). Ключевое наблюдение здесь — рекурсивная природа операции: факториал любого числа n можно выразить через факториал меньшего числа, а именно n! = n * (n-1)!. Это и становится основой для алгоритма.
def factorial(n):
# Базовый случай
if n == 0 or n == 1:
return 1
# Рекурсивный шаг
return n * factorial(n - 1)
print(factorial(5)) # 120
# Для значения 3
factorial(3)
│
├─ factorial(2) ← добавляется в стек
│ │
│ ├─ factorial(1) ← добавляется в стек
│ │ └─ возвращает 1 ← снимается со стека
│ │
│ └─ возвращает 2 ← снимается со стека
│
└─ возвращает 6 ← снимается со стека
# Стек вызовов для factorial(3):
Шаг 1: [factorial(3)]
Шаг 2: [factorial(3), factorial(2)]
Шаг 3: [factorial(3), factorial(2), factorial(1)]
Шаг 4: [factorial(3), factorial(2)] ← factorial(1) вернул результат
Шаг 5: [factorial(3)] ← factorial(2) вернул результат
Шаг 6: [] ← factorial(3) вернул результат
Пошаговое выполнение функции для
factorial(5) раскладывается в цепочку отложенных умножений: 5 * factorial(4), затем 5 * (4 * factorial(3)), и так далее, пока вычисление не дойдёт до базового случая factorial(1), который возвращает 1. После этого цепочка начинает сворачиваться, производя последовательные умножения: 2 * 1 = 2, 3 * 2 = 6, 4 * 6 = 24 и, наконец, 5 * 24 = 120.Эта же логика применима ко множеству других задач. Например, для вычисления суммы всех чисел от 1 до n.
def sum_numbers(n):
# Базовый случай
if n == 0:
return 0
# Рекурсивный шаг
return n + sum_numbers(n - 1)
print(sum_numbers(5)) # 15 (5+4+3+2+1)
Аналогично работает возведение числа в натуральную степень.
📟 Прилетело из @solidityset
def power(base, exponent):
# Базовый случай
if exponent == 0:
return 1
# Рекурсивный шаг
return base * power(base, exponent - 1)
print(power(2, 3)) # 8 (2 * 2 * 2)
Или определение длины строки без использования встроенных функций.
def string_length(s):
# Базовый случай: пустая строка
if s == "":
return 0
# Рекурсивный шаг: убираем первый символ и считаем остаток
return 1 + string_length(s[1:])
print(string_length("hello")) # 5
Работу рекурсивных вызовов удобно визуализировать в виде дерева, где каждый новый вызов порождает ветви, ведущие к базовым случаям, после чего результаты начинают подниматься вверх, к корневому вызову.
Механизм, обеспечивающий возможность таких вложенных вызовов, называется стеком вызовов. Это специальная область памяти, организованная по принципу LIFO ("последним пришёл — первым ушёл"), подобно стопке тарелок. Каждый новый вызов функции помещает в стек свой контекст (аргументы, локальные переменные, место возврата). Когда функция завершает работу, её контекст извлекается из вершины стека, и выполнение продолжается с предыдущего вызова. При глубокой рекурсии стек может исчерпать свой лимит, что приводит к ошибке переполнения стека. Каждый рекурсивный вызов занимает память, поэтому важно, чтобы алгоритм гарантированно сходился к базовому случаю.
Рассмотрим практический вопрос: как написать рекурсивную функцию для вычисления n-го числа Фибоначчи? Последовательность Фибоначчи задаётся правилами: F(0) = 0, F(1) = 1, а для n > 1 каждое число равно сумме двух предыдущих: F(n) = F(n-1) + F(n-2). Это определение напрямую ложится на рекурсивный алгоритм.
def fibonacci(n):
# Базовые случаи
if n == 0:
return 0
if n == 1:
return 1
# Рекурсивный шаг
return fibonacci(n - 1) + fibonacci(n - 2)
# Примеры
print(fibonacci(0)) # 0
print(fibonacci(1)) # 1
print(fibonacci(5)) # 5
print(fibonacci(10)) # 55
**Почему так медленно?**
Посмотрим на дерево вызовов для fibonacci(5):
fib(5)
/ \
fib(4) fib(3)
/ \ / \
fib(3) fib(2) fib(2) fib(1)
/ \ / \ / \
fib(2) fib(1) fib(1) fib(0) fib(1) fib(0)
/ \
fib(1) fib(0)
Однако у этой наивной реализации есть серьёзный недостаток — экспоненциальная временная сложность O(2^n). Это происходит из-за колоссального количества повторных вычислений одних и тех же значений, что хорошо видно на дереве вызовов для `fibonacci(5)`, где, например, `fibonacci(3)` вычисляется несколько раз. Для оптимизации применяют технику мемоизации — сохранения результатов предыдущих вычислений в кеше (словаре), чтобы не считать их заново.
```python
def fibonacci_memo(n, memo={}):
# Если уже вычисляли, берем из кеша
if n in memo:
return memo[n]
# Базовые случаи
if n == 0:
return 0
if n == 1:
return 1
# Вычисляем и сохраняем результат
memo[n] = fibonacci_memo(n - 1, memo) + fibonacci_memo(n - 2, memo)
return memo[n]
print(fibonacci_memo(50)) # Работает быстро!
С мемоизацией сложность снижается до линейной O(n), поскольку каждое значение вычисляется только один раз.
Это подводит к обсуждению недостатков рекурсивного подхода в сравнении с итеративным (циклы). Главные минусы рекурсии — повышенный расход памяти из-за использования стека вызовов, риск его переполнения при большой глубине, более низкая скорость из-за накладных расходов на вызов функции, а также потенциальная сложность отладки. Итеративные решения обычно более эффективны по памяти и быстродействию для задач, которые можно просто выразить через циклы. Например, вычисление факториала с помощью цикла не требует хранения цепочки вызовов в стеке.
📟 Прилетело из @solidityset
Тем не менее, рекурсия остаётся незаменимым инструментом для задач, имеющих естественную рекурсивную структуру данных или логики. Она идеально подходит для обхода древовидных структур (каталогов файловой системы), реализации алгоритмов "разделяй и властвуй" (быстрая сортировка, бинарный поиск) и решения таких задач, как Ханойские башни. Выбор между рекурсией и итерацией часто является компромиссом между читаемостью, простотой выражения идеи алгоритма и требованиями к производительности и ресурсам.
#algorithm
📟 Прилетело из @solidityset
#algorithm
📟 Прилетело из @solidityset
Алгоритмы. Рекурсия
По предыдущему посту я понял, чтобы объяснить более менее детально какую-либо тему, приходится расписывать все куда детальнее, чем во многих гайдах и обзорах. Поэтому посты по алгоритмам будут большие, но оно того стоит. Сегодня мы поговорим о рекурсии простым языком.
Понятие рекурсии можно представить как образ из мира зеркал: когда одно зеркало отражается в другом, и это отражение, в свою очередь, находит своё отражение, создавая уходящую в бесконечность череду образов. В программировании рекурсия действует схожим образом — это техника, при которой функция для решения задачи вызывает сама себя. Хотя идея может показаться необычной, при правильном применении она становится мощным и элегантным инструментом.
Для корректной работы любой рекурсивной функции необходимы два фундаментальных компонента. Во-первых, это базовый случай — условие остановки, которое предотвращает бесконечный цикл вызовов. Его можно сравнить с последней ступенькой лестницы: достигнув её, вы прекращаете движение. Во-вторых, требуется рекурсивный шаг — вызов функцией самой себя, но с изменёнными входными данными, которые должны гарантированно приближать выполнение к базовому случаю. Это подобно каждому следующему шагу вниз по лестнице, который сокращает оставшееся до низа расстояние.
Рассмотрим простейшую иллюстрацию — функцию обратного отсчёта от заданного числа до единицы. Её логика наглядно демонстрирует оба принципа.
Вывод этой программы будет последовательным:
Внутри этого процесса происходит следующее: вызов
Классическим примером, раскрывающим суть рекурсивного мышления, является вычисление факториала числа n, обозначаемого как n!. По определению, факториал — это произведение всех натуральных чисел от 1 до n, при этом 0! и 1! равны 1 (вообще не так чтобы равны, просто принято такое равенство для удобства расчетов). Ключевое наблюдение здесь — рекурсивная природа операции: факториал любого числа n можно выразить через факториал меньшего числа, а именно n! = n * (n-1)!. Это и становится основой для алгоритма.
Пошаговое выполнение функции для
Эта же логика применима ко множеству других задач. Например, для вычисления суммы всех чисел от 1 до n.
Аналогично работает возведение числа в натуральную степень.
📟 Прилетело из @solidityset
По предыдущему посту я понял, чтобы объяснить более менее детально какую-либо тему, приходится расписывать все куда детальнее, чем во многих гайдах и обзорах. Поэтому посты по алгоритмам будут большие, но оно того стоит. Сегодня мы поговорим о рекурсии простым языком.
Понятие рекурсии можно представить как образ из мира зеркал: когда одно зеркало отражается в другом, и это отражение, в свою очередь, находит своё отражение, создавая уходящую в бесконечность череду образов. В программировании рекурсия действует схожим образом — это техника, при которой функция для решения задачи вызывает сама себя. Хотя идея может показаться необычной, при правильном применении она становится мощным и элегантным инструментом.
Для корректной работы любой рекурсивной функции необходимы два фундаментальных компонента. Во-первых, это базовый случай — условие остановки, которое предотвращает бесконечный цикл вызовов. Его можно сравнить с последней ступенькой лестницы: достигнув её, вы прекращаете движение. Во-вторых, требуется рекурсивный шаг — вызов функцией самой себя, но с изменёнными входными данными, которые должны гарантированно приближать выполнение к базовому случаю. Это подобно каждому следующему шагу вниз по лестнице, который сокращает оставшееся до низа расстояние.
Рассмотрим простейшую иллюстрацию — функцию обратного отсчёта от заданного числа до единицы. Её логика наглядно демонстрирует оба принципа.
def count_down(n):
# Базовый случай: когда достигли 0, останавливаемся
if n == 0:
print("Готово!")
return
# Выводим текущее число
print(n)
# Рекурсивный шаг: вызываем функцию с n-1
count_down(n - 1)
count_down(5)
Вывод этой программы будет последовательным:
5
4
3
2
1
Готово!
Внутри этого процесса происходит следующее: вызов
count_down(5) приводит к выводу числа 5 и новому вызову count_down(4). Этот процесс вкладывается, подобно матрёшкам, пока вызов count_down(0) не достигнет базового случая, выведет "Готово!" и не начнёт возвращать управление обратно по цепочке предыдущих вызовов.Классическим примером, раскрывающим суть рекурсивного мышления, является вычисление факториала числа n, обозначаемого как n!. По определению, факториал — это произведение всех натуральных чисел от 1 до n, при этом 0! и 1! равны 1 (вообще не так чтобы равны, просто принято такое равенство для удобства расчетов). Ключевое наблюдение здесь — рекурсивная природа операции: факториал любого числа n можно выразить через факториал меньшего числа, а именно n! = n * (n-1)!. Это и становится основой для алгоритма.
def factorial(n):
# Базовый случай
if n == 0 or n == 1:
return 1
# Рекурсивный шаг
return n * factorial(n - 1)
print(factorial(5)) # 120
# Для значения 3
factorial(3)
│
├─ factorial(2) ← добавляется в стек
│ │
│ ├─ factorial(1) ← добавляется в стек
│ │ └─ возвращает 1 ← снимается со стека
│ │
│ └─ возвращает 2 ← снимается со стека
│
└─ возвращает 6 ← снимается со стека
# Стек вызовов для factorial(3):
Шаг 1: [factorial(3)]
Шаг 2: [factorial(3), factorial(2)]
Шаг 3: [factorial(3), factorial(2), factorial(1)]
Шаг 4: [factorial(3), factorial(2)] ← factorial(1) вернул результат
Шаг 5: [factorial(3)] ← factorial(2) вернул результат
Шаг 6: [] ← factorial(3) вернул результат
Пошаговое выполнение функции для
factorial(5) раскладывается в цепочку отложенных умножений: 5 * factorial(4), затем 5 * (4 * factorial(3)), и так далее, пока вычисление не дойдёт до базового случая factorial(1), который возвращает 1. После этого цепочка начинает сворачиваться, производя последовательные умножения: 2 * 1 = 2, 3 * 2 = 6, 4 * 6 = 24 и, наконец, 5 * 24 = 120.Эта же логика применима ко множеству других задач. Например, для вычисления суммы всех чисел от 1 до n.
def sum_numbers(n):
# Базовый случай
if n == 0:
return 0
# Рекурсивный шаг
return n + sum_numbers(n - 1)
print(sum_numbers(5)) # 15 (5+4+3+2+1)
Аналогично работает возведение числа в натуральную степень.
📟 Прилетело из @solidityset
def power(base, exponent):
# Базовый случай
if exponent == 0:
return 1
# Рекурсивный шаг
return base * power(base, exponent - 1)
print(power(2, 3)) # 8 (2 * 2 * 2)
Или определение длины строки без использования встроенных функций.
def string_length(s):
# Базовый случай: пустая строка
if s == "":
return 0
# Рекурсивный шаг: убираем первый символ и считаем остаток
return 1 + string_length(s[1:])
print(string_length("hello")) # 5
Работу рекурсивных вызовов удобно визуализировать в виде дерева, где каждый новый вызов порождает ветви, ведущие к базовым случаям, после чего результаты начинают подниматься вверх, к корневому вызову.
Механизм, обеспечивающий возможность таких вложенных вызовов, называется стеком вызовов. Это специальная область памяти, организованная по принципу LIFO ("последним пришёл — первым ушёл"), подобно стопке тарелок. Каждый новый вызов функции помещает в стек свой контекст (аргументы, локальные переменные, место возврата). Когда функция завершает работу, её контекст извлекается из вершины стека, и выполнение продолжается с предыдущего вызова. При глубокой рекурсии стек может исчерпать свой лимит, что приводит к ошибке переполнения стека. Каждый рекурсивный вызов занимает память, поэтому важно, чтобы алгоритм гарантированно сходился к базовому случаю.
Рассмотрим практический вопрос: как написать рекурсивную функцию для вычисления n-го числа Фибоначчи? Последовательность Фибоначчи задаётся правилами: F(0) = 0, F(1) = 1, а для n > 1 каждое число равно сумме двух предыдущих: F(n) = F(n-1) + F(n-2). Это определение напрямую ложится на рекурсивный алгоритм.
def fibonacci(n):
# Базовые случаи
if n == 0:
return 0
if n == 1:
return 1
# Рекурсивный шаг
return fibonacci(n - 1) + fibonacci(n - 2)
# Примеры
print(fibonacci(0)) # 0
print(fibonacci(1)) # 1
print(fibonacci(5)) # 5
print(fibonacci(10)) # 55
# Почему так медленно?
Посмотрим на дерево вызовов для fibonacci(5):
fib(5)
/ \
fib(4) fib(3)
/ \ / \
fib(3) fib(2) fib(2) fib(1)
/ \ / \ / \
fib(2) fib(1) fib(1) fib(0) fib(1) fib(0)
/ \
fib(1) fib(0)
Однако у этой наивной реализации есть серьёзный недостаток — экспоненциальная временная сложность O(2^n). Это происходит из-за колоссального количества повторных вычислений одних и тех же значений, что хорошо видно на дереве вызовов для
fibonacci(5), где, например, fibonacci(3) вычисляется несколько раз. Для оптимизации применяют технику мемоизации — сохранения результатов предыдущих вычислений в кеше (словаре), чтобы не считать их заново.def fibonacci_memo(n, memo={}):
# Если уже вычисляли, берем из кеша
if n in memo:
return memo[n]
# Базовые случаи
if n == 0:
return 0
if n == 1:
return 1
# Вычисляем и сохраняем результат
memo[n] = fibonacci_memo(n - 1, memo) + fibonacci_memo(n - 2, memo)
return memo[n]
print(fibonacci_memo(50)) # Работает быстро!С мемоизацией сложность снижается до линейной O(n), поскольку каждое значение вычисляется только один раз.
Это подводит к обсуждению недостатков рекурсивного подхода в сравнении с итеративным (циклы). Главные минусы рекурсии — повышенный расход памяти из-за использования стека вызовов, риск его переполнения при большой глубине, более низкая скорость из-за накладных расходов на вызов функции, а также потенциальная сложность отладки. Итеративные решения обычно более эффективны по памяти и быстродействию для задач, которые можно просто выразить через циклы. Например, вычисление факториала с помощью цикла не требует хранения цепочки вызовов в стеке.
📟 Прилетело из @solidityset
Тем не менее, рекурсия остаётся незаменимым инструментом для задач, имеющих естественную рекурсивную структуру данных или логики. Она идеально подходит для обхода древовидных структур (каталогов файловой системы), реализации алгоритмов "разделяй и властвуй" (быстрая сортировка, бинарный поиск) и решения таких задач, как Ханойские башни. Выбор между рекурсией и итерацией часто является компромиссом между читаемостью, простотой выражения идеи алгоритма и требованиями к производительности и ресурсам.
#algorithm
📟 Прилетело из @solidityset
#algorithm
📟 Прилетело из @solidityset
FUN: первый лайфчендж 2026?
Думаю, вы уже видели скрины с сумасшедшими профитами $FUN на ASTER DEX.
Если кратко, то маркетмейкер $FUN на ASTER парсил цену с другого токена, который на 99,9% торговался ниже, чем $FUN на других биржах.
Те, у кого была ликва на астере или те кто самый первый успел депнуть смогли заливалиться на самом дне пролива, после чего цену обратно вернули вверх и сравняли спред со всеми биржами.
Людям удалось забрать 20-50х на сайз, что очень вкусно и я рад за тех, кому это удалось.
Для остальных рекомендую держать деньги на: всех СЕХ, а так же Lighter, HL, Aster. И ждать свой лайфчендж.
📟 Прилетело из @hidden_coding
Думаю, вы уже видели скрины с сумасшедшими профитами $FUN на ASTER DEX.
Если кратко, то маркетмейкер $FUN на ASTER парсил цену с другого токена, который на 99,9% торговался ниже, чем $FUN на других биржах.
Те, у кого была ликва на астере или те кто самый первый успел депнуть смогли заливалиться на самом дне пролива, после чего цену обратно вернули вверх и сравняли спред со всеми биржами.
Людям удалось забрать 20-50х на сайз, что очень вкусно и я рад за тех, кому это удалось.
Для остальных рекомендую держать деньги на: всех СЕХ, а так же Lighter, HL, Aster. И ждать свой лайфчендж.
📟 Прилетело из @hidden_coding
Media is too big
VIEW IN TELEGRAM
Провели вертикальный тг стрим с вайбкодингом игрульки @blockwallbot
добавили:
• красивые темы
• рефералку
• фикс багов
• онбординг
Кто был — расскажите, как вам формат? Что запрогать дальше? Темы для будущих стримов?
Запись стрима грузится в комменты
📟 Прилетело из @danokhlopkov
добавили:
• красивые темы
• рефералку
• фикс багов
• онбординг
Кто был — расскажите, как вам формат? Что запрогать дальше? Темы для будущих стримов?
Запись стрима грузится в комменты
📟 Прилетело из @danokhlopkov
Vercel Labs выкатили json-render – библиотеку для генерации UI через промпты.
Проблема: когда AI генерит интерфейс — это рулетка. Может выдать несуществующий компонент, кривой JSON, XSS в придачу. json-render ставит модель в рамки: вот каталог компонентов, вот схема – генерируй только из этого. Нет в каталоге – не рендерим. Tool calling, только для UI.
У ребят из Onchain Divers индексеры по Solana, Hyperliquid, Polymarket — данных море. Сейчас чтобы сделать к этому интерфейс — либо пилишь фронт руками, либо агент отвечает текстом. С json-render агент рисует готовый UI: "покажи все свопы больше 10 SOL на Raydium для токена за неделю" → таблица с интерактивными фильтрами, не простыня текста. "Топ кошельков по объёму на Hyperliquid" → график. Всё с валидацией по схеме.
Генеративный UI близок. Первые шаги, но направление понятно.
github.com/vercel-labs/json-render
📟 Прилетело из @insuline_eth
Проблема: когда AI генерит интерфейс — это рулетка. Может выдать несуществующий компонент, кривой JSON, XSS в придачу. json-render ставит модель в рамки: вот каталог компонентов, вот схема – генерируй только из этого. Нет в каталоге – не рендерим. Tool calling, только для UI.
У ребят из Onchain Divers индексеры по Solana, Hyperliquid, Polymarket — данных море. Сейчас чтобы сделать к этому интерфейс — либо пилишь фронт руками, либо агент отвечает текстом. С json-render агент рисует готовый UI: "покажи все свопы больше 10 SOL на Raydium для токена за неделю" → таблица с интерактивными фильтрами, не простыня текста. "Топ кошельков по объёму на Hyperliquid" → график. Всё с валидацией по схеме.
Генеративный UI близок. Первые шаги, но направление понятно.
github.com/vercel-labs/json-render
📟 Прилетело из @insuline_eth
Прошлым постом я не говорил, что цели это плохо и они нахуй не нужны. Я хотел сказать — цели зачастую ломают модель поведения. Заместо этого лучшим решением будет использование системы
Система не ставит вам итоговый результат, а заставляет делать что-то регулярно, независимо от настроения, мотивации и других противных факторов. По сути это реально ключ к успеху
При формировании системы мозг перестраивается. Управление переходит от "думающего" к "автоматическому", формируются новые нейронные пути, которые укрепляются с каждым повторением
Получается система это привычка. В данном исследовании есть вывод, что около 40% наших ежедневных действий — это привычки, то есть очти половину нашей жизни мы движемся на автопилоте
И система это настроить этот автопилот под себя, а не каждый раз бороться с желанием чето сделать
Конечно, изначально любые действия требуют усилия, мозг шлет нахуй такое. Но раз за разом усилий будет все меньше и через некоторое время действие будет запускаться само
• B — (behavior) поведение
• M — (motivation) мотивация
• A — (ability) способность
• P — (prompt) триггер
Ключ в том, что все три компонента должны совпасть в один момент
Проблема в том, что большинство людей делают ставку только на мотивацию. Думают: "ну сегодня напишу пост", загораются — и потом забивают хуй на неделю как я
Системы же по этой формуле работает иначе: они снижают сложность действий и встраивают триггеры. Не поход в зал, а 5 отжиманий, ведь любой способен на 5 отжиманий?
Туда же и автоматические подскази: после чистки зубов не нужно помнить и решать. Даже при нулевой мотивации действие всё равно происходит: оно простое и привязано к автоматической подсказке
Короче — цели требуют постоянных решений и энергии, а системы становятся автоматическими и не тратят ресурсы мозга
Я нашел примеры успешных применений системы. Люди ниже не ставили себе цель "стать кем-то", они просто делали одно и то же каждый день, просто ебашили на автомате:
• Уоррен Баффет не ставил цель заработать миллиарды. Его система — ежедневное чтение профессиональной литературы и постоянный апгрейд знаний
• Джерри Сейнфелд не стремился "стать лучшим комиком". Его система — одна шутка в день и крестик в календаре. Главное правило — не разрывать цепочку. В итоге он стал одним из самых богатых комиков
Именно поэтому системы сильнее таланта и мотивации:
• Талант без системы = разовая вспышка• Система без таланта = медленный, но стабильный рост• Система плюс талант = гарантированный результатКратко, банально и просто на примерах, чтобы не ебаться с теорией:
Учеба? Тогда не "50 книг", а 20 страниц после кофе
Деньги? Тогда не "миллиарды $", а процента с дохода
Работа? Не "стать успешным", а ежедневно по часу практики
Даже с системами можно проебаться — 90% людей бросают новые привычки через неделю. Но есть три принципа, которые это предотвращают:
1. habit stacking — привязывай новое действие к уже существующей привычке, используя готовые нейронные пути. Почистил зубы, пошел погулял
2. environment design — не надеяться на силу воли, а менять окружение. Хочешь читать больше? Убери нахуй мобилку
3. микропривычки — начинай с мега простых действий. Не готовый пост, а ресерч инфы по нему. Не час в зале, а 10 отжиманий. Это обходит барьеры мозга
Самый прикол в том, что этот пост тоже может стать целью. Ты подумаешь: "бля, надо всё менять" — и конец. Мозг получит дофамин, ты сохранишь пост в избранное
Не надо планировать систему. Не надо сохранять пост. Просто сделай одно микродействие прямо сейчас, даже самое смешное: прочитай пару страниц книги, сделай пару отжиманий
Это и будет настоящее начало для системы
📟 Прилетело из @in_crypto_info
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠 SOLANA LUV: ВОЗВРАЩЕНИЕ
14 января 2026 года мы начали наш марафон: SOLANA С НУЛЯ ЗА 30 ДНЕЙ
150 Участников принимают участие и уже получают первые результаты!
но...
Уже несколько дней мне пишут, что не успели зайти на марафон
ПОЭТОМУ
❤️🔥 ДОБАВЛЯЮ 50 МЕСТ
и снова но...
НЕ ВСЕ ТАК ПРОСТО
Теперь вам необходимо заполнить простую форму
5 ВОПРОСОВ
После заполнения вы сразу вступаете на наш марафон!
GOOGLE-ФОРМА
GOOGLE-ФОРМА
GOOGLE-ФОРМА
СОЗИДАЕМ ❤️🔥
📟 Прилетело из @code_vartcall
14 января 2026 года мы начали наш марафон: SOLANA С НУЛЯ ЗА 30 ДНЕЙ
150 Участников принимают участие и уже получают первые результаты!
но...
Уже несколько дней мне пишут, что не успели зайти на марафон
ПОЭТОМУ
❤️🔥 ДОБАВЛЯЮ 50 МЕСТ
и снова но...
НЕ ВСЕ ТАК ПРОСТО
Теперь вам необходимо заполнить простую форму
5 ВОПРОСОВ
После заполнения вы сразу вступаете на наш марафон!
GOOGLE-ФОРМА
GOOGLE-ФОРМА
GOOGLE-ФОРМА
СОЗИДАЕМ ❤️🔥
📟 Прилетело из @code_vartcall
Мне довольно часто приходится работать со сторонними API, в том числе в мире JS/TS (так уж складывается). Долгое время в качестве go-to решения у меня был Got (который теперь переродился, об этом чуть ниже).
Однако я предпочитаю подход "чем меньше сторонних зависимостей", тем лучше, поэтому последние пару лет очень активно использую встроенный Fetch, который доступен с версии node 18. Решение несложное, без наворотов, но надёжное - плюс, можно легко тестировать (нужно подключить undici, из которого это всё и появилось изначально).
Да, там нет каких-то продвинутых штук, но таймауты настраиваются, ошибки ловятся, все необходимые параметры конфигурируются, прокси добавляются (хотя это чуточку сложнее)... Честно говоря, во многих случаях этого достаточно. А для чего-то несколько более сложного можно попробовать Ky - от создателей Got.
Если нужно изучить это дело с нуля, у меня вышла новая статья https://www.scrapingbee.com/blog/nodejs-fetch-api-http-requests/
📟 Прилетело из @dev_in_ruby_colors
Однако я предпочитаю подход "чем меньше сторонних зависимостей", тем лучше, поэтому последние пару лет очень активно использую встроенный Fetch, который доступен с версии node 18. Решение несложное, без наворотов, но надёжное - плюс, можно легко тестировать (нужно подключить undici, из которого это всё и появилось изначально).
Да, там нет каких-то продвинутых штук, но таймауты настраиваются, ошибки ловятся, все необходимые параметры конфигурируются, прокси добавляются (хотя это чуточку сложнее)... Честно говоря, во многих случаях этого достаточно. А для чего-то несколько более сложного можно попробовать Ky - от создателей Got.
Если нужно изучить это дело с нуля, у меня вышла новая статья https://www.scrapingbee.com/blog/nodejs-fetch-api-http-requests/
📟 Прилетело из @dev_in_ruby_colors
Scrapingbee
How to make HTTP requests in Node.js with fetch API | ScrapingBee
Learn how to make HTTP requests with Fetch in Node.js. This guide covers a clear Node.js fetch example, error handling, POST requests, and scraping basics.
Поставил claude code + takopi в obsidian vault.
Сказал, где лежат проекты на маке. Запустил caffeinate, чтобы не засыпал.
Всё, я в 2030
Теперь чисто на голосовухах в тгшку двигаюсь📞
📟 Прилетело из @danokhlopkov
Сказал, где лежат проекты на маке. Запустил caffeinate, чтобы не засыпал.
Всё, я в 2030
Теперь чисто на голосовухах в тгшку двигаюсь
📟 Прилетело из @danokhlopkov
Please open Telegram to view this post
VIEW IN TELEGRAM
gm!
Команда $TROVE не особо скрываясь решила депнуть в казик средства полученные в ангельском раунде.
Можно долго рассуждать про "utility токены" и "революционные протоколы". А можно просто посмотреть куда идут деньги с раундов. Иногда честность системы восхищает.
https://x.com/zachxbt/status/2012545418350207378
📟 Прилетело из @insuline_eth
Команда $TROVE не особо скрываясь решила депнуть в казик средства полученные в ангельском раунде.
Можно долго рассуждать про "utility токены" и "революционные протоколы". А можно просто посмотреть куда идут деньги с раундов. Иногда честность системы восхищает.
https://x.com/zachxbt/status/2012545418350207378
📟 Прилетело из @insuline_eth