示例#1
0
        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]);
        }
示例#2
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]);
        }