public bool EsUnificableCon(GeneradorDeNumero numero)
        {
            var esUnificable = true;

            for (var i = 0; i < 4; i++)
            {
                var n1     = numero.num[i];
                var n2     = num[i];
                var esUnif = true;

                if (n1.HasValue)
                {
                    if (n2.HasValue)
                    {
                        esUnif = n1.Value == n2.Value;
                    }
                    else
                    {
                        esUnif = !DigitosExcluidos.Contains(n1.Value) && !EstaElDigito(n1.Value);
                    }
                }
                else if (n2.HasValue)
                {
                    esUnif = !numero.DigitosExcluidos.Contains(n2.Value) && !numero.EstaElDigito(n2.Value);
                }

                esUnificable &= esUnif;
            }
            return(esUnificable);
        }
 public bool Equals(GeneradorDeNumero other)
 {
     if (ReferenceEquals(null, other))
     {
         return(false);
     }
     if (ReferenceEquals(this, other))
     {
         return(true);
     }
     return(other.num[0] == num[0] && other.num[1] == num[1] && other.num[2] == num[2] && other.num[3] == num[3]);
 }
        private GeneradorDeNumero GenerarNumero(IList <int> variacion)
        {
            var j         = 0;
            var resultado = new GeneradorDeNumero();

            for (var i = 0; i < 4; i++)
            {
                if (num[i] == null)
                {
                    resultado.num[i] = variacion[j];
                    j++;
                }
                else
                {
                    resultado.num[i] = num[i];
                }
            }
            return(resultado);
        }
        public GeneradorDeNumero UnificarCon(GeneradorDeNumero numero)
        {
            var numUnificado = new GeneradorDeNumero();

            for (var i = 0; i < 4; i++)
            {
                if (numero.num[i] == null)
                {
                    numUnificado.num[i] = num[i];
                }
                else
                {
                    numUnificado.num[i] = numero.num[i];
                }
            }

            numUnificado.ExcluirDigitos(numero.DigitosExcluidos.Union(DigitosExcluidos));
            return(numUnificado);
        }
Example #5
0
        public void Adivinar()
        {
            NumeroAdivinadoPorLaCompu = null;
            if (reglasDeLaCompu.Count == 0)
            {
                NumeroAdivinadoPorLaCompu = GeneradorDeNumero.GenerarNumeroAlAzar();
                CantidadDeOpciones        = 120960; //10.9.8.7   4.3.2
            }

            else
            {
                var nums = new List <GeneradorDeNumero>();
                foreach (var regla in reglasDeLaCompu)
                {
                    var numeros = regla.Generar();
                    nums = nums.Count == 0 ? new List <GeneradorDeNumero>(numeros) : Unificar(nums, numeros);
                }

                if (nums.Count > 0)
                {
                    CantidadDeOpciones = CalcularOpciones(nums);
                    var numerosNoPermitidos = reglasDeLaCompu.Select(r => r.ConvertirEnGeneradorDeNumero);
                    GeneradorDeNumero num   = null;

                    foreach (var n in nums)
                    {
                        var numerosPosibles = n.ObtenerPosibles(numerosNoPermitidos);
                        if (numerosPosibles.Count > 0)
                        {
                            num = numerosPosibles.First();
                            break;
                        }
                    }

                    NumeroAdivinadoPorLaCompu = num == null ? null : new Numero(num);
                }
            }
        }
Example #6
0
 public void GenerarNumeroAAdivinar()
 {
     NumeroAAdivinarPorElJugador = GeneradorDeNumero.GenerarNumeroAlAzar();
 }
Example #7
0
        private GeneradorDeNumero GenerarNumero(IList<int> variacion)
        {
            var j = 0;
            var resultado = new GeneradorDeNumero();

            for (var i = 0; i < 4; i++)
            {
                if (num[i] == null)
                {
                    resultado.num[i] = variacion[j];
                    j++;
                }
                else
                    resultado.num[i] = num[i];
            }
            return resultado;
        }
Example #8
0
        public GeneradorDeNumero UnificarCon(GeneradorDeNumero numero)
        {
            var numUnificado = new GeneradorDeNumero();
            for (var i = 0; i < 4; i++)
                if (numero.num[i] == null)
                    numUnificado.num[i] = num[i];
                else
                    numUnificado.num[i] = numero.num[i];

            numUnificado.ExcluirDigitos(numero.DigitosExcluidos.Union(DigitosExcluidos));
            return numUnificado;
        }
Example #9
0
        public bool EsUnificableCon(GeneradorDeNumero numero)
        {
            var esUnificable = true;
            for (var i = 0; i < 4; i++)
            {
                var n1 = numero.num[i];
                var n2 = num[i];
                var esUnif = true;

                if (n1.HasValue)
                    if (n2.HasValue)
                        esUnif = n1.Value == n2.Value;
                    else
                        esUnif = !DigitosExcluidos.Contains(n1.Value) && !EstaElDigito(n1.Value);
                else if (n2.HasValue)
                    esUnif = !numero.DigitosExcluidos.Contains(n2.Value) && !numero.EstaElDigito(n2.Value);

                esUnificable &= esUnif;
            }
            return esUnificable;
        }
Example #10
0
 public bool Equals(GeneradorDeNumero other)
 {
     if (ReferenceEquals(null, other))
         return false;
     if (ReferenceEquals(this, other))
         return true;
     return other.num[0] == num[0] && other.num[1] == num[1] && other.num[2] == num[2] && other.num[3] == num[3];
 }