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); }
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); } } }
public void GenerarNumeroAAdivinar() { NumeroAAdivinarPorElJugador = GeneradorDeNumero.GenerarNumeroAlAzar(); }
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; }
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]; }