Diferencia entre revisiones de «Torres de Hanói»

Contenido eliminado Contenido añadido
Sin resumen de edición
m Revertidos los cambios de 190.172.134.46 (disc.) a la última edición de Galandil
Línea 33:
# hanoi (auxiliar, origen, destino)          //mover todas las fichas restantes, {0...n-1}, encima de la ficha grande (n)
# terminar
 
==== C++ ====
<source lang="cpp">/*
{Pre: discos > 1 ^ discos = número de discos ^ ini,dest,aux = caracteres que identifiquen las torres}
{Post: Se escribe por el canal estándar de salida los movimientos a realizar, indicados a partir de
los caracteres que identifican las torres, para llevar todos los discos desde la torre inicial
a la de destino}
*/
void hanoi(int discos, char ini, char dest, char aux) {
if (discos == 1) cout << ini << " --> " << dest << endl;
else {
hanoi(discos - 1, ini, aux, dest);
cout << ini << " --> " << dest << endl;
hanoi(discos - 1, aux, dest, ini);
}
}
 
/*
Ejemplo de función que llama automáticamente a hanoi(int, char, char, char) solo dándole el número de discos
{Pre: discos > 1}
{Post: Se escribe por el canal estándar de salida los movimientos a realizar para llevar todos los discos
desde la torre de inicio hasta la de destino. Las torres serán identificadascomo A B C siendo la inicial A
y la de destino C}
*/
void hanoi(int discos) {
hanoi(discos, 'A', 'C', 'B');
}</source>
 
==== Java ====
<source lang="cpp">
import java.util.*;
 
public class Hanoi {
 
public static void main(String args[]){
int n;
Scanner sc=new Scanner(System.in);
System.out.print("Escriba el número de discos en la torre de hanoi: ");
n=sc.nextInt();
while(n<0){
System.out.print("Error, reescriba el número de discos en la torre: ");
n=sc.nextInt();
}
algoritmoHanoi(n,"Primera Torre","Segunda Torre","Tercera Torre");
}
public static void algoritmoHanoi(int n, String from, String temp, String to) {
if (n == 0) return;
algoritmoHanoi(n-1, from, to, temp);
System.out.println("Mover disco " + n + " de " + from + " a " + to);
algoritmoHanoi(n-1, temp, from, to);
}
 
}
</source>
 
 
==== Prolog ====