Pull to refresh

Comments 33

Как! Как вы набираете столько очков? Как убиваете всех бабочек?
Исходники всех решений будут опубликованы.
Вроде кое как охотится
image


К сожалению поиск пути не заработал с первого раза, пришлось сделать хитрость, но в тупиках много времени теряет, особенно в режиме агра на бабочку, почти нет рандома. Допилю поиск пути, охоту и отправлю.
Хоть и не доделал до конца, но все равно отправил.
Есть тупики и никак не отслеживаются падение камней и бабочек
Если успею попытаюсь добавить боту чувство безопасности от бабочек.
В любом случае интересно мозги потренировать.
Спасибо
Ещё есть время до конца завтрашнего дня.
падает камень
// падает камень, может убить
if (
	(screen.at(to) == ' ' && screen.is('falling', to.u(1)))
	|| ( screen.is('falling', to.u(2)) && screen.at(to.u(1)) == 'A' )	// шаг вниз под камнем
	|| ( screen.is('falling', to.u(2)) && screen.at(to.u(1)) == ' ' )
	
	// камень может упасть в бок
	|| ( screen.is('sidefall', to.l())
		&& screen.is('falling', to.l().u())
		&& screen.at(to.u()) == ' '
	)
	|| ( screen.is('sidefall', to.r())
		&& screen.is('falling', to.r().u())
		&& screen.at(to.u()) == ' '
	)
) {
	weight -= 200;
}

// to = объект координат в которых окажется игрок применив ход, u d l r его методы, которые создают новые координаты (как в jquery .parent().find()).
// weight = ценность или рейтинг хода.


Забавно, падение камня одно из первых что делал т.к. проваливался на первом же тесте. (--seed=1)
Бабочек решил защитить, пусть себе живут)
image
Неплохо для миролюбивого. Ещё гифку под спойлер вынести и кусочек времени секунд на пять в конце добавить в ней, где просто смотрим статичный итог, (перед стартом пару секунд тоже можно) и следующий комментарий станет гораздо лучше. )
гифку через сайт конвертировал там ограничения 30сек поэтому так получилось)))
Постараюсь тоже сегодня успеть и отправить. И тоже спасибо за конкурс, очень интересный формат писать бота для игры.
Спасибо за конкурс! Участников в этот раз мало, но вы не сдавайтесь!
На мой вкус, гораздо прикольнее предыдущего (хотя и тот конкурс был неплох). Своё решение доделать не успел (поздно статью увидел), но залипнуть на этой задачке было приятно.
Ага, у самого ещё куча идей по допиливанию, главное хоть успеть отправить что есть.
Окончательное число участников еще не озвучивалось. Сам тянул до последнего дня. И думаю, что не я один такой.
Как мой бот в сингл-процесс расправляется с картой.
1066


А с лайв запуском какая-то беда, такое ощущение что миллисекунд подумать даже и 50 нет.
На сколько ходов вперед думает?
Как получается, в районе 4-5, — там при достаточно развитой логике больше попробуй насчитай… тут и миллисекундные (без -p непредсказуемые) ограничения, и по оперативке раскидываться чревато.

Эх блин, как не хватает овертайма на денёк ещё. Эта странная синхронизация просто убивает, её бы ещё допобедить, такой азарт!

На компе с аналогом тестового проца получилось 9… Но на javascript пишу вообще в первый раз, адова нетленка получилась и где-то сидит баг… иногда дохнет зараза по-глупому. Но второй раз овертайм не дадут ;) (:

На 9 ходов — это полный перебор? Или с какой-то эвристикой?
У меня полный перебор получался на 6 ходов. Но это уже с риском пропустить ход. Полный перебор — это по 5 вариантов хода на каждом шаге — влево/вправо/вверх/вниз/стоять. Для глубины 6 уже получается 5+5^2+5^3+5^4+5^5+5^6=19530 узлов. Реально же получается меньше, так многие ходы ведут к смерти и эти ветки отсекаются, и много тупиков. Реально где-то до 5000. При охоте за бабочкой сделал глубину 7, но не совсем полный перебор. Перебирает уже до 10000 вариантов. И на каждом мне нужно было сделать копию мира и обновить ее.
Так как там 9 ходов-то получилось? ))
Перебор только при охоте на бабочек, само собой смертельные ходы сокращают общий объем. Также предполагается, что для убийства каждую клетку нужно посетить не более 2 раз (сильно сокращает варианты топтания на месте). Но копию мира не делал, обошелся одним массивом мира и списком изменяемых клеток (кругляки и бабочки), изменения которых передаются на след. ход, а на возврате откатываются. Получилось быстрее копии мира на каждом ходу. Причем под конец в гонке забил на оптимизацию, можно было б сделать и больше.
Ох! А я даже не задумался о таком приеме. Сейчас попробовал, удалось увеличить глубину с 7 до 11. Печально ((
Имел ввиду прием про посещение каждой клетки не более двух раз. А мир я сделал массивом битовых состояний. Копирование делается почти мгновенно. Выделенные массивы храню в собственном кэше для переиспользования, т.ч. их выделение тоже мгновенно и сборщик мусора лишний раз не напрягать. А откат в прежнее состояние в этом случае вообще не требуется.
Если бы дедлайн был на день позже, то всё то же самое происходило бы на день позже. Надо будет сделать график с числом решений, присланных по мере приближения к дедлайну. Собственно, все «проснулись» за два дня до него, а все полтора месяца почти ничего не происходило.
Программисту всегда одного дня не хватает ))
«Ничего не происходило» — это лишь догадка. Наверняка многие как и я просто не выкладывали решение до последнего дня. Напишите тут хотя бы сколько всего решений прислано.
Это точно, ещё как происходило. Но пока разработка идёт (в свободное время), промежуточный результат в 90% непригоден к заливке, а в остальных 10% случаев выглядит недостаточно хорошим, можно кое что важное ещё допилить и всё такое.
Можно кстати сделать вторую серию соревнования в этой игре, добавив новых фишек.

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

Или, например, как в супаплексе добавить объекты-бомбы (напомню, их там три типа: взрывающихся при падении, при активации игроком объекта-терминала, и управляемые, которые ставит сам игрок), объекты-туннели (одно и двустороннего прохода), и многое другое.

Сложность и интерес конкурса ещё в разы повышается, и у прежних наработок есть новый шанс выстрелить в изменившемся соревновании.
Ещё такая мысль — чтоб в течение основного времени конкурса «тоже что-то происходило», на промежуточных итогах можно какие-нибудь микропоощрения промежуточным победителям сообразить, наверняка сработает. :)
Нельзя ли опубликовать свежие «промежуточные результаты»?
Как только тестирование закончится.
по итогам соревнования надо устроить слет участников )))
И чтобы на слёте они пытались друг другу на голову скинуть булыжник? :-)
Или бегать как ошпаренные друг от друга, стараясь встать на место повыше ;)
Sign up to leave a comment.