Corrigi a classe Percolation: usando a ideia de sites virtuais, acima e abaixo do grid, consegui implementar o isFull() em constant-time. Agora estou tentando resolver o problema de backwash.
Backwash corrigido com o método que eu acredito seja o esperado. Eu achei que tivesse encontrado um método mais interessante de evitar o backwash, mas não funcionou. Ainda não sei por que.