Рубрика «Спортивное программирование»

HighLoad Cup #2. Чемпионат для backend-разработчиков снова в строю - 1

Вы готовы к новым нагрузкам? Приглашаем всех любителей и профессионалов на чемпионат по проектированию и администрированию высоконагруженных сервисов HighLoad Cup #2!

Начало соревнованию было положено еще в прошлом году. Тогда мы знали, что HighLoad Cup — это именно тот чемпионат, которого не хватало в ряде проектов Mail.Ru Group. В первом пилотном соревновании участвовало 449 человек. Было много кода и много пота как у самих организаторов, так и участников (8789 различных решений). Были нюансы в технической реализации, но главное, что всем понравилось! Организаторы провели множество ночей в датацентре, несколько выходных — в офисе. Готовы к этому снова! В конце статьи вы найдете полезные материалы от нас и от участников, которые помогут вам разобраться в механике и найти какие-то best practice-решения.

На этот раз постарались подготовить для вас дельце посложнее. Кроме того, мы расширили аудиторию, теперь в соревновании могут принять участие и англоязычные пользователи. Присоединяйтесь к русскоязычному сообществу в Telegram. Там вы получите множество инсайтов по соревнованию :)

HighLoad Cup #2. Чемпионат для backend-разработчиков снова в строю - 2

Итак, добро пожаловать на борт!
Читать полностью »

Резервуарная выборка (eng. «reservoir sampling») — это простой и эффективный алгоритм случайной выборки некоторого количества элементов из имеющегося вектора большого и/или неизвестного заранее размера. Я не нашел об этом алгоритме ни одной статьи на Хабре и поэтому решил написать её сам.

Итак, о чём же идёт речь. Выбрать один случайный элемент из вектора — это элементарная задача:

auto result = vect[rand() % vect.size()]; // С++

Задача «вернуть K случайных элементов из вектора размером N» уже хитрее. Здесь уже можно ошибиться — например, взять K первых элементов (это нарушит требование случайности) или взять каждый из элементов с вероятностью K/N (это нарушит требование взять ровно K элементов). Кроме того, можно реализовать и формально корректное, но крайне неэффективное решение «перемешать случайно все элементы и взять K первых». И всё становится ещё интереснее, если добавить условие того, что N — число очень большое (нам не хватит памяти сохранить все N элементов) и/или не известно заранее. Для примера представим себе, что у нас есть какой-то внешний сервис, присылающий нам элементы по одному. Мы не знаем сколько их придёт всего и не можем сохранить их все, но хотим в любой момент времени иметь набор из ровно K случайно выбранных элементов из уже полученных.

Алгоритм резервуарной выборки позволяет решить эту задачу за O(N) шагов и O(K) памяти. При этом не требуется знать N заранее, а условие случайности выборки ровно K элементов будет чётко соблюдено.
Читать полностью »

Этим постом мы завершаем серию публикаций о конкурсах Яндекс.Блиц в 2018 году. Надеемся, что вам довелось поучаствовать или хотя бы посмотреть, какие приближенные к продакшену задачи мы предлагаем. Последний контест был посвящен применению алгоритмов во фронтенде. Сегодня мы публикуем подробные разборы 12 задач: первые 6 из них предлагались в квалификационном раунде, а задачи 7–12 — в финале. Мы постарались объяснить, как формировались условия, на какие навыки мы обращали внимание. Спасибо всем участникам за проявленный интерес!

Фронтенд, алгоритмы и опоссум Фридрих. Разбираем задачи конкурса Яндекса - 1

Задача 1

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

Mini AI Cup #3: Пишем топового бота - 1

В начале осени завершился конкурс по написанию ботов Mini AI Cup #3 (aka Mad Cars), в котором участникам необходимо было сражаться на машинках. Участники много спорили о том, что будет работать и что не будет, высказывались и проверялись идеи от простых if’ов до обучения нейросетей, но топовые места заняли ребята с, так называемой, "симуляцией". Давайте попробуем разобраться с тем, что это такое, сравним решения за 1ое, 3е и 4ое места и порассуждаем на тему других возможных решений.

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

Дело было вечером, делать было нечего, а спина все болела. И написал я на хабре.
И разверзлисье в комментариях и поведали мне, что у кого болит и как с этим справляться.
Серьезно, я не ожидал, на сколько тема в прямом смысле болит, сколько людей откликнулись и поблагодарили, но самое важное, насколько осознана аудитория хабра!
Все это побудило меня уйти в тему с головой.
image

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

Эми Кадди провела двухминутный эксперимент — Оказалось, даже за это короткое время уровень тестостерона у тех, кто был в правильной позе, повысился на 20 %,
а у тех, кто нет — снизился на 20 %. Уровень кортизола тоже существенно отличался: у первых упал на
25 %, а у вторых вырос на 15 %.

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

В 2018 году мы провели три конкурса Яндекс.Блиц — по машинному обучению, мобильной разработке и фронтенду. Третий конкурс состоялся совсем недавно — поздравляем победителей! Мы тем временем хотим вернуться ко второму из них, где предлагались задачи на стыке алгоритмов и написания софта для Android/iOS. Кандидатам на позицию мобильного разработчика в Яндексе пригодится опыт решения таких задач. Почитайте подробные разборы некоторых из них.

Мобильный Яндекс.Блиц: разбираем задачи - 1

Задача «Газоснабжение»

Ввод Вывод Ограничение времени Ограничение памяти
стандартный ввод или input.txt стандартный вывод или output.txt 15 секунд 15 мегабайт

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

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

— Всем привет. Меня зовут Артур Кузин, я lead data scientist компании Dbrain.Читать полностью »

Вчера стартовал новый Яндекс.Блиц — на этот раз конкурс будет интересен разработчикам интерфейсов. Обладателям мест с первого по пятое мы предложим устроиться к нам по упрощённой схеме: одна секция собеседования вместо четырёх. Тем самым Блиц остаётся наиболее быстрым способом попасть в Яндекс.

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

Алгоритмические задачи во фронтенде. Примеры и конкурс Яндекса - 1

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

Важная особенность задач по машинному обучению заключается в том, что одинаково хороший результат достижим разными методами. Это и придаёт азарт ML-конкурсам: даже обладая другими компетенциями, чем у заведомо сильного соперника, вы всё равно можете выиграть. Команды Tensorborne и Neurobotics имели практически равные шансы на победу в хакатоне DeepHack и в итоге заняли первые два места. На тренировке Яндекса представители обеих команд выступили с одним объёмным докладом. В расшифровке вас ждут детальные разборы решений и советы начинающим конкурсантам.

И конечно, берите отпуск на хакатон. Когда вы участвуете в недельном хакатоне и одновременно еще и работаете, это плохо. Вы приходите в 7 вечера, немножко поработавший, садитесь и компилите Docker с TensorFlow, Keras, чтобы все это запустилось на каких-то удаленных серверах, к которым у вас даже доступа нет. Где-то в два ночи вы ловите катарсис, и у вас это работает — без Docker, без всего, потому что вы поняли, что можно и так.

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

Всем привет. Меня зовут Валентин.

10 июля я прочел на Хабре пост Оли Ollisteka про платформу codingame.com и решил попробовать свои силы в логических задачах, а так же в конкурсе Legends of Сode and Magic.

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

image

Далее будет краткая информация о правилах конкурса, а так же о некоторых очевидных или не очень вещах для новичков.

Legends of Code and Magic

Контест, который проходит с 25 июля по 24 августа. Игра в некотором смысле похожа на Hearthstone, однако часть вещей улучшена в сторону баланса между игроками.

Игра проходит между двумя игроками, и это пошаговая игра. Каждый игрок имеет свою колоду карт, выбранную из доступных вариантов во время фазы Draft перед фазой Battle.
Читать полностью »