Пример #1
0
 private static bool CheckAllTrainsInAllTime(TrainTimeTable trainTime_Table)
 {
     for (int tick = 0; tick < trainTime_Table.GetMaxNumOfTicks(); tick++)
     {
         if (!CheckAllTrainsAtOneMoment(trainTime_Table, tick))
         {
             return(false);
         }
     }
     return(true);
 }
Пример #2
0
        private static bool CheckAllTrainsAtOneMoment(TrainTimeTable trainTime_Table, int tick)
        {
            int trainTimeTableCount = trainTime_Table.Count;

            for (int firstTrain = 0; firstTrain < trainTimeTableCount - 1; firstTrain++)
            {
                for (int secondTrain = firstTrain + 1; secondTrain < trainTimeTableCount; secondTrain++)
                {
                    if (trainTime_Table.TrainExistAtMoment(firstTrain, tick) && trainTime_Table.TrainExistAtMoment(secondTrain, tick))
                    {
                        if (!CheckTwoTrainsAtOneMoment(firstTrain, secondTrain, trainTime_Table, tick))
                        {
                            return(false);
                        }
                    }
                }
            }
            return(true);
        }
Пример #3
0
        public static TrainTimeTable Read(string stationDistancesPath, string trainsRoutesPath)
        {
            StationRoutes  stationRoutes   = StationDistancesProvider.Read(stationDistancesPath);
            TrainTimeTable trainTime_Table = new TrainTimeTable();

            string[] lines = File.ReadAllLines(trainsRoutesPath);
            foreach (string line in lines)
            {
                int[] nums  = Array.ConvertAll(line.Split(new char[] { ' ' }), int.Parse);
                Train train = new Train();
                for (int i = 0; i < nums.Length - 1; i++)
                {
                    int   lengthOfRoute = stationRoutes.FindLengthOfRoute(nums[i], nums[i + 1]);
                    Route route         = new Route(nums[i], nums[i + 1], lengthOfRoute);
                    for (int j = 0; j < lengthOfRoute; j++)
                    {
                        train.AddRoute(route);
                    }
                }
                trainTime_Table.AddTrainToAllTrains(train);
            }
            return(trainTime_Table);
        }
Пример #4
0
        public static bool Validate(string stationDistancesPath, string trainsRoutesPath)
        {
            TrainTimeTable trainTime_Table = TrainsRoutesProvider.Read(stationDistancesPath, trainsRoutesPath);

            return(CheckAllTrainsInAllTime(trainTime_Table));
        }
Пример #5
0
        private static bool CheckTwoTrainsAtOneMoment(int firstTrainNumber, int secondTrainNumber, TrainTimeTable trainTime_Table, int tick)
        {
            if (trainTime_Table.TrainAtStation(firstTrainNumber, tick) && trainTime_Table.TrainAtStation(secondTrainNumber, tick))
            {
                if (trainTime_Table.GetLastTrainRoute(firstTrainNumber, tick) == trainTime_Table.GetLastTrainRoute(secondTrainNumber, tick))
                {
                    return(false);
                }
            }


            if (trainTime_Table.TwoTrainIntersecting(firstTrainNumber, secondTrainNumber, tick))
            {
                return(false);
            }
            return(true);
        }