private IEnumerable <(Vec candidate, Vec nearPosition)> OrderCandidates(HashSet <Vec> candidates)
 {
     foreach (var candidate in candidatesOrdering.Order(candidates, bot.Position))
     {
         var nearPositions = candidate.GetNears().Where(n => n.IsInCuboid(state.Matrix.R));
         foreach (var nearPosition in nearPositions.OrderBy(p => p.MDistTo(bot.Position)))
         {
             if (oracle.CanFill(candidate, nearPosition))
             {
                 yield return(candidate, nearPosition);
             }
         }
     }
 }
        private IEnumerable <(Vec candidate, Vec nearPosition)> OrderCandidates(int index, HashSet <Vec> candidates)
        {
            var pos = bots[index].Position;

            foreach (var candidate in candidatesOrdering.Order(candidates, pos))
            {
                var nearPositions = candidate.GetNears().Where(n => n.IsInCuboid(R));
                foreach (var nearPosition in nearPositions.OrderBy(p => p.MDistTo(pos)))
                {
                    if (oracle.CanFill(candidate, nearPosition))
                    {
                        yield return(candidate, nearPosition);
                    }
                }
            }
        }
Пример #3
0
 private IEnumerable <(Vec candidate, Vec nearPosition)> OrderCandidates(int bot, HashSet <Vec> candidates)
 {
     foreach (var candidate in candidatesOrdering.Order(candidates, pos[bot]))
     {
         var nearPositions = candidate.GetNears().Where(n => n.IsInCuboid(R) && IsInBotRange(n, bot));
         foreach (var nearPosition in nearPositions.OrderBy(p => p.MDistTo(pos[bot])))
         {
             if (oracle.CanFill(candidate, nearPosition))
             {
                 A++;
                 yield return(candidate, nearPosition);
             }
             B++;
         }
     }
 }