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)); }
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)); }
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); }