コード例 #1
0
ファイル: Program.cs プロジェクト: jcmordan/luke-1
        private static void CalculateLeastWeigtPath(List<string> lines)
        {
            string[] nodes = lines[0].Split(' ');
            List<Link> nodesLinks = new List<Link>();

            if (lines.Count < 3)
            {
                Console.WriteLine("Invalid links");
                return;
            }

            for (int i = 2; i <= lines.Count - 1; i++)
            {
                if (lines[i].Trim() == "")
                {
                    break;
                }

                var linkValues = lines[i].Split(' ');
                if (linkValues.Length != 3)
                {
                    Console.WriteLine("Invalid links");
                    return;
                }

                Link newLink = new Link(linkValues[0], linkValues[1], int.Parse(linkValues[2]));
                nodesLinks.Add(newLink);
            }

            string[] targetPath = lines[1].Split(' ');
            if (targetPath.Length != 2)
            {
                Console.WriteLine("Invalid target Path");
                return;
            }

            PathsManager manager = new PathsManager(nodes, nodesLinks);
            PathResult result = manager.GetLeastWeightedPath(targetPath[0], targetPath[1]);

            if (result.Message != "")
            {
                Console.WriteLine(result.Message);
            }
            else
            {
                Console.WriteLine(string.Join(" ", result.Path));
            }

            Console.WriteLine(result.TotalWeights);
        }
コード例 #2
0
ファイル: PathsManagerTest.cs プロジェクト: jcmordan/luke-1
        public void NotSolucionTest()
        {
            string[] node = "A B C D E F G H".Split(' ');
            var links = new List<Link>() {
                new Link("A", "B", 10),
                new Link("A", "C", 15),
                new Link("C", "H", 20),
                new Link("B", "H", 15)
            };

            PathsManager manager = new PathsManager(node, links);
            var result = manager.GetLeastWeightedPath("A", "D");
            Assert.AreEqual("There is no solution for specifieds nodes!", result.Message);
        }
コード例 #3
0
ファイル: PathsManagerTest.cs プロジェクト: jcmordan/luke-1
        public void InvalidTargetPathTest()
        {
            string[] node = "A B C D E F G H".Split(' ');
            var links = new List<Link>() {
                new Link("A", "B", 10),
                new Link("A", "C", 15),
                new Link("C", "H", 20),
                new Link("B", "H", 15)
            };

            PathsManager manager = new PathsManager(node, links);
            var result = manager.GetLeastWeightedPath("A", "K");
            Assert.AreEqual("The specified target path is not valid!", result.Message);
        }
コード例 #4
0
ファイル: PathsManagerTest.cs プロジェクト: jcmordan/luke-1
        public void TestB()
        {
            string[] node = "A B C D E F G H".Split(' ');
            var links = new List<Link>() {
                new Link("A", "B", 10),
                new Link("A", "C", 15),
                new Link("C", "H", 20),
                new Link("B", "H", 15),
                new Link("C", "D", 5),
                new Link("D", "G", 25),
            };

            PathsManager manager = new PathsManager(node, links);
            var expectedResut = new PathResult(new List<string> { "A", "C", "D"}, 20);
            var result = manager.GetLeastWeightedPath("A", "D");

            Assert.AreEqual(true, expectedResut.Equals(result));
        }