Size: a a a

AI Cups Official

2021 January 07

S

SilentNox in AI Cups Official
Andrey Kostyagin
Я мало чего хранил, но unordered_map для id -> data хватило. Там оврхед ничтожный по сравнению с BFS-ами и венгерским алгоритмам. Ну ещё есть прямой доступ id->Entity (массив).
Хз, мапа каждый раз считает хэш или ищет в дереве, это все равно медленней чем прямой указатель.
источник

S

SilentNox in AI Cups Official
Ну и неудобно, я задолбался везде писать unitInfo.at(e.id)...
источник

D

Dmitriy in AI Cups Official
а мне норм, всё в массиве храрил
источник

AK

Andrey Kostyagin in AI Cups Official
Lookuut Struchkov
Ну вот поэтому я задумался, может это не моё, накидывал костылей я ровно два дня потом видеть это не мог, поэтому переписал все со стратегией с шаблонным методом для бфс, с фабрикой для юнитов
Это как ставить вопрос: моё или нет. Я вижу это полезным минимум. Иногда нужно уметь кодить быстро и невкусно (можно было одним словом написать, на политкорректность же). Победить, конечно, шансов у меня мало, потому что в остальное время я работаю архитектором, сижу с профайлером и думаю о более эффективных алгоритмах, и как прорефаторить несколько этажей абстракций, чтобы этот алгоритм использовать... Но тренировка в том, что тебе трудно и чего у тебя не бывает идёт на пользу.
источник

AK

Andrey Kostyagin in AI Cups Official
SilentNox
Хз, мапа каждый раз считает хэш или ищет в дереве, это все равно медленней чем прямой указатель.
В профайлере этого просто нет. Я заставил себя ему верить, ну и поприкидывал сложности алгоритмов. А ещё пережить if через одну инструкцию для highloader-а очень тяжело, но факт есть факт - тут if-ы через строчку, и ничего :)
источник

YD

Yury Danilchuk in AI Cups Official
Andrey Kostyagin
Я впервые участвовал и сделал вывод про себя, что РАИК - это про борьбу с внутренним перфекционизмом. Это про скорость без багов, т.е. спортивное программирование с очень небольшой добавкой промышленного программирования (код надо понимать не 2 часа, а 20 дней, но это не сильно отличается, если все 20 дней с ним живёшь). А архитектура - не нужна, не окупается. У тебя все 20 дней в голове прочные структуры, которые удерживают архитектуру, нет необходимости выражать это в коде (некому передавать, даже себе в будущем не надо, все 20 дней - это здесь и сейчас). И гибкость. Это когда видишь красивое вкусное алгоритмичное решение, а нужно смотреть игры и делать быстро 5 костылей вместо этого. А потом ещё 5, чтобы не снесло вниз конкурентами, и ещё, и ещё. Это вообще больно промышленному программисту или архитектору. Но очень полезная практика гибкости. Именно в этой задаче это было сильно заметно. И ещё задачи мало выходили за пределы простых олимпиадных алгоритмов, даже специалист в этой области GreenTea проиграл тем, кто спортсмен и много разнообразных эвристик фигачил. Очень хотелось бы уже почитать статьи, конечно. Для себя сделал выводы быть более гибким и искать простые грязные быстрые эффективные улучшения, меньше думать об архитектуре. У меня тоже по неопытности и по привычке было немало размышлений об архитектуре, и в конце концов пришёл к тому, что никакие паттерны не нужны, кроме декомпозиции (ну разве что словарик usedEntities между подсистемами передавать, если это можно назвать паттерном), да и то необязательно, потому что декомпозиция 20 дней в голове, и этого достаточно.
Алгоримты олимпиадные не так часто используются в раике, тут больше про эвристики. Есть места где возможно использовать что-то из олимпиадного, но редко.
источник

AK

Andrey Kostyagin in AI Cups Official
Yury Danilchuk
Алгоримты олимпиадные не так часто используются в раике, тут больше про эвристики. Есть места где возможно использовать что-то из олимпиадного, но редко.
Я скорее говорил о навыках писать быстро, грязно и без ошибок, держать в голове структуру больших простынок кода. Ну и алгоритмы некоторые всё-таки использовались: bfs, astar, возможно ещё что-то. Тут писали, что крутой спортсмен их пишет за минуты, а очень многие тут, например, обсуждали эти алгоритмы достаточно долго.
источник

S

SilentNox in AI Cups Official
Andrey Kostyagin
Я скорее говорил о навыках писать быстро, грязно и без ошибок, держать в голове структуру больших простынок кода. Ну и алгоритмы некоторые всё-таки использовались: bfs, astar, возможно ещё что-то. Тут писали, что крутой спортсмен их пишет за минуты, а очень многие тут, например, обсуждали эти алгоритмы достаточно долго.
У меня реализации этих алгоритмов копятся потихоньку, так что мне не всегда надо писать что-то заново. Хотя я не особо крутой, но многие так же делают.
источник

AM

Aleksey Murushkin in AI Cups Official
SilentNox
Ну и неудобно, я задолбался везде писать unitInfo.at(e.id)...
у меня было unit_by_id[id_map[x][y]] но писать не задолбался :)
источник

S

SilentNox in AI Cups Official
Aleksey Murushkin
у меня было unit_by_id[id_map[x][y]] но писать не задолбался :)
Жесть
источник

D

Dmitriy in AI Cups Official
v_units[id] 👀
источник

D

Dmitriy in AI Cups Official
или часто такое :
v_units[GM.map[c*80+r]]
источник

AM

Aleksey Murushkin in AI Cups Official
не жесть. мне было удобно зато проверять что есть в клетке и при необходимости узнать хп например
источник

AK

Andrey Kostyagin in AI Cups Official
Aleksey Murushkin
у меня было unit_by_id[id_map[x][y]] но писать не задолбался :)
я такое исключительно на 2 строчки разбиваю: const int id = id_map[x][y] (такая мапа тоже была у меня)
тоже не устаю, привычка - неважно как в коде, надо выразить просто то что в голове
источник

S

SilentNox in AI Cups Official
Aleksey Murushkin
не жесть. мне было удобно зато проверять что есть в клетке и при необходимости узнать хп например
У меня есть функция GetEntityAt(Point pos) которая получает юнита в клетке, по моему так удобней
источник

D

Dmitriy in AI Cups Official
впринципе все настройки и карты хранил глобально для доступа из любого места...
источник

YD

Yury Danilchuk in AI Cups Official
Andrey Kostyagin
Я скорее говорил о навыках писать быстро, грязно и без ошибок, держать в голове структуру больших простынок кода. Ну и алгоритмы некоторые всё-таки использовались: bfs, astar, возможно ещё что-то. Тут писали, что крутой спортсмен их пишет за минуты, а очень многие тут, например, обсуждали эти алгоритмы достаточно долго.
ну это да, но тут все же простыни кода намного больше чем обычно в олимпиадах. Грязно и без ошибок да, но тут у тебя и времени больше, дебажить есть время. Алгоритмы опять же, да можно писать быстрее, но какая разница напишешь ты тотже бфс за 20 секунд или 5 минут, когда у тебя 20 дней. Вот единственное что очень полезно из олипимадок, это умение воспринимать огромнон кол-во говнокода 🤣
источник
2021 January 08

AR

Aleksey Ropan in AI Cups Official
Переслано от Aleksey Ropan
Ой, не знаю писал ли, но постарался из архива достать результаты прошлых лет.
источник

AR

Aleksey Ropan in AI Cups Official
Переслано от Aleksey Ropan
Получилось не все контесты и не все результаты.
источник

AR

Aleksey Ropan in AI Cups Official
Переслано от Aleksey Ropan
источник