input: Write a function to generate the first n elements of the Sierpinski triangle. The function should handle the input and output as described in the instruction.
  
  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)
output: def sierpinski_triangle(n):
      result = []
      for i in range(n):
          row = []
          for j in range(2**i):
              if j & (j + 1) == 0:
                  row.append('1')
              else:
                  row.append('0')
          result.append(' '.join(row))
      return result