Ejemplo n.º 1
0
 private static bool NeedToTrackBack(Description desc, Stack<Iteration> iterations,
     Car car, Iteration currentIteration, int maxSteps)
 {
     var needToTrackBack = iterations.Any() &&
         (
         iterations.Count >= maxSteps ||
         !desc.BoundingBox.IsInside(car.Position) ||
         IsAccSumInvalid(iterations.Count, currentIteration.SumAcc, maxSteps) ||
         IsWrongCarState(iterations.Count, car, desc, maxSteps) ||
         IsCrashWithObstacles(desc.Obstacles, iterations.PeekCheckNull()?.Line)
        /* ||
         CheckIfTrackForCrossedOldTrack(iterations, currentIteration, car)*/
         );
     return needToTrackBack;
 }
Ejemplo n.º 2
0
        private static bool CheckIfTrackForCrossedOldTrack(Stack<Iteration> iterations, Iteration currentIteration, Car currentCar)
        {
            const int skipFirst = 2;
            if (iterations.Count <= skipFirst)
            {
                return false;
            }

            var currentTrack = currentIteration.Line;
            var currentPosition = currentCar.Position;
            var result = iterations
                   .Skip(1)
                   .Any(it => FilterCheckIfTrackForCrossedOldTrack(currentTrack, it.Line, currentPosition));

            return result;
        }