Exemple #1
0
        static void Main(string[] args)
        {
            ValidatorService validatorService = new ValidatorService();
            FiltrService     filtrService     = new FiltrService();
            CitiesController citiesController = new CitiesController(validatorService, filtrService);
            FiltrData        data             = new FiltrData
            {
                Cities = new City[]
                {
                    new City {
                        Budget = 1000, Name = "Moscow", Point = new Point {
                            X = 1, Y = 1
                        }
                    },
                    new City {
                        Budget = 700, Name = "Piter", Point = new Point {
                            X = 1, Y = 2
                        }
                    },
                    new City {
                        Budget = 300, Name = "Tver", Point = new Point {
                            X = 2, Y = 1
                        }
                    }
                },
                Options = new FiltrOptions
                {
                    Iterations = 12,
                    PercentBet = 0.06
                }
            };

            citiesController.FiltrData(data);
        }
Exemple #2
0
        public IEnumerable <City> FiltrData(FiltrData filtrData)
        {
            if (!_validator.IsValid(filtrData))
            {
                throw new Exception("данные не валидны");
            }
            IEnumerable <City> result = _service.Filter(filtrData);

            return(result);
        }
Exemple #3
0
 public bool IsValid(FiltrData filterData)
 {
     Point[] allCoordinates = new Point[filterData.Cities.Count()];
     foreach (City i in filterData.Cities.ToArray())
     {
         if (IsNameValid(i) && IsBudgetValid(i) && IsPointValid(i, allCoordinates))
         {
             return(false);
         }
         allCoordinates.Append(i.Point);
     }
     return(IsOptionsValid(filterData));
 }
Exemple #4
0
        public IEnumerable <City> Filter(FiltrData filtrData)
        {
            IEnumerable <City> cities = SherchNeighbor(filtrData.Cities);

            double[] BudgetForNeighbors = new double[cities.Count()];
            for (int i = 0; i < filtrData.Options.Iterations; i++)
            {
                // отнимаем бюджет который надо отнять
                for (int count = 0; count < cities.Count(); count++)
                {
                    BudgetForNeighbors[count]       = cities.ElementAt(count).Budget / filtrData.Options.PercentBet;
                    cities.ElementAt(count).Budget -= BudgetForNeighbors[count] * cities.ElementAt(count).neighbors.Count();
                }
                cities = GiveBudget(cities, BudgetForNeighbors);
            }
            return(cities);
        }
Exemple #5
0
 private bool IsOptionsValid(FiltrData data)
 {
     return(data.Options.Iterations > 0 || data.Options.PercentBet > 0 || data.Options.PercentBet < 1);
 }