input: Write a function to find the most efficient path for a robot to take from its current location to the destination using a Breadth-First Search (BFS) algorithm. If the destination is reachable, return the path as a list of coordinates; otherwise, return None. If the start and end coordinates are the same, return the same coordinate as the path.
  assert find_path((4, 2), (9, 9))==[(4, 2), (5, 2), (6, 2), (7, 2), (8, 2), (9, 2), (8, 3), (8, 4), (8, 5), (8, 6), (8, 7), (8, 8), (9, 9)]
  assert find_path((0, 0), (2, 2))==[(0, 0), (1, 0), (2, 0), (2, 1), (2, 2)]
  assert find_path((1, 1), (1, 1))==[(1, 1)]
  assert find_path((3, 3), (10, 10))==None
  assert find_path((4, 2), (5, 2))==[(4, 2), (5, 2)]
output: def find_path(start, end):
      if start == end:
          return [start]
      
      queue = [(start, [start])]
      visited = set()
      visited.add(start)
      
      while queue:
          (current, path) = queue.pop(0)
          
          for move in [(0, 1), (1, 0), (0, -1), (-1, 0)]:
              next_pos = (current[0] + move[0], current[1] + move[1])
              
              if next_pos == end:
                  return path + [next_pos]
              
              if next_pos not in visited:
                  visited.add(next_pos)
                  queue.append((next_pos, path + [next_pos]))
      
      return None