def __police_positions(self, state):
    '\n            Input: The state as an int\n            Returns: A list of possible new minotaur positions from current state \n        '
    agent_pos = self.states[state][0:2]
    police_pos = self.states[state][2:]
    diff_pos = np.sign((agent_pos - police_pos))
    list_pos = ([[1, 0], [(- 1), 0], [0, diff_pos[1]]] if (diff_pos[0] == 0) else ([[0, 1], [0, (- 1)], [diff_pos[0], 0]] if (diff_pos[1] == 0) else [[0, diff_pos[1]], [diff_pos[0], 0]]))
    list_pos += police_pos
    list_pos = list(filter(None, [(tuple(pos) * ((0 <= pos[0] < self.town_map.shape[0]) and (0 <= pos[1] < self.town_map.shape[1]))) for pos in list_pos]))
    return list_pos
Input: The state as an int
Returns: A list of possible new minotaur positions from current state
def __police_positions(self, state):
    '\n            Input: The state as an int\n            Returns: A list of possible new minotaur positions from current state \n        '
    agent_pos = self.states[state][0:2]
    police_pos = self.states[state][2:]
    diff_pos = np.sign((agent_pos - police_pos))
    list_pos = ([[1, 0], [(- 1), 0], [0, diff_pos[1]]] if (diff_pos[0] == 0) else ([[0, 1], [0, (- 1)], [diff_pos[0], 0]] if (diff_pos[1] == 0) else [[0, diff_pos[1]], [diff_pos[0], 0]]))
    list_pos += police_pos
    list_pos = list(filter(None, [(tuple(pos) * ((0 <= pos[0] < self.town_map.shape[0]) and (0 <= pos[1] < self.town_map.shape[1]))) for pos in list_pos]))
    return list_pos