Exemple #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];
        }
Exemple #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];
        }