Advertisement
Guest User

60_1_Q2_1

a guest
Apr 19th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.87 KB | None | 0 0
  1. def next_boards(board):
  2. # ตัวอยาง board = (0,1,3,4,2,6,7,5,8)
  3. # ผลที่ได[ ((1,0,3,4,2,6,7,5,8),'R'), ((4,1,3,0,2,6,7,5,8),'D') ]
  4.     results = list()
  5.     ind=board.index(0)
  6.     if ind//3 !=0:
  7.         res=list(board)
  8.         res[ind],res[ind-3]=res[ind-3],res[ind]
  9.         results.append((tuple(res),'U'))
  10.     if ind%3 !=0:
  11.         res=list(board)
  12.         res[ind],res[ind-1]=res[ind-1],res[ind]
  13.         results.append((tuple(res),'L'))
  14.     if ind//3 !=2:
  15.         res=list(board)
  16.         res[ind],res[ind+3]=res[ind+3],res[ind]
  17.         results.append((tuple(res),'D'))
  18.     if ind%3 !=2:
  19.         res=list(board)
  20.         res[ind],res[ind+1]=res[ind+1],res[ind]
  21.         results.append((tuple(res),'R'))
  22.    
  23.     return sorted(results) # ตอง sort ใหเปนระเบียบ
  24. command = input().strip()
  25. start_board = tuple([int(c) for c in list(input().strip())])
  26. if command == '1':
  27.     print(next_boards(start_board))
  28. elif command == '2':
  29.     pendings = [ (start_board , "") ]
  30.     while len(pendings) > 0:
  31.         (current_board , moves) = pendings.pop(0)
  32. # (current_board,moves) = ( (0,1,3,4,2,6,7,5,8), 'LU' )
  33.         if current_board == (1,2,3,4,5,6,7,8,0):
  34.             print(moves)
  35.             break
  36.         results = next_boards(current_board)
  37. # results = [ ((1,0,3,4,2,6,7,5,8),'R'), ((4,1,3,0,2,6,7,5,8),'D') ]
  38.         new_boards_and_moves = [(b,moves+direction) for (b,direction) in results]
  39. # new_boards_and_moves = [((1,0,3,4,2,6,7,5,8),'LUR'), ((4,1,3,0,2,6,7,5,8),'LUD')]
  40. # นำแตละ tuple ใน new_boards_and_moves ไปตอทาย pendings
  41. # pendings = [ เก็บ tuples มากมาย ]
  42.         for e in new_boards_and_moves:
  43.             pendings.append(e)
  44. # pendings = [ เก็บ tuples มากมาย , ((1,0,3,4,2,6,7,5,8),'LUR'), ((4,1,3,0,2,6,7,5,8),
  45. # 'LUD')]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement