From 32735264b750c91c3c18f34355987f08833ea085 Mon Sep 17 00:00:00 2001 From: Abhay Pandey <116704975+Aloneking789@users.noreply.github.com> Date: Fri, 6 Oct 2023 23:19:57 +0530 Subject: [PATCH] tower_of _hanoi.py Fixes #9936 This code prompts the user to input the number of disks and the names of the source, auxiliary, and target pegs. It also checks that the peg names are distinct. Then, it calls the tower_of_hanoi function to solve the Tower of Hanoi problem based on the user's input. --- tower_of _hanoi.py | 53 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 tower_of _hanoi.py diff --git a/tower_of _hanoi.py b/tower_of _hanoi.py new file mode 100644 index 000000000000..c1d7cedcf6fc --- /dev/null +++ b/tower_of _hanoi.py @@ -0,0 +1,53 @@ +def tower_of_hanoi(n: int, source_peg: str, auxiliary_peg: str, target_peg: str) -> None: + """ + Solve the Tower of Hanoi problem for 'n' disks. + + Args: + n (int): The number of disks to move. + source_peg (str): The name of the source peg. + auxiliary_peg (str): The name of the auxiliary peg. + target_peg (str): The name of the target peg. + + Returns: + None + + Examples: + >>> tower_of_hanoi(1, 'A', 'B', 'C') + Move disk 1 from A to C + + >>> tower_of_hanoi(3, 'A', 'B', 'C') + Move disk 1 from A to C + Move disk 2 from A to B + Move disk 1 from C to B + Move disk 3 from A to C + Move disk 1 from B to A + Move disk 2 from B to C + Move disk 1 from A to C + """ + if n == 1: + print(f"Move disk 1 from {source_peg} to {target_peg}") + return + tower_of_hanoi(n - 1, source_peg, target_peg, auxiliary_peg) + print(f"Move disk {n} from {source_peg} to {target_peg}") + tower_of_hanoi(n - 1, auxiliary_peg, source_peg, target_peg) + +# Input from the user +if __name__ == "__main__": + n = int(input("Enter the number of disks: ")) + source_peg = input("Enter the name of the source peg (e.g., 'A'): ").strip().upper() + auxiliary_peg = input("Enter the name of the auxiliary peg (e.g., 'B'): ").strip().upper() + target_peg = input("Enter the name of the target peg (e.g., 'C'): ").strip().upper() + + # Ensure peg names are distinct + while source_peg == auxiliary_peg or source_peg == target_peg or auxiliary_peg == target_peg: + print("Peg names must be distinct. Please enter again.") + source_peg = input("Enter the name of the source peg: ").strip().upper() + auxiliary_peg = input("Enter the name of the auxiliary peg: ").strip().upper() + target_peg = input("Enter the name of the target peg: ").strip().upper() + + # Call the tower_of_hanoi function with user input + tower_of_hanoi(n, source_peg, auxiliary_peg, target_peg) + +For more: + https://github.com/TheAlgorithms/Python + https://en.wikipedia.org/wiki/Tower_of_Hanoi