input: Write a function to solve a linear programming problem using the Simplex method in Python. Convert the input problem into standard form if necessary by introducing slack variables and iteratively using the Simplex algorithm to move from one vertex to the next until an optimum solution is found. The function should return the optimum solution by inspecting the values in the tableau.
  assert solve_lp_problem_using_simplex([[3, 2, 1], [2, 5, 3]], [10, 15]) == [0, 0, 2.5]
  assert solve_lp_problem_using_simplex([[1, 2, 0], [-1, 2, 4]], [2, 1]) == [1, 0.5, 0]
  assert solve_lp_problem_using_simplex([], []) == None
  assert solve_lp_problem_using_simplex([[1, 0, 0], [0, 1, 0], [0, 0, 1]], [5, 3, 2]) == [5, 3, 2]
output: def solve_lp_problem_using_simplex(A, b):
      if not A or not b:
          return None
      
      m, n = len(A), len(A[0])
      tableau = [[0] * (n + m + 1) for _ in range(m + 1)]
      
      for i in range(m):
          for j in range(n):
              tableau[i][j] = A[i][j]
          tableau[i][n + i] = 1
          tableau[i][-1] = b[i]
      
      for j in range(n):
          tableau[-1][j] = -1
      
      while True:
          pivot_col = min(range(n + m), key=lambda x: tableau[-1][x])
          if tableau[-1][pivot_col] >= 0:
              break
          
          pivot_row = min((i for i in range(m) if tableau[i][pivot_col] > 0),
                          key=lambda i: tableau[i][-1] / tableau[i][pivot_col])
          
          pivot = tableau[pivot_row][pivot_col]
          for j in range(n + m + 1):
              tableau[pivot_row][j] /= pivot
          
          for i in range(m + 1):
              if i != pivot_row:
                  factor = tableau[i][pivot_col]
                  for j in range(n + m + 1):
                      tableau[i][j] -= factor * tableau[pivot_row][j]
      
      solution = [0] * n
      for i in range(m):
          if n <= i < n + m:
              solution[i - n] = tableau[i][-1]
      
      return solution