359 читателей, 46 постов
Администрация
Модераторы
Этот блог будет транслировать события из пока загадочного и непонятного для большинства мира спортивного программирования. Насколько оно загадочно и непонятно прекрасно иллюстрируют публикации такого рода.
На самом же деле спортивное программирование — это состязания с учетом времени по решению программистских задач на алгоритмы, не имеющие прикладной направленности и ведущие свое происхождение от старых добрых олимпиад по информатике. Для успешного участия в этих соревнованиях необходимо иметь познания в математике и алгоритмах, уметь программировать, а также быть очень умным, быстрым и точным.
Основные состязания по спортивному программированию в мире это:
студенческий чемпионат мира АСМ
Google Code Jam
TopCoder Open Algorithm Competition
TopCoder Collegiate Challenge
Также кодеры-спортсмены со всего мира играют на регулярных контестах на TopCoder.
У нас самыми массовыми независимыми регулярными состязаниями по спортивному программированию являются:
Открытый Кубок МГУ-CBOSS
Test-The-Best.by
В действительности в мире буквально каждый день имеет место соревнование на той или иной контест-площадке. А порою два-три, а то и четыре контеста в день. Так что спортивная жизнь у игроков очень и очень насыщенная.
Об основных событиях спортивного программирования понятным общественности языком мы и пишем в этом блоге.
На самом же деле спортивное программирование — это состязания с учетом времени по решению программистских задач на алгоритмы, не имеющие прикладной направленности и ведущие свое происхождение от старых добрых олимпиад по информатике. Для успешного участия в этих соревнованиях необходимо иметь познания в математике и алгоритмах, уметь программировать, а также быть очень умным, быстрым и точным.
Основные состязания по спортивному программированию в мире это:
студенческий чемпионат мира АСМ
Google Code Jam
TopCoder Open Algorithm Competition
TopCoder Collegiate Challenge
Также кодеры-спортсмены со всего мира играют на регулярных контестах на TopCoder.
У нас самыми массовыми независимыми регулярными состязаниями по спортивному программированию являются:
Открытый Кубок МГУ-CBOSS
Test-The-Best.by
В действительности в мире буквально каждый день имеет место соревнование на той или иной контест-площадке. А порою два-три, а то и четыре контеста в день. Так что спортивная жизнь у игроков очень и очень насыщенная.
Об основных событиях спортивного программирования понятным общественности языком мы и пишем в этом блоге.

комментарии (145)
Ну что же. Я проиграл у победителя. И играл, не побоюсь этого слова, на равных! Победитель 5 побед, у меня 4!
В следующий раз выиграю. :)
Считаю, что 5-е место не совсем правильно. :) Но поздравляю.
Верно только первое, при таких правилах. :) Т.е. сильнейший однозначно только первый. :)
Ладно. Молчу, а то начну требовать провести все без победителя и таким образом выявить второе место. :) Чтобы убрать проблемы лотерейности в первых кругах. :)
Давайте все скажем спасибо главному организатору <~P_r_i_m_a_t>!
Будем ждать второго чемпионата.
Не могу в карму проголосовать, но спасибо. :)
Не зря я писал, что стратегия разумного невмешательства рулит!
Автору безумное спасибо, масса положительных впечатлений. Сейчас буду логи смотреть.
Плюсовать тоже пока не имею права, я здесь новенький
кстати, могу попытаться дать описание своего алгоритма
(выкладывать код не хочется, да и глупо клонов плодить — а вот достаточно детальное описание идеи — с удовольствием)
У победителя, кстати, есть интересная фишка — если в него стреляют — он вместо того, чтобы убегать или просто продолжать движение — останавливается. Учитывая, что все бьют на опережение — талантливая тактика.
И по-моему останавливался так не только я.
остальные ходы до падения бомбы бежать в ту сторону на полной скорости.
Ну и это проверяется на каждом ходу. То есть он может стоять поворачиваясь, а потом рвануться вперед.
Я не уверен честно говоря, что он использовался, но мне кажется такое возможно, если выстрел идет куда-то градусов под 45 от дула робота и вперед от робота.
Если мы просто рванем вперед, то это изначально приблизит нас к бомбе и только потом мы будем уворачиваться…
помогла заработать 5 побед в первом круге (ну и другие фишки помогли)
вот только во втором круге попал с одними стояками а для них алгоритм не успел дописать (хотел динамическое подстраивание под каждую стратегию сделать)
фигово вышло что в воскресенье вели новые прикольчики а в четверг турнир — работа все время выедает
кстати спасибо за бои и плюс отдельное спасибо P_r_i_m_a_t (оба спасибо ему :)
в следующий раз боты думаю выйдут на новый уровень и научатся говорить и издавать боевые кличи: )
Но этого оказалось не достаточно :)
Кто-же бой начинал? :))))
вобщем я рад результату — вышел в полуфинал
Спасибо организатору, было очень интересно! Пойду смотреть записи.
А когда будет второй тур?
если Вы не против, я бы даже написал несколько
А то я смотрю на финал немного уныло и жалею что мой робот туда не попал.
и невозможность потестить на адекватных противниках очень огорчает. стандартный алгоритм слишком уныл, а тестировать на копии своего тоже не тру — поведение у всех одинаковое.
главная опасность — случайный разброс роботов при старте. тот, на кого срывается вся толпа — практически обречен.
когда второй чемпионат?
#@)*I@*(#@##*#&
если растояние меньше 45 я ставил стрелять на 45 и себя не заденешь (ну или чучуть) и волной накроешь пративника
заслуженное первое место за точность стрельбы и увороты
мое второе заработано стратегией — стрелял и уворачивался я очень плохо
xD что не отменяет того факта, что я довольно плохо подготовился.
if (enemies.length < 4)
// Если ещё не выбрана цель или нашей цели больше нет, выбираем цель случайным образом
// target_id — это ID цели, а не её индекс в массиве enemies (индексы могут меняться)
if (this.target_id == -1 ||
я например делал частичные увороты, не увеличивал скорость пока снаряд еще далеко, что позволяло ответить на выстрел раньше.
при отсутствии выстрелов, близко к стенкам подходить нельзя — так как не останется места для маневра.
также в режиме против двоих (в теории) бот должен был добивать сильнейшего.
что хотел, но не было времени — проверка слишком близкостоящих врагов — от них стоит отходить всегда (в этот раз бот skubent несколько раз плотно подходил, и не давал двигаться xD)
sander80.habrahabr.ru/blog/75934/
Также можно, например, уменьшить затраты на стрельбу и бег пропорционально, а начинать с 0 энергии — это позволит чаще уворачиваться и стрелять (придется выматывать противника, чтобы он не смог уворачиваться и стрелять).
Очень нехватает стрейфа xD.
* Это относится скорее к зрелищности турнира.
Напомните, что случилось с идеей текстового протокола для управления роботами?
В таких играх от языка мало что зависит.
А php и javascript вообще в данном случае мало чем отличаются. Если в моём коде добавить к переменным $, то практически будет код на php :)
Так как торнамента ждать долго — а так заходишь: а у тебя есть выбор, на ком потренироваться =)
Было бы круто, чтобы человек мог заводить несколько ботов в пределах одного аккаунта, так сказать, проверять на практике удачность того или иного изменения.
Если человек хочет устроить фуррор на турнире, ему бы помогла возможность обозначать некоторых роботов как приватных.
habrahabr.ru/blogs/sport_programming/74523/#comment_2151428
Хотя там народу скорее всего не понравились использованные слова, а не сама идея.
К тому же программисты для компьюторов и программисты системщики(для встроенных систем или вообще для систем на одной микросхеме) это как два разных непересекающихся мира.
Javascript, судя по комментам некоторые(да и про меня можно так сказать) попробовали только как раз на ботах. А будет ли так прост спец ассемблер, и что даже важнее будет ли на нём так легко писать.
Пощупали хабраварс больше тысячи (кажется даже очень сильно больше тысячи) а роботов прислало 67 человек.
Как уже сказал 4dmonster, системщики тоже хотят поиграться. :)
Думать над логикой робота, заботясь одновременно чтобы он не задумывался на минуту посреди боя — на мой взгляд ещё интереснее.
/me добавил запись в список идей
Кстати, если будете делать системный турнир, я бы посоветовал (хоть и не буду учавствовать, а буду читать/смотреть) просто взять эмулятор LEGO NTX за основу. Там остаточно возможностей для борбы роботов, а как бонус — финальные бои можно провести в реале.
В идеальном мире. Но на самом деле нужно ещё и думать о том, что эти алгоритмы будут исполняться на реальных машинах.
А с ограниченными вычислительными ресурсами ничего современного нет.
Не ожидал, что полудоделанный робот, отправленный «просто так, чтобы что-нибудь отправить» дойдет до финала. Или повезло (а значит надо проводить не 10 раундов, а больше) или я не знаю…