public void unir(ConjuntoCuadrado conjunto1, ConjuntoCuadrado conjunto2) { List <Cuadro> visitados = new List <Cuadro>(); List <Posicion> posiciones1 = new List <Posicion>(); List <Posicion> posiciones2 = new List <Posicion>(); Cuadro cuadroAux = new Cuadro(); Posicion posicionAux = new Posicion(); posiciones1 = conjunto1.listaPosiciones(); posiciones2 = conjunto2.listaPosiciones(); foreach (Posicion lugar in posiciones1) { Cuadro cuadro = new Cuadro(); cuadro = conjunto1.getPrincipal().buscarCoordenadas(lugar, visitados, cuadroAux); posicionAux.setX(cuadro.getPosicion().getX()); posicionAux.setY(cuadro.getPosicion().getY() + 1); if (conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux) != null) { visitados.Clear(); cuadro.getEnlaceVecino().setVecinoArriba(conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux)); visitados.Clear(); conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux).getEnlaceVecino().setVecinoAbajo(cuadro); } visitados.Clear(); posicionAux.setX(cuadro.getPosicion().getX()); posicionAux.setY(cuadro.getPosicion().getY() - 2); if (conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux) != null) { visitados.Clear(); cuadro.getEnlaceVecino().setVecinoAbajo(conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux)); visitados.Clear(); conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux).getEnlaceVecino().setVecinoArriba(cuadro); } visitados.Clear(); posicionAux.setX(cuadro.getPosicion().getX() + 1); posicionAux.setY(cuadro.getPosicion().getY() + 1); if (conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux) != null) { visitados.Clear(); cuadro.getEnlaceVecino().setVecinoDerecha(conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux)); visitados.Clear(); conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux).getEnlaceVecino().setVecinoIzquierda(cuadro); } visitados.Clear(); posicionAux.setX(cuadro.getPosicion().getX() - 2); posicionAux.setY(cuadro.getPosicion().getY()); if (conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux) != null) { visitados.Clear(); cuadro.getEnlaceVecino().setVecinoIzquierda(conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux)); visitados.Clear(); conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux).getEnlaceVecino().setVecinoDerecha(cuadro); } visitados.Clear(); } }
static void Main(string[] args) { Console.WriteLine("Hola"); FichaSudoku ficha = new FichaSudoku(); ConjuntoCuadrado aux = new ConjuntoCuadrado(); aux = (ConjuntoCuadrado)ficha.getForma(); Console.WriteLine(aux.getTamano() + " Tamano"); List <Cuadro> visitados = new List <Cuadro>(); aux.getPrincipal().recorrer(aux.getTamano(), 1, visitados); Entero aux2 = (Entero)ficha.getContenido(); foreach (DictionaryEntry elemento in aux2.getContenidoCuadro()) { Console.WriteLine("Indice: " + elemento.Key + " Contenido: " + elemento.Value); } visitados.Clear(); for (int i = 0; i < aux.getTamano(); i++) { Cuadro cuadro = new Cuadro(); Console.WriteLine(aux.getPrincipal().buscarCuadro(i, visitados, cuadro).getIndice() + " Indice"); visitados.Clear(); Console.WriteLine(aux.getPrincipal().buscarCuadro(i, visitados, cuadro).getPosicion().getX() + " X"); visitados.Clear(); Console.WriteLine(aux.getPrincipal().buscarCuadro(i, visitados, cuadro).getPosicion().getY() + " Y"); visitados.Clear(); } visitados.Clear(); //Console.WriteLine(aux.getPrincipal().buscarCuadro(aux.getTamano(),visitados).getIndice()+ " Indice tamano"); /*List<int> encontrados = new List<int>(); * List<Cuadro> visi = new List<Cuadro>(); * * for(int i = 1; i <= aux.getTamano();i++){ * Cuadro cuadro = new Cuadro(); * Console.WriteLine("Fila: "+i); * aux.getPrincipal().buscarCuadro(i,visitados,cuadro).recorrerFila(encontrados,visi).ForEach(Console.WriteLine); * visitados.Clear(); * encontrados.Clear(); * visi.Clear(); * } * * for(int i = 1; i <= aux.getTamano();i++){ * Cuadro cuadro = new Cuadro(); * Console.WriteLine("Columna: "+i); * aux.getPrincipal().buscarCuadro(i,visitados,cuadro).recorrerColumna(encontrados,visi).ForEach(Console.WriteLine); * visitados.Clear(); * encontrados.Clear(); * visi.Clear(); * }*/ }
public FichaSudoku() { ConjuntoCuadrado conjuntoCuadrado = new ConjuntoCuadrado(); RestriccionSudoku restriccionSudoku = new RestriccionSudoku(); Entero entero = new Entero(); conjuntoCuadrado.generarCuadro(); this.setForma(conjuntoCuadrado); entero.llenar(restriccionSudoku, conjuntoCuadrado); this.setContenido(entero); }
public void llenar(RestriccionSudoku c, ConjuntoCuadrado conjunto) { Random r = new Random(); List <int> listaAux = new List <int>(); List <int> encontrados = new List <int>(); List <Cuadro> visitados = new List <Cuadro>(); int aux, i = 0; while (i < conjunto.getTamano()) { Cuadro cuadro = new Cuadro(); aux = r.Next(9); visitados.Clear(); if (c.condicionContenido(aux, conjunto.getPrincipal().buscarCuadro(i + 1, visitados, cuadro)) && aux != 0) { this.contenidoCuadro.Add(i, aux); i++; } visitados.Clear(); } }
public void llenar(RestriccionSudoku c, ConjuntoCuadrado conjunto) { Random r = new Random(); List <int> listaAux = new List <int>(); List <int> encontrados = new List <int>(); List <Cuadro> visitados = new List <Cuadro>(); int aux, i = 0; int aux2 = 0; int aux3 = 0; while (i < conjunto.getTamano()) { Cuadro cuadro = new Cuadro(); aux2 = conjunto.getPrincipal().buscarCuadro(i, visitados, cuadro).recorrerFila(encontrados, visitados).Count; visitados.Clear(); aux3 = conjunto.getPrincipal().buscarCuadro(i, visitados, cuadro).recorrerColumna(listaAux, visitados).Count; if (aux2 < aux3) { aux = r.Next(aux2); } else if (aux2 > aux3) { aux = r.Next(aux3); } else { aux = r.Next(aux3); } aux = r.Next(aux3); visitados.Clear(); if (c.condicionContenido(aux, conjunto.getPrincipal().buscarCuadro(i + 1, visitados, cuadro)) && aux != 0) { this.contenidoCuadro.Add(i, aux); i++; } visitados.Clear(); } }
public void vincularVecinos(ConjuntoCuadrado conjunto1, ConjuntoCuadrado conjunto2, int i) { List <Cuadro> visitados = new List <Cuadro>(); List <Posicion> posiciones1 = new List <Posicion>(); List <Posicion> posiciones2 = new List <Posicion>(); Cuadro cuadroAux = new Cuadro(); Cuadro cuadro1 = new Cuadro(); Cuadro cuadro2 = new Cuadro(); bool puedeUnir = true; cuadro1 = conjunto1.getPrincipal().buscarCuadro(i, visitados, cuadroAux); visitados.Clear(); cuadro2 = conjunto2.getPrincipal().buscarCuadro(i, visitados, cuadroAux); visitados.Clear(); posiciones1 = conjunto1.listaPosiciones(); posiciones2 = conjunto2.listaPosiciones(); if (cuadro1.getEnlaceConjunto().getArriba() == null && cuadro2.getEnlaceConjunto().getAbajo() == null) { foreach (Posicion lugar in posiciones2) { lugar.setY(lugar.getY() + 1); } foreach (Posicion lugar in posiciones2) { if (posiciones1.Contains(lugar)) { puedeUnir = false; } } if (puedeUnir) { this.unir(conjunto1, conjunto2); } foreach (Posicion lugar in posiciones2) { lugar.setY(lugar.getY() - 1); } } else if (cuadro1.getEnlaceConjunto().getAbajo() == null && cuadro2.getEnlaceConjunto().getArriba() == null) { foreach (Posicion lugar in posiciones2) { lugar.setY(lugar.getY() - 1); } foreach (Posicion lugar in posiciones2) { if (posiciones1.Contains(lugar)) { puedeUnir = false; } } if (puedeUnir) { this.unir(conjunto1, conjunto2); } foreach (Posicion lugar in posiciones2) { lugar.setY(lugar.getY() + 1); } } else if (cuadro1.getEnlaceConjunto().getDerecha() == null && cuadro2.getEnlaceConjunto().getIzquierda() == null) { foreach (Posicion lugar in posiciones2) { lugar.setX(lugar.getX() + 1); } foreach (Posicion lugar in posiciones2) { if (posiciones1.Contains(lugar)) { puedeUnir = false; } } if (puedeUnir) { this.unir(conjunto1, conjunto2); } foreach (Posicion lugar in posiciones2) { lugar.setX(lugar.getX() - 1); } } else if (cuadro1.getEnlaceConjunto().getIzquierda() == null && cuadro2.getEnlaceConjunto().getDerecha() == null) { foreach (Posicion lugar in posiciones2) { lugar.setX(lugar.getX() - 1); } foreach (Posicion lugar in posiciones2) { if (posiciones1.Contains(lugar)) { puedeUnir = false; } } if (puedeUnir) { this.unir(conjunto1, conjunto2); } foreach (Posicion lugar in posiciones2) { lugar.setX(lugar.getX() + 1); } } }