@@ -29,25 +29,39 @@ def add_disks(self, no_of_disks: int) -> None:
29
29
else :
30
30
raise self .__AlreadySolvedError
31
31
32
- def display (self ) -> None :
32
+ def display (self , show_title : bool = True ) -> None :
33
+ if show_title :
34
+ print ("Source - Auxiliary - Destination" )
33
35
print (self .__source_rod , end = ' - ' )
34
36
print (self .__auxiliary_rod , end = ' - ' )
35
37
print (self .__destination_rod )
36
38
37
- def __tower_of_hanoi (self , disks : int , source : Stack , destination : Stack , auxiliary : Stack ) -> None :
39
+ def __tower_of_hanoi (self , disks : int , source : Stack , destination : Stack , auxiliary : Stack ,
40
+ display_steps : bool ) -> None :
41
+ if disks == self .__no_of_disks and display_steps :
42
+ print ("Source - Auxiliary - Destination" )
38
43
if disks == 1 :
39
44
source .pop ()
40
45
destination .push ('disk 1' )
46
+ if display_steps :
47
+ self .display (False )
41
48
elif disks > 1 :
42
- self .__tower_of_hanoi (disks - 1 , source = source , destination = auxiliary , auxiliary = destination )
49
+ self .__tower_of_hanoi (disks - 1 , source = source , destination = auxiliary , auxiliary = destination ,
50
+ display_steps = display_steps )
43
51
source .pop ()
44
52
destination .push (f'disk { disks } ' )
45
- self .__tower_of_hanoi (disks - 1 , source = auxiliary , destination = destination , auxiliary = source )
53
+ if display_steps :
54
+ self .display (False )
55
+ self .__tower_of_hanoi (disks - 1 , source = auxiliary , destination = destination , auxiliary = source ,
56
+ display_steps = display_steps )
46
57
47
- def start (self ) -> None :
58
+ def solve (self , display_steps : bool = False ) -> None :
48
59
if self .__no_of_disks < 1 :
49
60
raise self .__EmptySourceRodError
50
- self .__tower_of_hanoi (len (self .__source_rod ), self .__source_rod , self .__destination_rod , self .__auxiliary_rod )
61
+ if display_steps :
62
+ print ("Steps:" )
63
+ self .__tower_of_hanoi (len (self .__source_rod ), self .__source_rod , self .__destination_rod , self .__auxiliary_rod ,
64
+ display_steps )
51
65
self .__solved = True
52
66
53
67
def reset (self ) -> None :
@@ -65,7 +79,7 @@ def reset(self) -> None:
65
79
tower .add_disks (2 )
66
80
print ("Unsolved" )
67
81
tower .display ()
68
- tower .start ( )
82
+ tower .solve ( display_steps = True )
69
83
print ("Solved" )
70
84
tower .display ()
71
85
tower .reset ()
0 commit comments