예제 #1
0
        public void GetWordsForRegex()
        {
            List <string> words = new List <string>()
            {
                "spin", "span", "spit", "cats", "boot"
            };

            AppProperties props = new AppProperties()
            {
                StartWord         = "spin",
                EndWord           = "spot",
                WordList          = words,
                MismatchThreshold = 2
            };

            List <Node> nodes = _wordFilter.GetWordsForRegex("sp\\wn|spi\\w", props, new Node()
            {
                Word = "spin"
            });

            nodes.OrderBy(x => x.Word);

            Assert.IsTrue(nodes.Count == 2);
            Assert.AreEqual(nodes[0].Word, "span");
            Assert.AreEqual(nodes[1].Word, "spit");
        }
예제 #2
0
        /// <summary>
        /// process current Node list and determine if end word reached
        /// </summary>
        /// <param name="currentNodes"></param>
        /// <returns>true if goal reached</returns>
        public bool ProcessNodes(List <Node> currentNodes, AppProperties props)
        {
            foreach (Node n in currentNodes)
            {
                if (n.Word == props.EndWord)
                {
                    FireCompleteEvent(new PuzzleEventArgs(n));
                    return(true);
                }

                var regex = _wordUtility.GetWordSearchRegex(n.Word, props.EndWord);
                n.ChildNodes = _wordFilter.GetWordsForRegex(regex, props, n);
            }

            return(false);
        }