//Constructor de copia public camino(camino valor) { ultimo = valor.ultimo; inicial = valor.inicial; acumulado = new List <int>(valor.acumulado); }
public void main() { //Este valor booleano controla que queden valores por leer, si no quedaran se establece a true. bool finito = false; //Clase que se encarga del guardado y carga de los caminos SaveAndLoad salvador = new SaveAndLoad(); camino actual; //Si ya existe un archivo pila, carga los caminos desde él. if (salvador.existe()) { actual = new camino(salvador.Leer("pila")); } //En caso de que no exista, añadimos las ternas válidas. else { actual = new camino(84, 63, 43); salvador.Escribe(actual.toprint(), "pila"); actual = new camino(84, 63, 62); salvador.Escribe(actual.toprint(), "pila"); actual = new camino(84, 63, 82); salvador.Escribe(actual.toprint(), "pila"); actual = new camino(83, 63, 64); salvador.Escribe(actual.toprint(), "pila"); actual = new camino(83, 63, 43); salvador.Escribe(actual.toprint(), "pila"); actual = new camino(83, 63, 62); salvador.Escribe(actual.toprint(), "pila"); actual = new camino(82, 63, 64); salvador.Escribe(actual.toprint(), "pila"); actual = new camino(82, 63, 43); salvador.Escribe(actual.toprint(), "pila"); actual = new camino(64, 63, 62); } while (!finito) { //Obtenemos los vecinos del último nodo del camino. List <int> vecinos = SacaVecinos(actual.idUltima()); //Para cada vecino, comprobamos si seria válido dentro del camino(que no este conectado con ningún nodo //ya incluido en el camino) y de ser asi, añadimos a la pila el camino anterior con este vecino válido. for (int i = 0; i < vecinos.Count; i++) { int vecinaactual = vecinos[i]; List <int> vecinasvecina = SacaVecinos(vecinaactual); bool valida = true; for (int j = 0; j < vecinasvecina.Count && valida; j++) { valida = actual.Comprueba(vecinasvecina[j]); } if (valida) { bool auxiliar = (vecinasvecina.Contains(actual.GetInicial()) && actual.getTamanio() > 1); if (auxiliar) { camino caminoauxiliar = new camino(actual); caminoauxiliar.aniade(vecinaactual); salvador.Escribe2(caminoauxiliar.toprint2(), "def"); } else { camino caminoauxiliar = new camino(actual); caminoauxiliar.aniade(vecinaactual); salvador.Escribe(caminoauxiliar.toprint(), "pila"); } } } string aux = salvador.Leer("pila"); finito = string.IsNullOrEmpty(aux); if (!finito) { actual = new camino(aux); } } }
public void main(int inicial) { bool finito = false; SaveAndLoad salvador = new SaveAndLoad(); /* * camino actual = new camino(84, 63, 43); * salvador.Escribe(actual.toprint(), "pila"); * * actual = new camino(84, 63, 62); * salvador.Escribe(actual.toprint(), "pila"); * * actual = new camino(84, 63, 82); * salvador.Escribe(actual.toprint(), "pila"); * * actual = new camino(83, 63, 64); * salvador.Escribe(actual.toprint(), "pila"); * * actual = new camino(83, 63, 43); * salvador.Escribe(actual.toprint(), "pila"); * * actual = new camino(83, 63, 62); * salvador.Escribe(actual.toprint(), "pila"); * * actual = new camino(82, 63, 64); * salvador.Escribe(actual.toprint(), "pila"); * * actual = new camino(82, 63, 43); * salvador.Escribe(actual.toprint(), "pila"); * * actual = new camino(64, 63, 62);*/ camino actual = new camino(salvador.Leer("pila")); //while (caminospendientes.Count != 0) while (!finito) { //Console.WriteLine("adios"); //Debug.Log("adios"); // List<int> vecinos = actual.GetVecinos(); List <int> vecinos = SacaVecinos(actual.idUltima()); for (int i = 0; i < vecinos.Count; i++) { int vecinaactual = vecinos[i]; List <int> vecinitas = SacaVecinos(vecinaactual); bool valida = true; for (int j = 0; j < vecinitas.Count && valida; j++) { valida = actual.Comprueba(vecinitas[j]); } if (valida) { bool auxiliar = (vecinitas.Contains(actual.GetInicial()) && actual.getTamanio() > 1); if (auxiliar) { /*****************************************/ /******************Imprimir camino***********/ // Debug.Log("asd"); camino caminoauxiliar = new camino(actual); caminoauxiliar.aniade(vecinaactual); salvador.Escribe2(caminoauxiliar.toprint2(), "def"); } else { camino caminoauxiliar = new camino(actual); caminoauxiliar.aniade(vecinaactual); salvador.Escribe(caminoauxiliar.toprint(), "pila"); // caminospendientes.Push(caminoauxiliar); } } } string aux = salvador.Leer("pila"); finito = string.IsNullOrEmpty(aux); if (!finito) { actual = new camino(aux); } } }