Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Mary's ups and downs solution in Clear category for Moore Neighbourhood by mariamikolajczak
def count_neighbours(grid, row, col):
result = 0
up = row - 1
down = row + 1
iterate = [grid[row], grid[down]] if row == 0 else [grid[row], grid[up]] if row == len(grid) - 1 else [grid[row], grid[down], grid[up]]
for r in iterate:
for n in range(len(r)):
if r[n] == 1 and (n == col or n == col-1 or n == col + 1):
result += 1
if grid[row][col] == 1:
result -= 1
return result
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert count_neighbours(((1, 0, 0, 1, 0),
(0, 1, 0, 0, 0),
(0, 0, 1, 0, 1),
(1, 0, 0, 0, 0),
(0, 0, 1, 0, 0),), 1, 2) == 3, "1st example"
assert count_neighbours(((1, 0, 0, 1, 0),
(0, 1, 0, 0, 0),
(0, 0, 1, 0, 1),
(1, 0, 0, 0, 0),
(0, 0, 1, 0, 0),), 0, 0) == 1, "2nd example"
assert count_neighbours(((1, 1, 1),
(1, 1, 1),
(1, 1, 1),), 0, 2) == 3, "Dense corner"
assert count_neighbours(((0, 0, 0),
(0, 1, 0),
(0, 0, 0),), 1, 1) == 0, "Single"
Nov. 19, 2018
Comments: