static void CollectWord(string word, string g, int rows, int cols) { results = new Hashtable(); gridToProcess = new ProcessedGrid(); gridToProcess.columns = cols; gridToProcess.rows = rows; gridToProcess.grid = CharGrid(g, rows, cols); gridToProcess.positions = new List <List <Vector2> >(); gridToProcess.words = new List <string>(); searchKey = word; SearchWord(searchKey); foreach (DictionaryEntry entry in results) { gridToProcess.words.Add((string)entry.Key); var wpositions = new List <Vector2> (); foreach (var v in (List <Vector2>)entry.Value) { wpositions.Add(v); } gridToProcess.positions.Add(wpositions); } }
void BuildGrid() { grid.BuildGrid(); grid.ShowGridChars(BogglingDictionary.Instance.GetRandomChars(grid.COLUMNS * grid.ROWS)); //solve grid solvedGrid = GridUtils.SolveGrid(ref BogglingDictionary.Instance.commonDictionaryWords, grid.GetGridString(), grid.ROWS, grid.COLUMNS); //select mapped words selectedWords.Clear(); mappedWords.Clear(); var wordList = solvedGrid.words.OrderByDescending(x => x.Length).ThenBy(x => x).ToList(); var num = numWords [difficulty]; if (num > wordList.Count) { num = wordList.Count; } var i = 0; while (i < num) { selectedWords.Add(wordList [i]); mappedWords.Add(new MappedWord(wordList [i].ToUpper(), difficulty)); i++; } ShowMappedWords(); }
public static ProcessedGrid SolveGrid(ref List <string> dictionary, string g, int rows, int cols) { results = new Hashtable(); Debug.Log(g); gridToProcess = new ProcessedGrid(); gridToProcess.columns = cols; gridToProcess.rows = rows; gridToProcess.grid = CharGrid(g, rows, cols); gridToProcess.positions = new List <List <Vector2> >(); gridToProcess.words = new List <string>(); var matchString = new StringBuilder(); foreach (var row in gridToProcess.grid) { foreach (var c in row) { matchString.Append(c); } } Regex Validator = new Regex(@"^[" + matchString.ToString() + "]+$"); foreach (var word in dictionary) { var length = word.Length; if (Validator.IsMatch(word)) { SearchWord(word); } } foreach (DictionaryEntry entry in results) { gridToProcess.words.Add((string)entry.Key); var wpositions = new List <Vector2> (); foreach (var v in (List <Vector2>)entry.Value) { wpositions.Add(v); } gridToProcess.positions.Add(wpositions); } return(gridToProcess); }