private List <Dir_Palabras_Model> _ResultPalabras(string p1, string p2) { List <Dir_Palabras_Model> _listResult = new List <Dir_Palabras_Model>(); IAlfabeto alfabeto = new Alfabeto_Model(); Alfabeto_Model m = new Alfabeto_Model(); Dir_Palabras_Business _bll = new Dir_Palabras_Business(); //Recorro la palabra uno para empezar a reemplazar try { string letra = string.Empty; string letra2 = string.Empty; bool isVocal = false; string pResult = string.Empty; for (int j = 0; j < p1.Length; j++) { for (int k = j; k < p2.Length; k++) { letra = p1.Substring(j, 1); letra2 = p2.Substring(k, 1); isVocal = alfabeto.isVocal(letra); if (!isVocal) { foreach (var item in m.Consonantes) { StringBuilder sb = new StringBuilder(p1); sb[j] = char.Parse(item.ToString()); pResult = sb.ToString(); //Busco si la palabra tiene significado if (_bll.Get_Palabra(pResult, pResult.Length)) { var checklist = _listResult.Where(x => x.Palabra == pResult).ToList(); if (!(letra.Equals(letra2)) && checklist.Count == 0) { //agrego la palabra a lista resultante Dir_Palabras_Model ob = new Dir_Palabras_Model(); ob.Cant_Letras = pResult.Length; ob.Id = j + 1; ob.Palabra = pResult.ToString().Trim(); _listResult.Add(ob); } } } } else { foreach (var item in m.Vocales) { StringBuilder sb = new StringBuilder(p1); sb[j] = char.Parse(item.ToString()); pResult = sb.ToString(); if (pResult != p1) { //Busco si la palabra tiene significado if (_bll.Get_Palabra(pResult, pResult.Length)) { var checklist = _listResult.Where(x => x.Palabra == pResult).ToList(); if (!(letra.Equals(letra2)) && checklist.Count == 0) { //agrego la palabra a lista resultante Dir_Palabras_Model ob = new Dir_Palabras_Model(); ob.Cant_Letras = pResult.Length; ob.Id = j + 1; ob.Palabra = pResult.ToString().Trim(); _listResult.Add(ob); } } } } } } } return(_listResult); } catch { throw; } }
private void Btn_Accion_Click(object sender, EventArgs e) { #region Declaracion de Variables bool exitsP1 = false; bool exitsP2 = false; string _palabra1 = string.Empty; string _palabra2 = string.Empty; int val = 0; Dir_Palabras_Business _bll = new Dir_Palabras_Business(); List <Dir_Palabras_Model> _ListPalabras = new List <Dir_Palabras_Model>(); List <Dir_Palabras_Model> _ListPalabras2 = new List <Dir_Palabras_Model>(); List <Dir_Palabras_Model> _result = new List <Dir_Palabras_Model>(); #endregion //validacion de campos if (string.IsNullOrEmpty(txt_Palab_Ini.Text.ToString()) || string.IsNullOrEmpty(txt_Palab_Fin.Text.ToString())) { MessageBox.Show("Debe informar todos los campos"); } else { try { _palabra1 = txt_Palab_Ini.Text.ToString(); _palabra2 = txt_Palab_Fin.Text.ToString(); val = int.Parse(combo_cantidad.SelectedItem.ToString().Substring(0, 2)); //valido la cantidad de caracteres sea igual a la cantidad de caracteres de las palabras ingresadas. if (!(val != _palabra1.Length || val != _palabra2.Length)) { // Busco si las palabras ingresadas existen dentro de la base de datos. #region Consulta de Palabras exitsP1 = _bll.Get_Palabra(_palabra1, val); exitsP2 = _bll.Get_Palabra(_palabra2, val); #endregion //Si existen las dos palabras empiezo a hacer la logica para evaluar las palabras if (exitsP1 && exitsP2) { _ListPalabras = _ResultPalabras(_palabra1, _palabra2); //recursividad _ListPalabras2 = _ResultPalabras(_palabra2, _palabra1); _result = _ListPalabras.Concat(_ListPalabras2).OrderBy(x => x.Id).ToList(); dataGridView1.DataSource = _result; MessageBox.Show("Consultados Exitosamente.", "Exito!"); } else { dataGridView1.DataSource = null; MessageBox.Show("la palabras ingresadas No existen en el diccionario, Por favor verificar "); } } else { MessageBox.Show("la palabras ingresadas no tienen la longitud seleccionada [" + combo_cantidad.SelectedItem + "] . Por favor verificar "); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } }