コード例 #1
0
        // This need not be the case to repeat same code. Can be converted into a generic method
        public CumulatedTrafficResult DeterMineWinner(List <CumulatedTrafficResult> results)
        {
            //var dataProperty = myObject.GetType().GetProperty("Data");
            //object data = dataProperty.GetValue(myObject, new object[] { });

            results = results.OrderBy(r => r.TimeForTravel).ToList();
            double lowestTimeTaken = results.First().TimeForTravel;
            List <CumulatedTrafficResult> finalResults = results.Where(result => result.TimeForTravel == lowestTimeTaken).ToList();
            CumulatedTrafficResult        finalResult  = null;

            if (finalResults.Count > 1)
            {
                finalResult = finalResults.OrderBy(r => r.Vehicle.Order).ElementAt(0);
            }
            else
            {
                finalResult = finalResults.Single();
            }
            return(finalResult);
        }
コード例 #2
0
        public static void InitializeForProblem2Scenario2AndPrintResults()
        {
            Traffic traffic = new Traffic(new List <Weather>()
            {
                sunny, windy, rainy
            }, new List <Vehicle>()
            {
                superCar, tuktuk, bike
            }, new List <Orbit>()
            {
                orbit1, orbit2, orbit3, orbit4
            });
            Dictionary <Orbit, int> dict = new Dictionary <Orbit, int>();

            dict[orbit1] = 5;
            dict[orbit2] = 10;
            dict[orbit3] = 20;
            dict[orbit4] = 20;
            traffic.SetCurrentState(windy, dict);
            traffic.StartingPoint = silkDorb;
            hallitharam.Order     = 1;
            rkPuram.Order         = 2;
            traffic.MandatoryDestinationsInADay = new List <Destination> {
                hallitharam, rkPuram
            };

            List <CumulatedTrafficResult> lists       = traffic.GetAllCumulatedResults();
            CumulatedTrafficResult        finalResult = traffic.DeterMineWinner(lists);

            if (finalResult != null)
            {
                Console.WriteLine(string.Format("Vehicle {0} to {1} via {2} then to {3} via {4} in time {5}", finalResult.Vehicle.Name, finalResult.WayPoint1.Name, finalResult.Orbit1.Name, finalResult.WayPoint2.Name, finalResult.Orbit2.Name, finalResult.TimeForTravel.ToString()));
            }
            else
            {
                Console.WriteLine("oops");
            }
        }