Esempio n. 1
0
        public void FindPath_FindsTheLongestPath(string passcode, int expected)
        {
            var pathFinder = new LongestPathFinder(new SquareShapedRoomsBuilder().Create());

            var actual = pathFinder.Find(passcode).MovesSoFar.Count();

            Assert.Equal(expected, actual);
        }
Esempio n. 2
0
        public List <SearchResultState> GetWay(SearchParameters parameters)
        {
            LastSearchParameters = parameters;

            // remove unuse items
            parameters.StartState.Items.RemoveAll(item => !item.BasicItem.InUse || !item.BasicItem.IsProhibiting);

            var stopwatch = Stopwatch.StartNew();

            IPathFinder pathFinder = null;

            // TODO: Add mapping
            switch (parameters.Algorithm)
            {
            case SearchAlgorithm.Bfs:
                pathFinder = new LongestPathFinder(new BfsPathStateGenerator());
                break;

            case SearchAlgorithm.Dfs:
                pathFinder = new LongestPathFinder(new DfsPathStateGenerator(false));
                break;

            case SearchAlgorithm.RandomDfs:
                pathFinder = new LongestPathFinder(new DfsPathStateGenerator(true));
                break;

            case SearchAlgorithm.DiscoverNewParagraph:
                pathFinder = new BasePathFinder(new BfsPathStateGenerator(), new DiscoverNewParagraphPathFormator(m_Paragraphs));
                break;
            }

            var result = pathFinder.FindPath(parameters.StartState, m_Edges);

            stopwatch.Stop();

            if (result != null)
            {
                HandleNewPath(result);
                LastGeneratedWay = result;
            }

            return(result);
        }