def saddle_points(m):
    mt = transpose(m)
    if not m == transpose(mt):
        raise ValueError
    return set((i, j) for i, row in enumerate(m) for j, col in enumerate(mt)
                if (row[j] == min(row) and col[i] == max(col))
                or (row[j] == max(row) and col[i] == min(col)))


def transpose(m):
    return [list(col) for col in zip(*m)]

def saddle_points(m):
    mt = transpose(m)
    if not m == transpose(mt):
        raise ValueError
    return set((i, j) for i, row in enumerate(m) for j, col in enumerate(mt)
                if (row[j] == max(row) and col[i] == min(col)))


def transpose(m):
    return [list(col) for col in zip(*m)]

Correct it to actually follow the README...
Correct it to actually follow the README...

  def saddle_points(m):
      mt = transpose(m)
      if not m == transpose(mt):
          raise ValueError
      return set((i, j) for i, row in enumerate(m) for j, col in enumerate(mt)
-                 if (row[j] == min(row) and col[i] == max(col))
-                 or (row[j] == max(row) and col[i] == min(col)))
+                 if (row[j] == max(row) and col[i] == min(col)))
  
  
  def transpose(m):
      return [list(col) for col in zip(*m)]
  
Correct it to actually follow the README...
## Code Before:
def saddle_points(m):
    mt = transpose(m)
    if not m == transpose(mt):
        raise ValueError
    return set((i, j) for i, row in enumerate(m) for j, col in enumerate(mt)
                if (row[j] == min(row) and col[i] == max(col))
                or (row[j] == max(row) and col[i] == min(col)))


def transpose(m):
    return [list(col) for col in zip(*m)]

## Instruction:
Correct it to actually follow the README...
## Code After:
def saddle_points(m):
    mt = transpose(m)
    if not m == transpose(mt):
        raise ValueError
    return set((i, j) for i, row in enumerate(m) for j, col in enumerate(mt)
                if (row[j] == max(row) and col[i] == min(col)))


def transpose(m):
    return [list(col) for col in zip(*m)]
