Size: a a a

AI Cups Official

2021 January 07

YD

Yury Danilchuk in AI Cups Official
Lookuut Struchkov
Что-то в этот раз после раика крепко задумался, мой ли формат соревнований вообще, сегодня начал править активацию домиков, понял что надо учесть то что те кто идут чинить не будут приносить ресурсы соответственно, если их сейчас отправить чинить, денег на постройку может не хватить, короче нужен ещё один костыль или же нужно пересмотреть архитектуру, я пошел пересматривать архитектуру и накатило уныние, учитывая что я уже наверное раз 20 это делаю. Хочется чтобы все красиво было без костылей но в рамках раика очень сложно получается учесть все детали :(
Костыли на костылях и норм
источник

ST

Sergio Tulentsev in AI Cups Official
SilentNox
Ну всех наверное не выйдет, там уже все потерялось, я думаю. А пары последних лет может быть...
в интернете ничего не теряется :)
источник

AM

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

D

Dmitriy in AI Cups Official
новые напишем
источник

D

Dmitriy in AI Cups Official
тоже мне проблема
источник

S

SilentNox in AI Cups Official
Почему компилер ругается на функции в хидере, если у них не прописан inline? Несмотря на то, что эта функция дльаше юзается только в одном cpp файле?
источник

S

SilentNox in AI Cups Official
Точнее msvc не ругается и все работает, а g++ не нравится
источник

ЕС

Егор Сергеев... in AI Cups Official
SilentNox
Почему компилер ругается на функции в хидере, если у них не прописан inline? Несмотря на то, что эта функция дльаше юзается только в одном cpp файле?
Если хеддер полключается в нескольких файлах то будет несколько одинаковых функций. Компилятор не знает, какую использовать
источник

S

SilentNox in AI Cups Official
Егор Сергеев
Если хеддер полключается в нескольких файлах то будет несколько одинаковых функций. Компилятор не знает, какую использовать
Вообще хидер не должен включаться больше одного раза же
источник

ЕС

Егор Сергеев... in AI Cups Official
Каждый файл компилится отдельно и получает эту функцию. А при линковке они перекрываются и все палает
источник

ЕС

Егор Сергеев... in AI Cups Official
Хеддер не велючается больше одного раща в рамках одного файла
источник

e

elsid in AI Cups Official
SilentNox
Вообще хидер не должен включаться больше одного раза же
Компилятор не знает в какие еще cpp-файлы включается хедер, потому что он обычно компилирует один cpp-файл за раз. Если этот хедер включается еще куда-то, а потом это вместе линкуется, будет ODR violation, что есть UB.
источник

S

SilentNox in AI Cups Official
Все ясно
источник

S

SilentNox in AI Cups Official
А если прописать инлайн то копия функции будет в каждом файле? Или она реально инлайнится?
источник

e

elsid in AI Cups Official
SilentNox
А если прописать инлайн то копия функции будет в каждом файле? Или она реально инлайнится?
копия, компилятор может инлайнить функции и без этого, а может не инлайнить и с inline
источник

AK

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

S

SilentNox in AI Cups Official
elsid
копия, компилятор может инлайнить функции и без этого, а может не инлайнить и с inline
Понял, спасибо
источник

S

SilentNox in AI Cups Official
Кстати, кто как связывает данные с юнитами? Я вот на С++ пишу, и не мог хранить прямо в Entity, потому что у меня их было несколько копий. Поэтому сначала хранил в мапе, но это неудобно, поэтому сделал внутри сущности указатель на структуру , которую держу у себя внутри стратегии.
источник

LS

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

AK

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