В ноябре прошлого (уже) года, Hola объявила конкурс по программированию почтовых фильтров на js, и недавно опубликовала его результаты.
Я разделил второе место с Ильей Макаровым, и сейчас я расскажу…
В ноябре прошлого (уже) года, Hola объявила конкурс по программированию почтовых фильтров на js, и недавно опубликовала его результаты.
Я разделил второе место с Ильей Макаровым, и сейчас я расскажу…
Спасибо всем участникам нашего последнего конкурса по программированию!
Мы получили 408 решений от 237 различных участников (в конкурсе участвует только одно, последнее из решений от каждого участника, и мы публикуем именно последние варианты). Кроме того, 7 решений было отправлено нам либо после окончания срока приёма работ, либо сотрудниками Hola, и мы рассмотрели их вне конкурса.
Читать полностью »
Хочу поделиться опытом работы с задачей известного конкурса по машинному обучению от Kaggle. Этот конкурс позиционируется как конкурс для начинающих, а у меня как раз не было почти никакого практического опыта в этой области. Я немного знал теорию, но с реальными данными дела почти не имел и с питоном плотно не работал. В итоге, потратив пару предновогодних вечеров, набрал 0.80383 (первая четверть рейтинга).
В общем эта статья для еще начинающих от уже начавшего.
Сначала этот текст был написан в виде комментария к теме победителя данного конкурса. Но в итоге объем текста стал таким большим, что было решено выделить его в отдельную тему. Так что предполагается, что читатель в курсе о конкурсе и прочёл тему победителя. Также можете почитать историю 30-го места.
Сразу дам ссылку на репозиторий с исходным кодом: bitbucket.org/skolotienko/coderacing — помимо непосредственно исходников там же есть вся история коммитов. Например, интересным может показаться время, в которое был совершён коммит с комментарием «спать пора».
В целом, сложилось такое ощущение, что у большинства лидеров были примерно одинаковые основные идеи для итоговой стратегии:
Так что в данной теме я расскажу чуть подробнее о том, как эти идеи были реализованы в моём случае.Читать полностью »
Хочу рассказать о своем участии и победе в ежегодном соревновании по программированию ИИ «Russian AI Cup 2015» от Mail.Ru Group. Посмотреть подробные правила соревнования и записи игры желающие могут на сайте соревнования russianaicup.ru.
В этом году соревнование было организовано на совершенно новом уровне. Изменения произошли как в масштабности игрового мира, в котором действует ИИ, так и на сайте соревнования. Благодаря трехмерной визуализации, игры смотрелись гораздо увлекательнее. По зрелищности, на мой взгляд, соревнование значительно превзошло прошлогодний хоккей, и «солдатиков» 2013 года.
Участнику предлагалось написать ИИ для управления автомобилем в гонках на выживание. Как и в прошлом году, задача была «с физикой». Но на это раз исходники «физического движка» были открыты. Еще, в отличие от прошлого года, на этот раз все случайные явления в игровом мире были наглядны — случайная карта, случайно расставленные бонусы. Сразу было видно — когда удача на твоей стороне, а когда она от тебя отвернулась. В прошлогоднем хоккее, даже наблюдая за игрой значительно отличающихся по силе противников, было трудно понять произошел выигрыш благодаря случаю или мастерству. Думаю, это положительно сказалось на зрелищности соревнования.
Цель — проехать 2 круга по замкнутой трассе быстрее всех. Точнее надо набрать больше всех очков, но приехать первым — это основной способ заработать очки. Еще очки дают за сбор бонусов по дороге и нанесение урона противникам. Трасса, как конструктор, собирается из квадратных «тайлов», это прямолинейные участки трассы, углы (поворот трассы на 90 градусов), или перекрестки (Т образные и обычные). Нужно ехать по ключевым точкам («тайлам») трассы в определенном порядке – иногда приходится делать петли, иногда вообще ехать назад. Еще у машинок есть возможность разливать за собой лужи мазута, стрелять друг в друга специальными снарядами (шины и шайбы), и использовать особый ускоритель «нитро». Заряды для всех этих приспособлений ограничены, и пополняются подбиранием случайно разбросанных по карте бонусов.
Расскажу, как устроен мой ИИ, и благодаря чему (как я думаю) удалось победить.
Читать полностью »
Мое хобби, помимо программирования — разработка модификаций под игру S.T.A.L.K.E.R. Работаем мы в команде, где, как и принято, каждый отвечает за что-то свое. Я, помимо того, что вхожу в круг разработчиков, еще и осуществляю разработку ПО для команды. Под катом читайте, как мы автоматизировали распаковку игровых архивов, с какими проблемами столкнулись и как их решили.
Читать полностью »
В этом году в Russian AI Cup надо было запрограммировать бота для управления машинкой (а в финале даже двумя!), и я решил впервые поучаствовать, так как тема показалась близкой и родной: фанат гонок, периодически езжу катать в картинг (хоть и без выдающихся результатов), вечера часто провожу, катаясь по виртуальным Гавайям в Test Drive Unlimited или Nurburgring в GTR Evolution.
Высокого места я в итоге не занял (30 место в финале, песочницу закончил на 48 месте), но небольшое время между вторым раундом и финалом был в топ-10 песочницы. Также, судя по форуму соревнования, набор костылей решений как у меня больше никто не использовал, так что если желаете узнать подробностей — добро пожаловать под кат. Наиболее интересная часть в посте, пожалуй, про поиск оптимальной траектории.
Читать полностью »
Удивлен, что ссылки на Advent of Code до сих пор не видно на Хабре.
Если вкратце, то это рождественский календарь, где каждый день открывается по небольшой задачке на программирование. Сегодня пятница, и уже открыто 18 штук — отличный повод размять мозги, или потренироваться в написании программ на новом языке, до изучения которого никак не доходили руки.
Читать полностью »
После того, как вроде бы неплохой результат, полученный в предыдущей части, оказался лишь «локальным максимумом», я на некоторое время забросил задачку. Напомню условие:
«The decimal number 585 is 1001001001 in binary. It is palindromic in both bases. Find n-th palindromic number». Или, по-русски: «Десятичное число 585 в двоичной системе счисления выглядит как 1001001001. Оно является палиндромом в обеих системах счисления. Найдите n-й подобный палиндром».
Но само существование значительно более быстрого, с принципиально другой вычислительной сложностью, алгоритма не давало мне покоя, и в конце концов я вернулся к его разбору.
В конце концов, алгоритм оказался не таким уж и сложным, зато, на мой взгляд, очень красивым.
Читать полностью »
13 декабря завершился финал четвёртого ежегодного чемпионата по программированию искусственного интеллекта Russian AI Cup. В этот раз своё мастерство продемонстрировали свыше 1 600 программистов, создававшие искусственный интеллект для управления автомобилем в гонках на выживание.
По условиям чемпионата можно было использовать один из языков: C++, Java, C#, Python, Ruby или Pascal. После серии напряжённых состязаний в финал выбились 50 сильнейших. И по результатам последней «гонки» золотой приз завоевал Александр «santa324» Санталов из Москвы. В качестве награды он получил MacBook Pro. «Серебро» и «бронза» достались Антону «Angor» Гордиенко из Москвы и Юрию «SDil» Семёнову из Санкт-Петербурга, они были награждены ультрабуками MacBook Air. Не остались без призов и конкурсанты, занявшие с четвёртого по шестое места, им были вручены планшеты iPad Air 2. Поздравляем Дениса «ud1» Уткина, Сергея «SKolotienko» Колотиенко и Сергея «Karkun» Иванова! Однако остальным участникам ещё рано расслабляться, а нам рано подводить окончательные итоги чемпионата. Предстоит ещё неделя состязаний в Песочнице, и по их итогам лучшие 6 участников получат поощрительные призы от партнёров мероприятия.
Читать полностью »