Рубрика «Программирование» - 137

Решение задач с анаграммами натолкнуло на мысль:

Сколько останется слов, если удалить все анаграммы и сабанграммы из словаря русского языка

В найденном словаре больше 1,5 млн слов в различных формах

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

Но есть ли решение получше?
Читать полностью »

Как не потерять все деньги за пару минут или риск-менеджмент в алгоритмической торговле - 1

Введение

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

"Алготрейдер спит — торговля идет!" — любят говорить некоторые трейдеры. Но в реальности не все так просто. Как вы думаете с чего начинается алгоритмическая торговля? С подключения к бирже или написания алгоритма? Для профессионально участника трейдинг начинается с разработки риск-менеджмента.
Читать полностью »

Моделируем вселенную: небесная механика наглядно - 1

Давайте представим, что нам нужно запустить футбольный мяч на орбиту Земли. Никакие ракеты не нужны! Хватит горы, высотой 100 километров и недюжинной силы. Но насколько сильно нужно пнуть мяч, чтобы он никогда больше не вернулся на Землю? Как отправить мяч в путешествие к звёздам, имея только грубую силу и знание небесной механики?

Сегодня в программе:

  • Бесконечные возможности одной формулы
  • Как взять энергию у Юпитера
  • Откуда у планет берутся кольца
  • Как математика помогла открыть Нептун

Благо, мы живём в век компьютерных технологий. Нам не нужно забираться на высокую гору и пинать мяч со всей силы, всё можно смоделировать! Давайте приступим.
Читать полностью »

Coderik однажды отметил: "Фильтра Калмана много не бывает". Так же можно сказать и о теореме Байеса, ведь это с одной стороны так просто, но с другой стороны так сложно осмыслить его глубину.
Байесовский ниндзя - 1

Читать полностью »

Достоевский дал миру Великого Инквизитора с его «зачем же ты пришел нам мешать?».
Ильф и Петров — Великого Комбинатора.
Та эпоха уже закончилась, эта — еще не началась.
Читать полностью »

Предыстория

На ЛитРес есть система бонусов и купонов, которые появляются с завидной регулярностью. Чтобы сделать приятное жене, да и в целом может найти себе интересную книжку, начал мониторить сайт в котором появляются свежие купоны и скидывал их в телеграм. Но буквально спустя несколько дней мне это дело надоело и я решил автоматизировать данный процесс так, чтобы он мог быть доступен всем кто этого хочет.

Реализация

Так как я постоянно постил новые купоны в телеграм, да и в целом мне нравится этот инструмент, решил создать еще одного бота для телеграма, благо дело для него уже создано достаточное количество библиотек. Возьмем в качестве языка golang и библиотеку telegram-bot-api. Так же нам нужно выбрать ресурс с которого можно было бы тянуть информацию, у меня на примете было несколько сайтов и я думал в целом написать универсальный парсер, но в какой-то момент мне стало лень, и я решил остановить свой выбор на одном ресурсе. Для того чтобы хранить купоны даже после рестарта, решил воспользоваться простой базой sqlite3. В ней будем хранить информацию о купонах, а так же информацию о зарегистрированных пользователях в телеграм боте, так же информацию о том какие купоны пользователь уже получил и какие ещё нет.

Выглядит это примерно так.

Автоматизация сбора купонов для бесплатной литературы - 1Читать полностью »

image

От переводчика:
Это продолжение серии переводов туториалов от Twinklebear, в оригинале доступных тут. Перевод отчасти вольный и может содержать незначительные поправки или дополнения от переводчика. Перевод первых двух уроков — за авторством InvalidPointer, а третьего и четвертого — за k1-801.

Список уроков:

Читать полностью »

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

Картину портят выражения: постфиксные, инфиксные и прочие. Проблема: вы не можете понять, какого типа выражение вы обрабатываете до тех пор, пока не разберёте его первую половину. Зачастую для вас также важны приоритет операции и её ассоциативность, чтобы построенное AST имело правильную структуру.

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

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

Парсеры Пратта для чайников - 1

Читать полностью »

Привет! Меня зовут Евгений, я Python-разработчик. Последние полтора года наша команда стала активно применять принципы Clean Architecture, уходя от классической модели MVC. И сегодня я расскажу о том, как мы к этому пришли, что нам это дает, и почему прямой перенос подходов из других ЯП не всегда является хорошим решением.

Clean Architecture глазами Python-разработчика - 1
Читать полностью »

Сердце любого современного сайта или браузерного приложения (что SPA, что PWA, что любые другие три буквы) — это его State, или состояние.

Мы можем сколько угодно спорить о том, что лучше — React, Vue, Svelte, Angular, можем продолжать пользоваться jQuery, но в действительности это не так важно. Это та часть нашего приложения, которое мы видим — его “мышцы“ и “кожа”. Но то, как вы думаете — какими терминами оперируете, какие механики используете для даже визуализации в голове того, как в вашем приложении “текут” данные — все это идет из его скелета. Из state manager-а.

Помните, пару лет назад у нас была усталость от JavaScript-а? Сейчас я вижу у огромного количества людей усталость от state manger-ов. Redux? Да, да and да. RxJS? Тоже. MobX? Если он такой простой — блин, почему у него есть в документации страница западни.html?

Ответ “почему многим так тяжело” есть, но сначала надо точно сформулировать проблему.

Выбирая state manger — мы выбираем образ мышления. Вариантов сейчас много, но самые популярные подходы бьются на 3 группы:

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js