AlgoDesign

Towers of hanoi

1class Solution:
2    def towersOfHanoi(self, rings, pegs):
3        self.pegRings = [[i for i in range(rings, 0, -1)]] + [[] for _ in range(1, pegs)]
4        self.res = []
5        def helper(rings, fromPeg, toPeg, usePeg):
6            if rings > 0:
7                helper(rings - 1, fromPeg, usePeg, toPeg)
8                self.pegRings[toPeg].append(self.pegRings[fromPeg].pop())
9                self.res.append((fromPeg, toPeg))
10                helper(rings - 1, usePeg, toPeg, fromPeg)
11        
12        helper(rings, 0, 1, 2)
13        return self.res
14
15sol = Solution()
16print(sol.towersOfHanoi(6, 3))