private Listas EvaluarLista(Listas cavidades, Dictionary <string, int> parametros) { if (cavidades.NoEvaluadas.Count > 0 && cavidades.NoEvaluadas[0].Valor == parametros.ElementAt(0).Value) { if (cavidades.Evaluadas == null) { cavidades.Evaluadas = new List <Cavidad>(); } cavidades.NoEvaluadas[0].Tipo = parametros.ElementAt(0).Key; cavidades.Evaluadas.Add(cavidades.NoEvaluadas[0]); cavidades.NoEvaluadas.RemoveAt(0); parametros.Remove(parametros.ElementAt(0).Key); if (cavidades.NoEvaluadas.Count > 0) { EvaluarLista(cavidades, parametros); } } else { var sum = 0; var fixedSize = cavidades.NoEvaluadas.ToArray(); foreach (var item in fixedSize) { sum = sum + item.Valor; item.Tipo = parametros.ElementAt(0).Key; cavidades.Evaluadas.Add(item); cavidades.NoEvaluadas.Remove(item); if (sum == parametros.ElementAt(0).Value) { parametros.Remove(parametros.ElementAt(0).Key); EvaluarLista(cavidades, parametros); break; } } } return(cavidades); }
private void button1_Click(object sender, EventArgs e) { #region Cavidades Listas listas = new Listas(); listas.NoEvaluadas = new List <Cavidad>(); listas.Evaluadas = new List <Cavidad>(); Cavidad c = new Cavidad(); c.Nombre = "C1"; c.Valor = 25; listas.NoEvaluadas.Add(c); c = new Cavidad(); c.Nombre = "C2"; c.Valor = 25; listas.NoEvaluadas.Add(c); c = new Cavidad(); c.Nombre = "C3"; c.Valor = 25; listas.NoEvaluadas.Add(c); c = new Cavidad(); c.Nombre = "C4"; c.Valor = 25; listas.NoEvaluadas.Add(c); c = new Cavidad(); c.Nombre = "C5"; c.Valor = 25; listas.NoEvaluadas.Add(c); c = new Cavidad(); c.Nombre = "C6"; c.Valor = 25; listas.NoEvaluadas.Add(c); c = new Cavidad(); c.Nombre = "C7"; c.Valor = 25; listas.NoEvaluadas.Add(c); c = new Cavidad(); c.Nombre = "C8"; c.Valor = 25; listas.NoEvaluadas.Add(c); c = new Cavidad(); c.Nombre = "C9"; c.Valor = 50; listas.NoEvaluadas.Add(c); c = new Cavidad(); c.Nombre = "C10"; c.Valor = 50; listas.NoEvaluadas.Add(c); #endregion #region TiposCrudos Dictionary <string, int> parametros = new Dictionary <string, int>(); parametros.Add("Maya", 100); parametros.Add("Istmo", 100); parametros.Add("Olmeca", 100); #endregion Listas resultado = EvaluarLista(listas, parametros); }