public Nodo getMenorQuitar(int notLikeId) { //busco un candidato con pocas flores para quitarle una var nodes = toList(); NodoComparerMenor dc = new NodoComparerMenor(); nodes.Sort(dc); //de mayor a menor List<Nodo> temp = new List<Nodo>(); //1er filtro de candidato temp.Clear(); foreach (Nodo n in nodes) if (n.consensoAlcanzado && n.flores > 0 && n.id != notLikeId) temp.Add(n); if (temp.Count > 0) return rndElement(temp); //1er filtro de candidato temp.Clear(); foreach (Nodo n in nodes) if (n.flores > 0 && n.id != notLikeId && n.nivel > 2) temp.Add(n); if (temp.Count > 0) return rndElement(temp); //2er filtro de candidato temp.Clear(); foreach (Nodo n in nodes) if (n.flores > 0 && n.id != notLikeId) temp.Add(n); if (temp.Count > 0) return rndElement(temp); return nodes[0]; }
public Nodo getMenorAgregar(int notLikeId) { //busco un candidato con pocas flores para agregarle una List<Nodo> nodes = toList(); NodoComparerMenor dc = new NodoComparerMenor(); nodes.Sort(dc); //de mayor a menor List<Nodo> temp = new List<Nodo>(); //1er filtro de candidato foreach (Nodo n in nodes) if (!n.consensoAlcanzado && n.id != notLikeId && n.nivel == 5 && n.flores < minSiPc) temp.Add(n); if (temp.Count > 0) return rndElement(temp); //1er filtro de candidato temp.Clear(); foreach (Nodo n in nodes) if (!n.consensoAlcanzado && n.id != notLikeId && n.children.Count == 0 && n.flores < minSiPc) temp.Add(n); if (temp.Count > 0) return rndElement(temp); //2er filtro de candidato temp.Clear(); foreach (Nodo n in nodes) if (!n.consensoAlcanzado && n.id != notLikeId && n.flores < minSiPc) temp.Add(n); if (temp.Count > 0) return rndElement(temp); //3er filtro de candidato temp.Clear(); foreach (Nodo n in nodes) if (n.id != notLikeId) temp.Add(n); if (temp.Count > 0) return rndElement(temp); return nodes[0]; }