練習問題

cnt = 1

def solve(n, A, B, C):
  global cnt
  if n > 0:
    solve(n-1, A, C, B)
    if A[0]:
      disc = A[0].pop()
      print '%2d: move %d from %s to %s'%(cnt, disc, A[1], C[1])
      cnt += 1
      C[0].append(disc)
    solve(n-1, B, A, C)

def hanoi(n):
  A = (range(1, n+1)[::-1], 'source')
  B = ([], 'helper')
  C = ([], 'target')
  solve(n, A, B, C)

hanoi(4)

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS