title: Write a function that takes as input a 2D array and RETURNS 'Square' , 'Rectangular' or 'Invalid'
body: <p>Write a function describe(matrix) that takes as input a 2D array and RETURNS 'Square' if the matrix is square, 'Rectangular' if the matrix is rectangular, and 'Invalid' if neither.
  Square matrices have the same number of rows and columns.
  Rectangular matrices can have different numbers of rows and columns, but each row is the same length.
  Invalid matrices have inconsistent length in their rows.
  Now all square matrices are also rectangles so I know this should be a subset.</p>
  
  <p>I can tell essentially if my matrix is a square or invalid. My code returns "Invalid" for rectangles as well. I'm not sure how to define a column and how to calculate whether something is a square or a rectangle.</p>
  
  <pre><code>def describe(matrix):
          if all([len(i)==len(matrix) for i in matrix]):
              return "Square"
          else:
              return "Invalid"
  </code></pre>
  
  <pre><code>&gt;&gt;&gt; describe([[0]])  
  'Square'  
  &gt;&gt;&gt; describe([[0, 1, 2], [2, 1, 0], [3, 3, 3]])  
  'Square'  
  &gt;&gt;&gt; describe([[0, 1, 2], [2, 1], [3, 3, 3]])  
  'Invalid'  
  &gt;&gt;&gt; describe([[0, 1], [1, 0], [3, 3]])  
  'Rectangular'  
  &gt;&gt;&gt; describe([[0, 1], [1, 0], [3, 3]])  
  'Rectangular'  
  &gt;&gt;&gt; describe([[0, 1, 2, 3, 4, 5]])  
  'Rectangular'  
  &gt;&gt;&gt; describe([[0, 1, 2, 3, 4, 5], [5, 4, 3, 2, 1, 0]])  
  'Rectangular'  
  </code></pre>