input: Write a function to generate the first n elements of the Sierpinski triangle. The function should draw lines for the first row and then print the appropriate bit patterns for each subsequent row. If the row number is greater than 1, it should print the opposite bit pattern for the inner rows.
  def sierpinski_triangle(n):
      # Drawing lines for first row 
      for i in range(2**n): 
          print(' ', end=" ") 
      
      # loop for printing n rows 
      for i in range(1, n+1): 
          # bit pattern for first and 
          # last line of each row 
          for j in range(2**(i-1), 2**i): 
              print('1', end=" ") 
          print() 
          
          # inner rows have opposite bit pattern 
          if i > 1: 
              for j in range(2**(i-1)+1, 2**i-1):  
                  print('0', end=" ") 
              print() 
             
  assert sierpinski_triangle(6) == None
  assert sierpinski_triangle(1) == None
  assert sierpinski_triangle(0) == None
  assert sierpinski_triangle(3) == None
output: def sierpinski_triangle(n):
      for i in range(2**n): 
          print(' ', end=" ") 
      
      for i in range(1, n+1): 
          for j in range(2**(i-1), 2**i): 
              print('1', end=" ") 
          print() 
          
          if i > 1: 
              for j in range(2**(i-1)+1, 2**i-1):  
                  print('0', end=" ") 
              print()