Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. import numpy as np
  2. import itertools
  3.  
  4.  
  5. def mapper(val_s, val_f):
  6. mapper = [2, 0, 1]
  7. i = 0
  8. while (True):
  9. if val_f != val_s:
  10. i += 1
  11. val_s = mapper[val_s]
  12. else:
  13. return i
  14.  
  15.  
  16. start_board = [[1, 0, 2, 0, 1],
  17. [0, 2, 0, 2, 0],
  18. [2, 0, 1, 0, 2],
  19. [0, 2, 0, 2, 0],
  20. [1, 0, 2, 0, 1]]
  21.  
  22. finish_board = [[1, 0, 2, 0, 1],
  23. [0, 2, 2, 1, 0],
  24. [2, 0, 1, 2, 0],
  25. [0, 2, 1, 2, 0],
  26. [1, 0, 0, 0, 0]]
  27.  
  28. i = 0
  29. sb_np = np.array(start_board)
  30. fb_np = np.array(finish_board)
  31. dist = [[0 for i in range(5)] for j in range(5)]
  32. for i, (xs, xf) in enumerate(zip(sb_np, fb_np)):
  33. for j, (ys, yf) in enumerate(zip(xs, xf)):
  34. dist[i][j] = mapper(ys, yf)
  35. dist = np.array(dist)
  36. dist_to_copy = np.pad(dist, pad_width=1, mode='constant', constant_values=-1)
  37. for x in itertools.product([i for i in range(25)], repeat=5):
  38. dist = dist_to_copy.copy()
  39. i += 1
  40. for y in x:
  41.  
  42. map1 = [2, 3, 4]
  43. row = (y // 5 + 1)
  44. column = (y % 5 + 1)
  45. elements = [[row, column],
  46. [row - 1, column],
  47. [row + 1, column],
  48. [row, column - 1],
  49. [row, column + 1]]
  50. for el in elements:
  51. value = dist[el[0]][el[1]]
  52. if value > 0:
  53. if value - 1 < 0:
  54. dist[el[0]][el[1]] = map1[value]
  55. else:
  56. dist[el[0]][el[1]] = value - 1
  57.  
  58. if np.count_nonzero(dist[1:6, 1:6]) == 0:
  59. print(x)
  60. break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement