In [ ]:
import numpy as np
In [ ]:
matStr = """
131,673,234,103,18
201,96,342,965,150
630,803,746,422,111
537,699,497,121,956
805,732,524,37,331"""
def parseMat(s, dim):
# Parse but leave space for easier calculation
mat = np.empty((dim, dim), dtype=np.int)
for i, line in enumerate(s.strip().splitlines()):
mat[:,i] = np.asarray(list(map(int, line.split(","))))
return mat
mat = parseMat(matStr, 5)
In [ ]:
dim = 5
UP = 1; DOWN = 2; RIGHT = 4
flagmat = np.zeros_like(mat) # OR of UP/DOWN/RIGHT
for x in range(dim):
for y in range(dim):
u = mat[x, y - 1] if y > 0 else 1e6
d = mat[x, y + 1] if y < dim - 1 else 1e6
r = mat[x + 1, y] if x < dim - 1 else 1e6
m = min(u,d,r)
if u == m: flagmat[x,y] |= UP
if d == m: flagmat[x,y] |= DOWN
if r == m: flagmat[x,y] |= RIGHT
In [ ]:
flagmat.T
In [ ]:
mat.T