public void iterativo(int n, Pila ini, Pila fin, Pila aux) { if (n != 0) { generarDiscos(n); if (n % 2 != 0) { do { mover_disco(ini, fin); mover_disco(ini, aux); mover_disco(aux, fin); }while (fin.getNumDiscos() != n); Console.WriteLine("Número de movimientos totales = " + numMovimientos.ToString()); Console.ReadLine(); } if (n % 2 == 0) { do { mover_disco(ini, aux); mover_disco(ini, fin); mover_disco(aux, fin); }while (fin.getNumDiscos() != n); Console.WriteLine("Número de movimientos totales = " + numMovimientos.ToString()); Console.ReadLine(); } } else { Console.WriteLine("No hay suficientes discos"); Console.ReadLine(); } }
/*TODO: Implementar métodos*/ public void mover_disco(Pila a, Pila b) { Disco discoAux = new Disco(); if (pilaFIN.getNumDiscos() != n || pilaAUX.getNumDiscos() != n) { if (comprobarMovimiento(a, b).Equals("C")) { return; } if (comprobarMovimiento(a, b).Equals("A")) { discoAux = a.pop(); b.push(discoAux); numMovimientos++; } else { discoAux = b.pop(); a.push(discoAux); numMovimientos++; } } }