Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import itertools
- def mapper(val_s, val_f):
- mapper = [2, 0, 1]
- i = 0
- while (True):
- if val_f != val_s:
- i += 1
- val_s = mapper[val_s]
- else:
- return i
- start_board = [[1, 0, 2, 0, 1],
- [0, 2, 0, 2, 0],
- [2, 0, 1, 0, 2],
- [0, 2, 0, 2, 0],
- [1, 0, 2, 0, 1]]
- finish_board = [[1, 0, 2, 0, 1],
- [0, 2, 2, 1, 0],
- [2, 0, 1, 2, 0],
- [0, 2, 1, 2, 0],
- [1, 0, 0, 0, 0]]
- i = 0
- sb_np = np.array(start_board)
- fb_np = np.array(finish_board)
- dist = [[0 for i in range(5)] for j in range(5)]
- for i, (xs, xf) in enumerate(zip(sb_np, fb_np)):
- for j, (ys, yf) in enumerate(zip(xs, xf)):
- dist[i][j] = mapper(ys, yf)
- dist = np.array(dist)
- dist_to_copy = np.pad(dist, pad_width=1, mode='constant', constant_values=-1)
- for x in itertools.product([i for i in range(25)], repeat=5):
- dist = dist_to_copy.copy()
- i += 1
- for y in x:
- map1 = [2, 3, 4]
- row = (y // 5 + 1)
- column = (y % 5 + 1)
- elements = [[row, column],
- [row - 1, column],
- [row + 1, column],
- [row, column - 1],
- [row, column + 1]]
- for el in elements:
- value = dist[el[0]][el[1]]
- if value > 0:
- if value - 1 < 0:
- dist[el[0]][el[1]] = map1[value]
- else:
- dist[el[0]][el[1]] = value - 1
- if np.count_nonzero(dist[1:6, 1:6]) == 0:
- print(x)
- break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement