Programa para la Torre de Hanoi

Tower of Hanoi es un rompecabezas matemático donde tenemos tres varillas y n discos. El objetivo del rompecabezas es mover toda la pila a otra barra, obedeciendo las siguientes reglas simples: 

  1. Solo se puede mover un disco a la vez.
  2. Cada movimiento consiste en tomar el disco superior de una de las pilas y colocarlo encima de otra pila, es decir, un disco solo se puede mover si es el disco superior de una pila.
  3. Ningún disco puede colocarse encima de un disco más pequeño.

Acercarse : 

C++

// C++ recursive function to 
// solve tower of hanoi puzzle 
#include <bits/stdc++.h>
using namespace std;
  
void towerOfHanoi(int n, char from_rod,
                    char to_rod, char aux_rod) 
{ 
    if (n == 0) 
    {
        return; 
    } 
    towerOfHanoi(n - 1, from_rod, aux_rod, to_rod); 
    cout << "Move disk " << n << " from rod " << from_rod <<
                                " to rod " << to_rod << endl; 
    towerOfHanoi(n - 1, aux_rod, to_rod, from_rod); 
} 
  
// Driver code
int main() 
{ 
    int n = 4; // Number of disks 
    towerOfHanoi(n, 'A', 'C', 'B'); // A, B and C are names of rods 
    return 0; 
} 
  
// This is code is contributed by rathbhupendra

Java

// JAVA recursive function to 
// solve tower of hanoi puzzle 
import java.util.*;
import java.io.*;
import java.math.*;
class GFG
{
static void towerOfHanoi(int n, char from_rod,
                    char to_rod, char aux_rod) 
{ 
    if (n == 0) 
    {
        return; 
    } 
    towerOfHanoi(n - 1, from_rod, aux_rod, to_rod); 
    System.out.println("Move disk "+ n + " from rod " + 
                       from_rod +" to rod " + to_rod ); 
    towerOfHanoi(n - 1, aux_rod, to_rod, from_rod); 
} 
  
// Driver code
public static void  main(String args[]) 
{ 
    int n = 4; // Number of disks 
    towerOfHanoi(n, 'A', 'C', 'B'); // A, B and C are names of rods 
} 
}
  
// This code is contributed by jyoti369

Python3

# Recursive Python function to solve tower of hanoi
  
def TowerOfHanoi(n , from_rod, to_rod, aux_rod):
    if n == 0:
        return
    TowerOfHanoi(n-1, from_rod, aux_rod, to_rod)
    print("Move disk",n,"from rod",from_rod,"to rod",to_rod)
    TowerOfHanoi(n-1, aux_rod, to_rod, from_rod)
          
# Driver code
n = 4
TowerOfHanoi(n, 'A', 'C', 'B') 
# A, C, B are the name of rods
  
# Contributed By Harshit Agrawal

C#

// C# recursive program to solve tower of hanoi puzzle
using System;
class GFG
{
    static void towerOfHanoi(int n, char from_rod, char to_rod, char aux_rod)
    {
        if (n == 0)
        {
            return;
        }
        towerOfHanoi(n-1, from_rod, aux_rod, to_rod);
        Console.WriteLine("Move disk " + n + " from rod " +  
                          from_rod + " to rod " + to_rod);
        towerOfHanoi(n-1, aux_rod, to_rod, from_rod);
    }
      
    //  Driver method
    public static void Main(String []args)
    {
        int n = 4; // Number of disks
        towerOfHanoi(n, 'A', 'C', 'B');  // A, B and C are names of rods
    }
}
  
//This code is contributed by shivanisinghss2110

PHP

<?php
  
// Tower of Hanoi (n-disk) algorithm in PHP with Display of Pole/rod 
// Contents the 3 poles representation
$poles = array(array(), array(), array());
  
function TOH($n, $A="A", $B="B", $C="C"){
      
    if ($n > 0){
        TOH($n-1, $A, $C, $B);
        echo "Move disk from rod $A to rod $C \n";
        move($A, $C);
        dispPoles();
        TOH($n-1, $B, $A, $C);
    }
    else {
        return;
    }
}
  
function initPoles($n){
    global $poles;
  
    for ($i=$n; $i>=1; --$i){
        $poles[0][] = $i;
    }
}
  
  
function move($source, $destination){
    global $poles;
      
    // get source and destination pointers
    if ($source=="A") $ptr1=0;
    elseif ($source=="B") $ptr1 = 1;
    else $ptr1 = 2;
      
    if ($destination=="A") $ptr2 = 0;
    elseif ($destination=="B") $ptr2 = 1;
    else $ptr2 = 2;
      
    $top = array_pop($poles[$ptr1]);
    array_push($poles[$ptr2], $top);
}
  
function dispPoles(){  
    global $poles;
    echo "A: [".implode(", ", $poles[0])."] ";
    echo "B: [".implode(", ", $poles[1])."] ";
    echo "C: [".implode(", ", $poles[2])."] ";
    echo "\n\n";
}
  
$numdisks = 4;
initPoles($numdisks);
echo "Tower of Hanoi Solution for $numdisks disks: \n\n";
dispPoles();
TOH($numdisks);
  
// This code is contributed by ShreyakChakraborty
?>

Javascript

<script>
// javascript recursive function to 
// solve tower of hanoi puzzle 
function towerOfHanoi(n, from_rod,  to_rod,  aux_rod)
{
        if (n == 0)
        {
            return;
        }
        towerOfHanoi(n - 1, from_rod, aux_rod, to_rod);
        document.write("Move disk " + n + " from rod " + from_rod +
        " to rod " + to_rod+"<br/>");
        towerOfHanoi(n - 1, aux_rod, to_rod, from_rod);
    }
  
    // Driver code
    var n = 4; // Number of disks
    towerOfHanoi(n, 'A', 'C', 'B'); // A, B and C are names of rods
  
// This code is contributed by gauravrajput1
</script>

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *