Comentários?
Usa o fato que True tem valor 1 e False tem valor 0.
Isso já rolou no tópico Dúvida2 EP1.
def espalhe(tab, viz): # calcule instáveis instaveis = tab >= viz # remova grãos a serem espalhados tab[instaveis] -= viz[instaveis] # espalhe: usa o fato do valor de True ser 1 e False ser 0 tab[1:-1, :-2] += instaveis[1:-1,1:-1] # espalhe para esquerda tab[1:-1, 2: ] += instaveis[1:-1,1:-1] # espalhe para direita tab[ :-2, 1:-1] += instaveis[1:-1,1:-1] # espalhe para cima tab[2: , 1:-1] += instaveis[1:-1,1:-1] # espalhe para baixo # limpe bordas tab[0, :] = tab[-1,:] = tab[:,0] = tab[:,-1] = 0