fork download
  1. laberinto = [
  2. [0, 0, 1, 1, "X"],
  3. [1, 0, 1, 0, 1],
  4. [0, 0, 0, 0, 0],
  5. [0, 1, 0, 0, 0],
  6. [0, "X", 0, 1, 0]
  7. ]
  8.  
  9.  
  10. def modificarlab(lab):
  11. n, m = len(lab), len(lab[0])
  12. moves = [(0, 0), (0, 1), (0, -1), (1, 0), (-1, 0), (1, 1), (-1, -1), (1, -1), (-1, 1)]
  13. for i in range(n):
  14. for j in range(m):
  15. if lab[i][j] == "X":
  16. for move in moves:
  17. if 0 <= i + move[0] < n and 0 <= j + move[1] < m:
  18. lab[i + move[0]][j + move[1]] = 1
  19. return lab
  20.  
  21.  
  22. def esValido(n, m, i, j, lab):
  23. return 0 <= i < n and 0 <= j < m and lab[i][j] == 0
  24.  
  25.  
  26. def recorroLab(labs):
  27. lab = modificarlab(labs)
  28. m, n = len(lab), len(lab[0])
  29. movs = []
  30. recorrido(lab, m, n, 0, 0, movs, "")
  31. return movs
  32.  
  33.  
  34. def recorrido(lab, m, n, i, j, movs, actual):
  35. if not esValido(n, m, i, j, lab): return
  36. if i == m - 1 and j == n - 1:
  37. movs.append(actual)
  38. return
  39. lab[i][j] = 1
  40. recorrido(lab, m, n, i + 1, j, movs, actual + "D")
  41. recorrido(lab, m, n, i - 1, j, movs, actual + "U")
  42. recorrido(lab, m, n, i, j - 1, movs, actual + "L")
  43. recorrido(lab, m, n, i, j + 1, movs, actual + "R")
  44. lab[i][j] = 0
  45.  
  46.  
  47. print(recorroLab(laberinto))
  48.  
Success #stdin #stdout 0.03s 9572KB
stdin
Standard input is empty
stdout
['RDDRRDRD', 'RDDRRRDD']