Size: a a a

AI Cups Official

2020 December 05

bh

black hole in AI Cups Official
Алексей Baskakov
Свою лепту внесу, я вообще 1сник,java знаю основной синтаксис и страта уровня if else  сейчас на 16 месте
Научи
источник

VP

Vasily Popov in AI Cups Official
Все тлен, но дачное строительство никто не отменял
источник

LS

Lookuut Struchkov in AI Cups Official
На 16 ща питон )
источник

bh

black hole in AI Cups Official
!top
источник

🔥

🔥 Karushifâ in AI Cups Official
black hole
!top
CODECRAFT – ПЕСОЧНИЦА – РЕЗУЛЬТАТЫ

   PLAYER     SCORE
--------------------
1   GreenTea    3890
2   Romka       3676
3   Mur4ik      3646
4   Cerner      3442
5   LeeTiK      3433
6   kovi        3346
7   KateIV      3343
8   R4N4R4M4    3229
9   AlexeyK     3228
10  advokat     3205
источник

LS

Lookuut Struchkov in AI Cups Official
Алексей Baskakov
Свою лепту внесу, я вообще 1сник,java знаю основной синтаксис и страта уровня if else  сейчас на 16 месте
источник

AP

Alexander Paramonov in AI Cups Official
black hole
Позиции рабочих и так доступны, бери да заполняй карту свою
Ну, сделано как сделано... Мне просто не понятно, почему foreach по словарю возвращает ключ, при дальнейшем использовании которого в качестве ключа кидается исключение, и почему это воспроизводится только при верификации на сервере
источник

bh

black hole in AI Cups Official
Я как-то не пытался даже совать словарь в форич
источник

AK

Andrey Kuchev in AI Cups Official
Алексей Baskakov
Свою лепту внесу, я вообще 1сник,java знаю основной синтаксис и страта уровня if else  сейчас на 16 месте
if (place != 16) goto place16
источник

bh

black hole in AI Cups Official
Может переприсваевается на один ключ два значения?
источник

bh

black hole in AI Cups Official
У меня на шарпе это исключение выкидывало
источник

AP

Alexander Paramonov in AI Cups Official
Падает именно эта строчка... Если я просто её комментирую, и удаляю использование этого moveAction, то стратегия верификацию проходит
источник

bh

black hole in AI Cups Official
У тебя может точка за пределами карты проскакивает
источник

bh

black hole in AI Cups Official
Или Id = 0
источник

АB

Алексей Baskakov... in AI Cups Official
Lookuut Struchkov
На 16 ща питон )
Ладно, на 15 сейчас)
источник

bh

black hole in AI Cups Official
А, кста
источник

bh

black hole in AI Cups Official
В твоем cashedEntities что хранится?
источник

AS

Alexander Sanburn in AI Cups Official
Vasily Popov
Все тлен, но дачное строительство никто не отменял
симпатично/ розовые домики )
источник

AP

Alexander Paramonov in AI Cups Official
black hole
В твоем cashedEntities что хранится?
Значения-все Entity из PlayerView, ключи-их Id. В начале каждого тика словарь пересоздается с нуля заново
источник

VP

Vasily Popov in AI Cups Official
Alexander Paramonov
Народ, подскажите, пожалуйста, куда копать...Идей нет, что еще проверить. Пишу стратегию на C#. У меня есть словарь, в котором хранятся клетки с ресурсами, ключ-это их Id. Я в функции поиска ближайшего ресурса прохожу этот словарь через foreach, и возвращаю значение ключа наиболее подходящего элемента. После этого я пытаюсь создать MoveAction, в котором координата той клетки с ресурсами, и у меня при верификации стратегии на сервере падает с исключением KeyNotFoundException на этой строчке. В локальном раннере всё работает.
Псевдокод:
     int? GetClosestResourceId(Vec2Int builderPosition)
       {
           int minSquaredDistance = -1;
           int? answer = null;

           foreach (var cachedEntity in cachedEntities)
           {
     ...
                       answer = cachedEntity.Key;
                       minSquaredDistance = squaredDistance;
     ...
           }
           return answer;
       }
   
   
     void ProcessWorker()
     {
     ...
     int? resourceToMine = GetClosestResourceId(position);
               if (resourceToMine.HasValue)
               {
                   MoveAction move = new MoveAction(cachedEntities[resourceToMine.Value].Position, true, false);   /// < Вот тут при верификации исключение System.Collections.Generic.KeyNotFoundException: The given key '5565' was not present in the dictionary
                   AttackAction attack = new AttackAction(resourceToMine.Value, null);
                   actionsDictionary.Add(unit.entityId, new EntityAction()
                   {
                       MoveAction = move,
                       AttackAction = attack
                   });
                   unit.currentAction = CurrentAction.Mining;
               }
     }
Чудес не бывает. Если клал id, то он там и должен быть. Разве что есть код, который их удаляет. Ты точно считываешь то, что там лежит строго после записи? Что за processWorker? Многопоточности там случаем нет или она по определению запрещена?
источник