示例#1
0
        public override bool Equals(object obj)
        {
            // Et1.Equals(null) retourne false
            if (obj == null)
            {
                return(false);
            }

            // Si l'objet ne peut être casté en Etat ex et1.Equals(3) ça retourne false
            Etat et = obj as Etat;

            if ((System.Object)et == null)
            {
                return(false);
            }

            // Retourne true si tous les champs sont égaux:

            int dim1 = et.tab.Length;
            int dim2 = this.tab.Length;

            if (dim1 != dim2)
            {
                return(false);
            }
            for (int i = 0; i < dim1; i++)
            {
                if (et.tab[i] != this.tab[i])
                {
                    return(false);
                }
            }
            return(true);
        }
示例#2
0
        /// <summary>
        /// Met à jour un dictionaire de données sur les elements déjà calculés
        /// Reduit de façon drastique la combinatoire environ entre 10 et 100 fs moins de calcul
        /// </summary>
        /// <param name="tab"></param>
        /// <returns></returns>
        static bool ExisteDeja(int[] tab)
        {
            //string s=string.Empty;

            //foreach (int i in tab) s += i + "#";
            //if (!Dic.ContainsKey(s))
            //{
            //    Dic[s] = 1;
            //    return false;
            //}
            if (tab.Length <= 3)
            {
                return(false);
            }
            Etat et = new Etat(tab);

            if (!Dic.ContainsKey(et))
            {
                Dic[et] = 1;
                return(false);
            }

            return(true);
        }