input: Write a function to evaluate the board state for a given action in a tic-tac-toe game.
  assert evaluate_board(np.array([[0,0,0],[0,0,0],[0,0,0]]), 'right') == 0.0
  assert evaluate_board(np.array([[1,1,0],[0,0,0],[0,0,0]]), 'left') > 0
  assert evaluate_board(np.array([[1,1,1],[0,0,0],[0,0,0]]), 'down') == 100.7
output: import numpy as np
  
  def evaluate_board(board, action):
      score = 0.0
      
      # Check rows
      for row in board:
          if np.array_equal(row, [1, 1, 1]):
              score += 100.7
          elif np.array_equal(row, [2, 2, 2]):
              score -= 100.7
          elif np.array_equal(row[:2], [1, 1]) and row[2] == 0:
              score += 10
          elif np.array_equal(row[:2], [2, 2]) and row[2] == 0:
              score -= 10
      
      # Check columns
      for col in range(3):
          if np.array_equal(board[:, col], [1, 1, 1]):
              score += 100.7
          elif np.array_equal(board[:, col], [2, 2, 2]):
              score -= 100.7
          elif np.array_equal(board[:2, col], [1, 1]) and board[2, col] == 0:
              score += 10
          elif np.array_equal(board[:2, col], [2, 2]) and board[2, col] == 0:
              score -= 10
      
      # Check diagonals
      if np.array_equal(board.diagonal(), [1, 1, 1]):
          score += 100.7
      elif np.array_equal(board.diagonal(), [2, 2, 2]):
          score -= 100.7
      elif np.array_equal(board.diagonal()[:2], [1, 1]) and board.diagonal()[2] == 0:
          score += 10
      elif np.array_equal(board.diagonal()[:2], [2, 2]) and board.diagonal()[2] == 0:
          score -= 10
      
      if np.array_equal(np.fliplr(board).diagonal(), [1, 1, 1]):
          score += 100.7
      elif np.array_equal(np.fliplr(board).diagonal(), [2, 2, 2]):
          score -= 100.7
      elif np.array_equal(np.fliplr(board).diagonal()[:2], [1, 1]) and np.fliplr(board).diagonal()[2] == 0:
          score += 10
      elif np.array_equal(np.fliplr(board).diagonal()[:2], [2, 2]) and np.fliplr(board).diagonal()[2] == 0:
          score -= 10
      
      return score