コード例 #1
0
        public ActionResult Index(int gridHeight = 3, int gridWidth = 3)
        {
            var model = new GridModel(gridHeight, gridWidth)
            {
                WordLengths = new List <int> {
                    3
                }
            };

            if (Request.HttpMethod == "POST")
            {
                model.WordLengths = new List <int> {
                    Convert.ToInt32(Request["wordLength1"])
                };
                for (var i = 0; i < gridHeight; i++)
                {
                    var currentRow = model.Rows[i];
                    for (var n = 0; n < gridWidth; n++)
                    {
                        currentRow[n] = new CellModel(model, i, n)
                        {
                            Value = Request.Form[$"col{i}_{n}"].ToLower()
                        };
                    }
                }
                var service = new WordsService();
                var combos  = service.GetAllCandidateWords(model, 0);
                model.ValidWords.Add(combos.Children.ToList());
            }
            return(View(model));
        }
コード例 #2
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));
        }
コード例 #3
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);
        }