Обновить
220.26

Алгоритмы *

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

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

Булевы операции двумерных тел

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров9.5K

В детстве меня всегда завараживали игры с динамическим ландшафтом: The Castle и Worms Armageddon. В то время я не понимал, как реализована эта удивительная механика разрушения и изменения мира. Позже я узнал, что секрет заключался в использовании растровой графики, но интерес к теме не исчез. В этой статье я хочу рассказать о векторном решении аналогичной задачи.

Читать далее

Полный цикл отбора на стажировку в Яндекс (Аналитика, МЛ, Бэкенд)

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров18K

Наше сообщество в телеграм "Поступашки  — ШАД, Стажировки и Магистратуры" в частности специализируется на подготовке к стажировкам. В этой статье наши выпускники трех самых популярных направлений расскажут, как они проходили отбор. Далее представлен слегка отредактированный текст наших выпускников.

Аналитика

Сначала ждал контест. Мне и моему другу хватило всего 3 из 6 задач, чтобы позвали дальше на собеседования.

Аналитическая секция проходила так. Была одна алгоритмическая задача: есть массив целых чисел отсортированный, надо у всех отрицательных чисел знак поменять и снова отсортировать. Потом была стандартная задача на формулу Байеса: вычислить вероятность болезни, если тест показал положительный результат. В конце был бизнес кейс в духе как оценивать качество работы службы поддержки Яндекс такси. Поговорили про метрики, пользователей и тд. Прошел без каких-либо трудностей и напрягов. На все ушел час.

Алгоритмическая секция проходила так. Всего было две задачи. Первая задача: есть строка из Х, У, О наподобие "O,O,O,O,X,X,OY,O,O,X" найти минимальное расстояние между Х и У.
Вторая задача: есть массив целых чисел надо вывести границы отрезка с заданной суммой чисел, или если такого отрезка нет, то вывести (-1,-1). Опять же прошел собес без каких-либо трудностей. На все ушел час.

Интервью с командами прошли так. На финалах в основном были беседы за жизнь и спрашивали всякую фигню типо бизнес кейсов.
На первом финале были разговоры за жизнь и кейс: придумать метрики оценки системы рекомендаций фильмов на умных телевизорах.
На другом финале дали простейшую задачу на sql, которую я даже не запомнил, ибо на столько элементарная она была. Еще был бизнес кейс по оценке работы пуш уведомлений Яндекс лавки.
Но прям норм задачи были на финале в команде, которую я по итогу и выбрал. Было несколько задач по теор веру типо рассчитать оптимальный размер гардеробов в театре с двумя входами, если известно что приходят 400 человек (мы даже такую задачу решали на семинарах). Потом спросили: у тебя десять А/Б экспериментов проводится (цвета кнопки тестируются, ну 10 разных цветов ) и один из тестов показал значимый результат (ошибка первого рода 0.1) , так вот приходит дизайнерша и говорит что её цвет кнопки показал значимый результат, что ей стоит ответить. Более типичный вопрос про множественное тестирование, я немного потупил, но решил. Ещё две задачи чисто были на теор вер, но там длинные условия и я их не понял и особо не запомнил.

Читать далее

Вложенные тексты как возможность для композиции (разделения на части) в длинных текстах (so10; sapscript text)

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров1.3K

В статье рассмотрены примеры использования длинных (sapscript) текстов для построения шаблонов с использованием вложенности шаблонов, переменных и условных конструкций. Статья будет полезна для разработок рассылок на основе SAP NetWeaver, формирование печатных форм, рекомендательной/пояснительной документации.

О, покажите мне, что может текстозавр...

Алгоритм управления доставкой по расписанию и динамичесий прайсинг. Как мы сделали это в Купере

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров4.7K

Привет! Меня зовут Юрий Беляков, я старший ML-инженер в Купере. Сегодня предлагаю вместе разобраться, что такое плановая доставка и как устроен алгоритм управления слотами в Купере. Обсудим, как проходило тестирование и масштабирование от одного магазина до всех гипермаркетов, на какие грабли мы наступили и как на той же базе реализовать динамическое ценообразование.

Читать далее

Удивительная история развития сортировки в JDK

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров7.7K

Как вы считаете, если выполнить java.util.Arrays.sort(), то какая сортировка будет вызвана? Quicksort? Timsort? И та, и другая, потому что для объектов вызывается Timsort, а для примитивов (чисел int, long, float и так далее) — Dual-Pivot Quicksort. В JDK 6 для объектов использовался стандартный Merge sort, а для чисел классическая реализация Quicksort с одним опорным элементом, предложенная Джоном Бентли и Дугласом МакИлрой. В JDK 7 оба алгоритма поменялись: теперь объекты сортируются с помощью Timsort, автор Тим Петерс, а для простых типов данных используется Dual-Pivot Quicksort, предложенный мною вместе с Джоном Бентли и Джошем Блоком в 2009 году. Эта сортировка используется более 15 лет не только в JDK, но и в Android (хотя и немного устаревшая версия).

А зачем нам вообще второй алгоритм сортировки, если есть Timsort? Почему не использовать один и для объектов, и для примитивов? Сегодня я, как автор, расскажу историю Dual-Pivot Quicksort: как он начинался, как развивался и как продолжает развиваться сейчас.

Читать далее

Путеводитель для диффузионок. Как заставить нейросети качественно редактировать изображения

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.6K

Привет, Хабр! Меня зовут Вадим, я — младший научный сотрудник группы Controllable Generative AI лаборатории FusionBrain в AIRI. Последние несколько лет я занимаюсь исследованием генеративных моделей в контексте задачи редактирования фотографий. Мы с командой накопили большую экспертизу и хотели бы поделиться ей.

Совсем недавно мы выложили препринт статьи, которую мы представим на ECCV этой осенью (сама статья, её код, demo на HuggingFace). Там мы предложили метод редактирования реальных изображений с помощью диффузионных моделей, который достигает лучшего компромисса между качеством редактирования и сохранением структуры исходного изображения, а также эффективен с вычислительной точки зрения. В данной статье я хотел бы рассказать о том, почему приходится делать такой выбор, и как мы эту проблему обошли. Приятного чтения!

Читать далее

Игрострой. Программирование. Оптимизация как камень преткновения

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

Всем привет! Для тех кто не знает, меня зовут Ш. Сергей!

Я хоть и программирую на Pascal/Assembler, но думаю что для людей, использующих другие ЯП, данная информация может быть полезна. Полностью рассмотреть вопросы оптимизации программ/игр практически не возможно, думаю для этого надо написать достаточно не малую книгу и всё равно что-нибудь да будет упущено.

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

ознакомится

Задача коммивояжёра в общем виде. Наибыстрейшее точное решение

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров17K

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

Тут я хочу подытожить все опробованные подходы и выбрать лучший по моему мнению.

Читать далее

Поделить нельзя — умножить или алгоритм быстрого деления по методу Ньютона-Рафсона

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


Все мы в школе проходили деление «столбиком» — простой алгоритм, который несложно реализовать, вот только не очень быстрый. В прошлый раз мы рассматривали, как компилятор оптимизирует деление в случаях, когда делитель известен во время компиляции, но применение его напрямую, чтоб оптимизировать деление для делителей, определямых в run-time, невозможно: вычисление констант сдвига и умножения само по себе требует деления.

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

Как на C# написать программу в одно выражение?

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

Попалась на Stack Overflow интересная задачка: написать программу как можно короче и в одну строку. Что подразумевается под одной строкой? Это значит использовать только один оператор (statement) верхнего уровня с точкой с запятой в конце и не использовать блоки кода. Вложенные операторы допускаются.

Читать далее

Красно-черные сигналы в node.js

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

Что происходит, когда мы отправляем сигнал приложению на node.js? Когда вызываются обработчики? А где хранятся? Во всем этом мы разберемся в данной статье, начиная от пользовательского кода на javascript и до встречи с операционной системой.

Читать далее

Решаем судоку на pytorch

Время на прочтение7 мин
Количество просмотров3.3K

Решаем судоку на pytorch. Можно ли делать нейросети без обучения? Без кучи тестовых примеров? Попробую ответить на этот вопрос.

Читать далее

Близкий родственник эльфа – программер

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров3.4K

Многие знакомы с ELF-файлами и их структурой. Поговорим о программерах. Программер – это файл в формате ELF (расширение может быть BIN, MBN или ELF), который предназначен для  работы с памятью смартфонов на Android с процессорами от Qualcomm в режиме аварийной загрузки (EDL mode – emergency download, 9008). Также его некоторые называют «пожарный шланг» (от английского firehose) или просто «шланг». Файл представляет из себя контейнер с набором команд для базовой работы с памятью, которые подписаны цепочкой сертификатов. Иногда возникает необходимость подобрать для своего устройства подходящий программер. Вот и попробуем разобраться в этом.

Читать далее

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

Математика прекрасного. Как создать красивую картинку, если ты дилетант, художник или нейросеть?

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров6.3K

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

С появлением нейронных сетей почти каждый может попробовать себя в роли художника или дизайнера. Уверен, что будет неплохо максимально простым языком рассказать, каких правил стоит придерживаться, чтобы ваши работы получались на профессиональном уровне. В основе этих правил лежат закономерности, которые описаны на языке математики. Надеюсь, что понимание сути методов поможет вам найти новые и интересные дизайнерские решения.

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

Читать дальше

Сравнительный анализ скорости API брокеров: Alor vs Tinkoff

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

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

Читать далее

Решение головоломки из университетского квеста с помощью Python

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров2.1K

Треки — одна из интересных головоломок игры Puzzle Hunt Мельбурнского Университета 2008 года. Это задание было частью пятого акта игры, и ему предшествовало небольшое повествование, которое продолжало ее сюжет. В соответствии с ним ночь в стране выдалась неспокойная; и вместо того, чтобы спать, вы провели ее в ужасе наблюдая по телевизору за уличными беспорядками. С наступлением дня ситуация несколько улучшилась, и вы решаете выйти из дома, чтобы подышать свежим воздухом. На улице вы замечаете детей, беззаботно играющих в классики на дороге. Когда вы подходите к ним поближе в надежде на то, что часть их безмятежности передастся и вам, то ваше внимание переключается на очертания классиков, небрежно нарисованных мелом на дороге. Они совершенно не соответствуют ни одним классикам, в которые вам когда-либо доводилось играть...

Ниже можно было видеть эти «классики». 

Читать далее

JavaScript: структуры данных и алгоритмы. Часть 4

Уровень сложностиСредний
Время на прочтение31 мин
Количество просмотров8.2K


Привет, друзья!


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



Сегодня мы рассмотрим дерево отрезков, дерево Фенвика, а также граф (направленный и ненаправленный).


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


Интересно? Тогда прошу под кат.

Читать дальше →

Как научить компьютер различать цвета?

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров1.6K

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

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

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

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

Изначально были попытки обучить на размеченных данных классические детекторы объектов, например, YOLO. Однако оказалось, что модель сильно усложняет задачу — начинает ориентироваться на расстановку игроков, и из-за этого точность становится невысокой. Поэтому возникла идея попробовать более классические и, соответственно, более простые алгоритмы.

Читать далее

Алгоритмические уведомления для рынка акций MOEX в реальном времени

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.1K

Алгоритмические уведомления для рынка акций MOEX в реальном времени

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

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

Читать далее

Как на изи «влететь» на Хак и затащить его на flow-режиме

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров1.4K

Введение и задача

Добрый день, уважаемые читатели Хабр.ру! Я хотел бы поделится с вами отчетом по хакатону (Practice & Scale AI: Рерайтинг текста на уровне, позволяющем проходить фильтрацию распознающих систем), в который мы очень «лихо» влетели со всей командой (Anomaly Detection) и, забегая вперед, скажу, который мы «втащили» на третье место по нашему кейсу. Жаль, правда, что призовое место было одно, но все же это был отличный опыт и по «горячим» следам все сейчас опишу и расскажу, что мы делали и как «пришли» к нашему решению.

Читать далее

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