MailRuChamps / raic-2019

Russian AI Cup — artificial intelligence programming contest. Official website: http://russianaicup.ru
GNU General Public License v3.0
73 stars 45 forks source link

Go: ошибка в PlayerId #12

Closed prospero78 closed 4 years ago

prospero78 commented 4 years ago

При попытке вычислить своего игрока и чужого -- PlayerId совпадает. Причём, игроков 2, а номер 181, 193... Где-то происходит копирование указателя врага при переборе в назначенного врага. Приходится делать полную копию структуры выбранного врага и назначать при выборе PlayerId=-1

0fs commented 4 years ago

При попытке вычислить своего игрока и чужого -- PlayerId совпадает. Причём, игроков 2, а номер 181, 193... Где-то происходит копирование указателя врага при переборе в назначенного врага. Приходится делать полную копию структуры выбранного врага и назначать при выборе PlayerId=-1

А как перебираете?

iziCode commented 4 years ago

Пример на golang не работает, юнит не двигается

0fs commented 4 years ago

Пример на golang не работает, юнит не двигается

https://github.com/MailRuChamps/raic-2019/pull/18 реквест уже лежит

prospero78 commented 4 years ago

А как перебираете?

В цикле по словарю игроков. Дело не в том, как я перебираю, а в том, что использую дефолтную стратегию -- враг создаётся как указатель на игрока. И при дальнейшей работе с ним -- оказывается, что там какой-то мусор. Поэтому, приходится создавать реальную копию структуры Unit, и предварительно устанавливать её PlayerId=-1

0fs commented 4 years ago

Поэтому, приходится создавать реальную копию структуры Unit, и предварительно устанавливать её PlayerId=-1

А можно просто перебирать по-другому)

prospero78 commented 4 years ago

Как по другому? обращаться к unsafe и получать ссылку?

0fs commented 4 years ago

Как по другому? обращаться к unsafe и получать ссылку?

https://github.com/MailRuChamps/raic-2019/pull/18

kuviman commented 4 years ago

21 merged