Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Bacteria Colonies by Tinus_Trotyl
def healthy(grid):
X, Y, tallest = 0, 0, 0
x_size, y_size = len(grid[0]), len(grid)
growset = lambda s: set((x, y) for y in range(-s, s+1) for x in range(-s, s+1) if s-abs(x) >= abs(y))
for y in range(y_size):
for x in range(x_size):
if grid[y][x]:
for size in range(min(x_size, y_size) // 2, 0, -1):
healthset, borderset = growset(size), growset(size + 1) - growset(size)
for xb, yb in borderset:
if not(x + xb in (-1, x_size) or y + yb in (-1, y_size) or
(0 <= x + xb < x_size and 0 <= y + yb < y_size and grid[y + yb][x + xb] == 0)): break
else:
if size > tallest and all(grid[y + yg][x + xg] == 1 for xg, yg in healthset):
X, Y, tallest = x, y, size
return Y, X
Sept. 6, 2024
Comments: