コード例 #1
0
 //Constructor de copia
 public camino(camino valor)
 {
     ultimo    = valor.ultimo;
     inicial   = valor.inicial;
     acumulado = new List <int>(valor.acumulado);
 }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
        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);
                }
            }
        }