Обновить
274.64

Алгоритмы *

Все об алгоритмах

Сначала показывать
Порог рейтинга
Уровень сложности

PinkHash: Незабываемые розовые хеши

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели1.6K

Розовый хеш — это как розовый слон, только хеш.

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

К эндокринологам и многомерным антихристам

Продуктовая матрица. Что это такое? Как её сделать? Подробное руководство для маркетолога

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели3.7K

Это статья про работу с продуктовой матрицей для маркетологов. Статья специализированная и подробная с примерами и иллюстрациями. Я постарался написать понятным языком, надеюсь, получилось.

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

И еще: всё, что далее написано, работает только, если это внедрять, поэтому лучше всего сразу брать и переносить эти наработки на собственные проекты.

Результат изучения статьи:

Читать далее

Решение задачи с Leetcode про возведение числа в степень

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели1.5K

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

Читать далее

Два в одном: как древние морские существа спасаются от гибели, сливаясь в единое нечто

Время на прочтение3 мин
Охват и читатели4.9K

Хабр, привет! Это Дарья Фролова из команды спецпроектов МТС Диджитал. Сегодня поговорим о скилах, которые освоила живая природа. Однажды я наблюдала, как у аксолотля моей подруги отросла утраченная конечность. Выглядело впечатляюще, ведь это реальность, а не фильм о Дэдпуле. А вот гребневики ничего общего с грибами и медузами выдают штуки еще поинтереснее, чем аксолотли. Эти странные существа не только умеют восстанавливать части тела, но и в случае сильных повреждений сливаются с другими особями своего вида и таким образом выживают. Подробнее об этой суперсиле — под катом.

Читать далее

При чем здесь крипта  –  концептуальное SEO WEB 3.0:  в 2025 году все изменится

Время на прочтение5 мин
Охват и читатели1.5K

Дж. Биллингс: «Я не предложу и двух центов за простоту по эту сторону сложности, но отдам жизнь за простоту по ту сторону сложности». 

Эта фраза здесь не просто так  –  мы все пытаемся найти какие-то простые, но рабочие инструменты и способы улучшить свою деятельность и жизнь в целом. Пытаемся схитрить в попытке обуздать хаос сверхсложных систем. И в этой статье я порассуждаю, как это в теории можно сделать.

В статье:

Почему Google стал таким какой он сейчас

Не даем пользы, а удовлетворяем сиюминутные желания

Как SEO-шник читает твои мысли

Концептуальный подход в SEO  –  это не для всех

Крипта и SEO

Как работать с SEO-специалистом

Читать далее

Антология матричных расширений: от популярного обзора до запуска на эмуляторе

Время на прочтение4 мин
Охват и читатели862

Матричные расширения в мире технологий появились лишь в 2020 году. Даже в сравнении с относительно «молодыми» темами ИИ и квантовых вычислений это буквально «новорожденный» материал в IT-мире. И что самое интересное, матричные расширения уравняли тот разрыв в развитии, который существует между процессорными архитектурами. Свои расширения создают и Intel, и Apple, и IBM, и рабочие группы международного альянса RISC-V. 

Как это ни парадаксально, по числу матричных расширений RISC-V уже обогнала все остальные архитектуры. Сейчас для нее разработаны два кастомных расширения, а два стандартных развиваются буквально у нас на глазах. Если хотите разобраться в многообещающей для высокопроизводительных вычислений теме, изучите тексты в нашей подборке. От объяснения, что такое матричные расширения и какие они бывают, мы плавно погрузимся в спецификации разработки и протестируем матричное расширение на эмуляторе.

Читать далее

Как мы перенесли распознавание на базе ИИ в веб и изменили веб-банкинг? А в Markswebb это оценили

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели1K

Привет, Хабр! Недавно аналитическое агентство Markswebb выкатило ежегодный рейтинг лучших веб-версий банковских приложений в 2024 году. Эксперты сравнили удобство и функциональность использования банковских услуг в браузере и выбрали банки с лучшими веб-приложениями по качеству клиентского опыта. Лидирующие позиции в обеих номинациях рейтинга - «Цифровой офис» (Digital Office) и «Цифровой банк для повседневных операций» (Daily Banking) - заняли наши клиенты!

Достичь крутых результатов удалось в том числе благодаря использованию систем распознавания Smart Engines. Рассказываем, как наши ИИ-решения помогли ведущим банкам поставить новые рекорды в сфере цифрового гостеприимства. 

Добро пожаловать!

Взлом старого ZIP-файла с криптопрограммами подпольщиков ЮАР

Время на прочтение8 мин
Охват и читатели9.6K

Нечасто нам доводится изучать код, который до нас видели только считанное количество людей; код, который был важной частью разрушения системы апартеида в ЮАР; код, который использовался для защищённых коммуникаций с одноразовыми шифрами, контрабандой передававшихся в ЮАР на дискетах бортпроводником. Но мне довелось испытать это одним утром вскоре после того, как я расшифровал тридцатилетний файл PKZIP, пароль к которому давно забыли.

Недавно я заинтересовался защищёнными коммуникациями, которые использовались Африканским национальным конгрессом в рамках операции «Вула», проводившейся в конце 1980-х годов. Операция «Вула» заключалась в проникновении лидеров АНК (и передаче снаряжения) в ЮАР для подготовки тайной сети, реализующей различные элементы политической активности АНК внутри страны.

Для успеха операции требовались защищённые коммуникации, организованные на основе 8-битных компьютеров, DTMF-сигналов, акустических преобразователей и различного другого оборудования для обмена сообщений с одноразовым шифрованием, использующих программы, написанные на PowerBASIC.
Читать дальше →

Это база. Алгоритмы сортировки для начинающих

Время на прочтение11 мин
Охват и читатели48K

Привет! В этой статье я расскажу о двух алгоритмах сортировки: Quick Sort и Merge Sort. Объясню, как они работают, как выглядят примеры кода на Python и Java, а также — как выбрать подходящий алгоритм под ваши задачи. Подробности — под катом.
Читать дальше →

Сорок мегабайт простоты

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели15K

Привет, Хабр!

Наконец-то я могу опубликовать статью, написание которой оттягивал, кажется, целую пятилетку. Ну, знаете, "можешь не писать - не пиши", да и повода особого не было... Но теперь повод появился - да ещё какой! - в свете которого не схватить перо было бы сущим преступлением.

Без лишних предисловий - найдено 52-ое известное простое число Мерсенна!

Какое-какое число?

QR-код: улучшение считывания на сложных поверхностях

Время на прочтение13 мин
Охват и читатели1.3K


Одним из направлений, на которое непосредственно влияет технологический прогресс, является передача информации. В каком виде она передается, каким методом, насколько быстро и как считывается — все это зависит от уровня доступных технологий. Ярким примером того является QR-код, появившийся в начале 90-ых в Японии и ставший одним из самых популярных методов передачи небольшой информации. В наши дни QR-код можно встретить и на упаковках различных товаров, и на рекламных буклетах, и на визитках и т. д. Однако, несмотря на свою универсальность и простоту, QR-код может столкнуться с проблемой считывания, связанной с топологией поверхности, на которую он нанесен. Ученые из Барселонского университета (Испания) разработали новую методологию улучшения считывания QR-кодов, основанную на подгонке топографии базовой произвольной поверхности с помощью тонкопластинчатых сплайнов. Как именно ученые пришли к созданию этого метода, и насколько он эффективен? Ответы на эти вопросы мы найдем в докладе ученых.
Читать дальше →

Траст-менеджер здорового человека

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели1K

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

Читать далее

Популярный, но неправильный способ перевода строки в нижний регистр

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели4.5K

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

Но он ошибочен по многим причинам.

Во-первых, std::tolower — это неадресуемая функция. Среди прочего, это значит, что мы не можем брать адрес функции, как мы делаем это здесь, когда передаём указатель на функцию std::transform. То есть нам нужно использовать лямбду.

Читать далее

Ближайшие события

Почему важно оптимизировать формат данных

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели12K
image

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

Алгоритмы — важнейшая часть программы: замена «горячего» алгоритма O(n) менее сложным, например, O(log n), обеспечивает практически произвольное увеличение производительности. Однако существенно влияет на производительность и структурированность данных: программы выполняются на физических машинах с физическими свойствами, например, разными задержками чтения/записи данных в кэши, на диски или в ОЗУ. После оптимизации алгоритмов стоит изучить эти свойства, чтобы достичь наибольшей производительности. Оптимизированный формат данных учитывает используемые алгоритмы и паттерны доступа при выборе того, как сохранять структуру данных на физическом носителе. Благодаря этому можно увеличить скорость алгоритмов в несколько раз. В этом посте мы покажем пример, в котором нам удалось достичь четырёхкратного повышения скорости чтения простым изменением формата данных в соответствии с паттерном доступа.

Сравнение хранилищ данных AoS и SoA


Современное оборудование, и, в частности CPU, спроектировано так, чтобы обрабатывать данные определённым образом. Расположение данных в памяти влияет на то, насколько эффективно программа сможет использовать кэш CPU, как часто она сталкивается с промахами кэша и насколько оптимально она сможет задействовать векторные команды (SIMD). Даже при использовании оптимальных алгоритмов выбор неподходящего формата данных может приводить к частым перезагрузкам кэша, простаивающим конвейерам и чрезвычайно большому объёму передач содержимого памяти; всё это снижает производительность.
Читать дальше →

Её величество Сортировка

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели2.5K

Можно ли сортировать несортируемое? Почему декоратор в питоне называется "total_ordering"? Как отсортировать тексты по смыслу? Надо ли сохраняться, перед использованием "compare function"?

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

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

Читать далее

Как я искал рекомендации аналитиков по покупке российских ценных бумаг в JSON формате

Уровень сложностиСложный
Время на прочтение4 мин
Охват и читатели2.4K

Четыре года назад я написал систему поиска поиска недооцененных американских акций, используя данные Яху Финанс, ведь на американском рынке торгуется больше 10 тысяч бумаг, из которых 4 тысяч бумаг имеют рекомендации аналитиков о прогнозируемой цене. Это большие цифры, с которыми сложно работать. Но что по России?

Я вялотекуще пытался найти систему которая бы также отдавала рекомендации аналитиков, пока недавно не нашёл:

{
"uid": "b993e814-9986-4434-ae88-b086066714a0",
"ticker": "WUSH",
"company": "Финам",
"recommendation": "RECOMMENDATION_HOLD",
"recommendationDate": "2024-09-26T00:00:00Z",
"currency": "rub",
"currentPrice": {
"units": "192",
"nano": 0
},
"targetPrice": {
"units": "250",
"nano": 0
},
"priceChange": {
"units": "58",
"nano": 0
},
"priceChangeRel": {
"units": "30",
"nano": 210000000
},
"showName": "Whoosh"
}

Правда есть один нюанс в количестве. На московской бирже представлено 170 бумаг, из которых имеют рекомендации всего 89 акций.

Гораздо меньшее количество бумаг, зато API выдаёт конкретные имена компаний, которые давали рекомендации, а также дату дачи прогноза и прогнозную цену. Теоретически можно составлять списки самых точных аналитиков, через какое-то время собирая цены и сопоставляя их с прогнозными.

Но мне было больше интересно составить сводную таблицу по всем доступным 89 акциям.

Код представлен на GitHub.

Ищем 🧈

Как готовить EdgeAI в 2024/2025 году

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели4.9K

Есть у меня такое развлечение - разные платы для AI тестировать.

Очень много того с чем я работаю - про Computer Vision на Edge. В какой то момент я понял что мне не хватает информации. Нет ничего кроме восторженного пресс-релизов. Дай бог ещё есть видео как официальные примеры запускают. Но обычно без этого.

Так что в какой-то момент начал тестировать всё сам. Просто чтобы понимать какие есть альтернативы, что можно а что нельзя.
Иногда (раз в год-два) я пишу обзорную статью. И это именно она. Тут я попробую рассмотреть критерии, которые можно считать важными для AI плат. А так же кратко рассмотреть основные платы на рынке.

Читать далее

Изучение различных видов сортировок

Уровень сложностиПростой
Время на прочтение22 мин
Охват и читатели7.4K

Цель данной лабораторной работы – посмотреть на алгоритмы с различной асимптотикой, научиться анализировать время работы алгоритмов и включать разные степени оптимизации.

Читать далее

Как извлечь квадратный корень из перестановки чисел?

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели5.5K

В этой статье мы исследуем проблему извлечения квадратного корня из перестановки p, иными словами задачу нахождения всех таких перестановок x, что x \cdot x = p. Будет сформулирован критерий возможности извлечения квадратного корня, алгоритм нахождения корней и формула их подсчёта в общем виде.

Читать далее

Учимся читать QR-коды без компьютера

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели42K

Задавались ли вы когда-нибудь вопросом, как работают QR-коды? Если да, то эта статья для вас. Здесь вас ждёт интерактивное объяснение*, которое мы составили для семинара, проводившегося в рамках Всемирного конгресса хакеров 37C3, но вы также можете использовать его самостоятельно.

Прочитав статью, вы узнаете:

  • Из чего состоят QR-коды.
  • Как декодировать QR-коды вручную (используя нашу шпаргалку).
Читать дальше →

Вклад авторов