laberinto = [
[0, 0, 1, 1, "X"],
[1, 0, 1, 0, 1],
[0, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, "X", 0, 1, 0]
]
def modificarlab(lab):
n, m = len(lab), len(lab[0])
moves = [(0, 0), (0, 1), (0, -1), (1, 0), (-1, 0), (1, 1), (-1, -1), (1, -1), (-1, 1)]
for i in range(n):
for j in range(m):
if lab[i][j] == "X":
for move in moves:
if 0 <= i + move[0] < n and 0 <= j + move[1] < m:
lab[i + move[0]][j + move[1]] = 1
return lab
def esValido(n, m, i, j, lab):
return 0 <= i < n and 0 <= j < m and lab[i][j] == 0
def recorroLab(labs):
lab = modificarlab(labs)
m, n = len(lab), len(lab[0])
movs = []
recorrido(lab, m, n, 0, 0, movs, "")
return movs
def recorrido(lab, m, n, i, j, movs, actual):
if not esValido(n, m, i, j, lab): return
if i == m - 1 and j == n - 1:
movs.append(actual)
return
lab[i][j] = 1
recorrido(lab, m, n, i + 1, j, movs, actual + "D")
recorrido(lab, m, n, i - 1, j, movs, actual + "U")
recorrido(lab, m, n, i, j - 1, movs, actual + "L")
recorrido(lab, m, n, i, j + 1, movs, actual + "R")
lab[i][j] = 0
print(recorroLab(laberinto))
bGFiZXJpbnRvID0gWwogICAgWzAsIDAsIDEsIDEsICJYIl0sCiAgICBbMSwgMCwgMSwgMCwgMV0sCiAgICBbMCwgMCwgMCwgMCwgMF0sCiAgICBbMCwgMSwgMCwgMCwgMF0sCiAgICBbMCwgIlgiLCAwLCAxLCAwXQpdCgoKZGVmIG1vZGlmaWNhcmxhYihsYWIpOgogICAgbiwgbSA9IGxlbihsYWIpLCBsZW4obGFiWzBdKQogICAgbW92ZXMgPSBbKDAsIDApLCAoMCwgMSksICgwLCAtMSksICgxLCAwKSwgKC0xLCAwKSwgKDEsIDEpLCAoLTEsIC0xKSwgKDEsIC0xKSwgKC0xLCAxKV0KICAgIGZvciBpIGluIHJhbmdlKG4pOgogICAgICAgIGZvciBqIGluIHJhbmdlKG0pOgogICAgICAgICAgICBpZiBsYWJbaV1bal0gPT0gIlgiOgogICAgICAgICAgICAgICAgZm9yIG1vdmUgaW4gbW92ZXM6CiAgICAgICAgICAgICAgICAgICAgaWYgMCA8PSBpICsgbW92ZVswXSA8IG4gYW5kIDAgPD0gaiArIG1vdmVbMV0gPCBtOgogICAgICAgICAgICAgICAgICAgICAgICBsYWJbaSArIG1vdmVbMF1dW2ogKyBtb3ZlWzFdXSA9IDEKICAgIHJldHVybiBsYWIKCgpkZWYgZXNWYWxpZG8obiwgbSwgaSwgaiwgbGFiKToKICAgIHJldHVybiAwIDw9IGkgPCBuIGFuZCAwIDw9IGogPCBtIGFuZCBsYWJbaV1bal0gPT0gMAoKCmRlZiByZWNvcnJvTGFiKGxhYnMpOgogICAgbGFiID0gbW9kaWZpY2FybGFiKGxhYnMpCiAgICBtLCBuID0gbGVuKGxhYiksIGxlbihsYWJbMF0pCiAgICBtb3ZzID0gW10KICAgIHJlY29ycmlkbyhsYWIsIG0sIG4sIDAsIDAsIG1vdnMsICIiKQogICAgcmV0dXJuIG1vdnMKCgpkZWYgcmVjb3JyaWRvKGxhYiwgbSwgbiwgaSwgaiwgbW92cywgYWN0dWFsKToKICAgIGlmIG5vdCBlc1ZhbGlkbyhuLCBtLCBpLCBqLCBsYWIpOiByZXR1cm4KICAgIGlmIGkgPT0gbSAtIDEgYW5kIGogPT0gbiAtIDE6CiAgICAgICAgbW92cy5hcHBlbmQoYWN0dWFsKQogICAgICAgIHJldHVybgogICAgbGFiW2ldW2pdID0gMQogICAgcmVjb3JyaWRvKGxhYiwgbSwgbiwgaSArIDEsIGosIG1vdnMsIGFjdHVhbCArICJEIikKICAgIHJlY29ycmlkbyhsYWIsIG0sIG4sIGkgLSAxLCBqLCBtb3ZzLCBhY3R1YWwgKyAiVSIpCiAgICByZWNvcnJpZG8obGFiLCBtLCBuLCBpLCBqIC0gMSwgbW92cywgYWN0dWFsICsgIkwiKQogICAgcmVjb3JyaWRvKGxhYiwgbSwgbiwgaSwgaiArIDEsIG1vdnMsIGFjdHVhbCArICJSIikKICAgIGxhYltpXVtqXSA9IDAKCgpwcmludChyZWNvcnJvTGFiKGxhYmVyaW50bykpCg==