input: Write a python function to plot a 3D cube using Matplotlib.
  assert plot_3d_cube().shape == (8, 3)
  assert plot_3d_cube().size == 24
output: import numpy as np
  import matplotlib.pyplot as plt
  from mpl_toolkits.mplot3d.art3d import Poly3DCollection
  
  def plot_3d_cube():
      # Define the vertices of a unit cube
      vertices = np.array([[0, 0, 0], [0, 1, 0], [1, 1, 0], [1, 0, 0],
                           [0, 0, 1], [0, 1, 1], [1, 1, 1], [1, 0, 1]])
  
      # Define the 6 faces of the cube
      faces = [[vertices[j] for j in [0, 1, 2, 3]],
               [vertices[j] for j in [4, 5, 6, 7]], 
               [vertices[j] for j in [0, 3, 7, 4]], 
               [vertices[j] for j in [1, 2, 6, 5]], 
               [vertices[j] for j in [0, 1, 5, 4]], 
               [vertices[j] for j in [2, 3, 7, 6]]]
      
      # Plotting the cube
      fig = plt.figure()
      ax = fig.add_subplot(111, projection='3d')
      ax.add_collection3d(Poly3DCollection(faces, 
                                           facecolors='cyan', linewidths=1, edgecolors='r', alpha=.25))
  
      ax.set_xlabel('X')
      ax.set_ylabel('Y')
      ax.set_zlabel('Z')
  
      ax.set_xlim([0, 1])
      ax.set_ylim([0, 1])
      ax.set_zlim([0, 1])
      
      plt.show()
      
      return vertices