"""
Hola Guillermo! Aquí va mi propuesta. Primero declaramos una matriz de 3x4 para ejemplificar.
El ciclo for sólo es para visualizar la matriz renglón por renglon
"""
A= [["a", "a", "b", "c"],["d", "e", "f", "e"],["c", "a", "b", "e"]]
show(A)
for renglon in A:
print renglon
"""
vamos a definir una función f que nos ayude a realizar los cambio.
A es la matriz a modificar, x el caracter a reemplazar, y el nuevo caracter,
mientras que i,j son las coordenadas de la entrada.
Recuerda que en Python/SageMath) empezamos a contar de 0
"""
def f(A,x,y,i,j):
B=copy(A) #hacemos una copia de A en B para no modificar el arreglo original
N=len(A) #Como A es una lista de renglones, su longitud es igual al número de renglones
M=len(A[0]) #Aquí supondré que es un arreglo rectangular, que por tanto, todos los renglones tienen la misma longitud
#y esta es igual al número de columnas. Eso debes garantizarlo de alguna manera en Java
for k in [-1,0,1]: #k denotará los desplazamientos verticales: -1:arriba, 0 mismo renglón, +1: abajo
if (0<=i+k<=N): #verificamos que no estemos tomando un contador fuera de rango
for l in [-1,0,1]: #l denotara los desplazamientos horizontales
if (0<=j+l<=M): #igual que k
if not(k==0) or not(l==0): # por último, verificamos que al menos exista un dezplazamiento en algún sentido
if (A[i+k][j+l]==x): #ahora sí, si el caracter "x" aparece...
B[i+k][j+l]=y #...entonces lo sustituimos
return B
#Aplicamos la función f a B para cambiar las "e" que aparecen alrededor de la casilla 1,2 (contando desde cero) por "g"'s
B=f(A,"e","g",1,2)
show(B)
for renglon in B:
print renglon