N-Queen Случайный перезапуск питон

Ребята, я пытаюсь решить проблему n-queen, но у меня возникли проблемы с возобновлением случайного восхождения на холм. Кто-нибудь может мне помочь? пожалуйста

Мой пока способ подняться на холм

def make_move_steepest_hill(board):
moves = {}
for col in range(len(board)):
best_move = board[col]

for row in range(len(board)):
  if board[col] == row:
    #We don't need to evaluate the current
    #position, we already know the h-value
    continue

  board_copy = list(board)
  #Move the queen to the new row
  board_copy[col] = row
  moves[(col,row)] = get_h_cost(board_copy)

  best_moves = []
  h_to_beat = get_h_cost(board)
  for k,v in moves.iteritems():
      if v < h_to_beat:
          h_to_beat = v

   for k,v in moves.iteritems():
      if v == h_to_beat:
          best_moves.append(k)

  #Pick a random best move
  if len(best_moves) > 0:
      pick = random.randint(0,len(best_moves) - 1)
      col = best_moves[pick][0]
      row = best_moves[pick][1]
      board[col] = row
return board

def get_h_cost(board):
    h = 0
    for i in range(len(board)-1):
        # Check every column we haven't already checked
            for j in range(i + 1, len(board)):
                # Queens are in the same row
                if board[i] == board[j]:
                    h += 1
                # Get the difference between the current column
                # and the check column
                offset = j - i
                # To be a diagonal, the check column value has to be equal to 
                # the current column value +/- the offset
                if board[i] == board[j] - offset or board[i] == board[j] + 
                   offset:
                   h += 1
       return h

Может кто-нибудь показать мне, как осуществить перезагрузку

Спасибо

0 ответов

Другие вопросы по тегам