コード例 #1
0
        public HttpResponseMessage Post()
        {
            var gridHeight  = Convert.ToInt32(getFormKeyValue("GridHeight"));
            var gridWidth   = Convert.ToInt32(getFormKeyValue("GridWidth"));
            var wordCount   = Convert.ToInt32(getFormKeyValue("wordCount"));
            var wordLengths = new List <int>();
            var words       = new List <string>();

            for (var i = 1; i <= wordCount + 1; i++)
            {
                if (!string.IsNullOrWhiteSpace(getFormKeyValue($"wordLength{i}")))
                {
                    wordLengths.Add(Convert.ToInt32(getFormKeyValue($"wordLength{i}")));
                }
                if (!string.IsNullOrWhiteSpace(getFormKeyValue($"word{i}")))
                {
                    words.Add(getFormKeyValue($"word{i}"));
                }
            }

            var model = new GridModel(gridHeight, gridWidth)
            {
                WordLengths = wordLengths
            };

            for (var i = 0; i < gridHeight; i++)
            {
                for (var x = 0; x < gridWidth; x++)
                {
                    model[i, x].Value = getFormKeyValue($"col{i}_{x}");
                }
            }
            var service = new WordsService();
            var combos  = service.GetLettersMinusWords(model, words);
            var results = new HashSet <string>();

            foreach (var combo in combos)
            {
                var result = service.GetAllCandidateWords(combo, wordLengths.Count - 1);
                if (result.Children.Any())
                {
                    foreach (var word in result.Children)
                    {
                        results.Add(word);
                    }
                }
            }
            return(Request.CreateResponse(HttpStatusCode.OK, results));
        }
コード例 #2
0
        public void TestLetters()
        {
            var letters = new GridModel(3, 3)
            {
                WordLengths = new List <int> {
                    3, 6
                }
            };

            letters[0, 0] = new CellModel(letters, 0, 0)
            {
                Value = "t"
            };
            letters[0, 1] = new CellModel(letters, 0, 1)
            {
                Value = "h"
            };
            letters[0, 2] = new CellModel(letters, 0, 2)
            {
                Value = "e"
            };
            letters[1, 0] = new CellModel(letters, 1, 0)
            {
                Value = "d"
            };
            letters[1, 1] = new CellModel(letters, 1, 1)
            {
                Value = "e"
            };
            letters[1, 2] = new CellModel(letters, 1, 2)
            {
                Value = "a"
            };
            letters[2, 0] = new CellModel(letters, 2, 0)
            {
                Value = "s"
            };
            letters[2, 1] = new CellModel(letters, 2, 1)
            {
                Value = "h"
            };
            letters[2, 2] = new CellModel(letters, 2, 2)
            {
                Value = "t"
            };

            var service = new WordsService();
            var combos  = service.GetLettersMinusWords(letters, new List <string> {
                "the"
            });

            var results = new HashSet <string>();

            foreach (var combo in combos)
            {
                var result = service.GetAllCandidateWords(combo, 1);
                if (result.Children.Any())
                {
                    foreach (var word in result.Children)
                    {
                        results.Add(word);
                    }
                }
            }

            Assert.IsTrue(results.Count > 0);
        }