(mat, value=0)
| 1352 | |
| 1353 | |
| 1354 | def max_size(mat, value=0): |
| 1355 | if not (mat and mat[0]): return (0, 0) |
| 1356 | it = iter(mat) |
| 1357 | prev = [(el==value) for el in next(it)] |
| 1358 | max_size = max_rectangle_size(prev) |
| 1359 | for row in it: |
| 1360 | hist = [(1+h) if el == value else 0 for h, el in zip(prev, row)] |
| 1361 | max_size = max(max_size, max_rectangle_size(hist), key=get_area) |
| 1362 | prev = hist |
| 1363 | return max_size |
| 1364 | |
| 1365 | def max_rectangle_size(histogram): |
| 1366 | Info = namedtuple('Info', 'start height') |
no test coverage detected