def test_constructor(self):
     board_size = (3, 4)
     agent_pos = (3, 3)
     tiles_pos = {'A': (0, 3), 'B': (1, 3), 'C': (2, 3)}
     board = BoardState(agent_pos, tiles_pos, board_size)
     self.assertEqual(board.get_tile_pos('A'), tiles_pos['A'])
     self.assertEqual(board.get_tile_pos('B'), tiles_pos['B'])
     self.assertEqual(board.get_tile_pos('C'), tiles_pos['C'])
 def estimate_cost_to_goal(self, state: BoardState, goal: BoardState):
     total_dist = abs(state.agent_pos[0] -
                      goal.agent_pos[0]) + abs(state.agent_pos[1] -
                                               goal.agent_pos[1])
     for tile, goal_pos in goal.tiles_pos.items():
         new_pos = state.get_tile_pos(tile)
         total_dist += abs(new_pos[0] - goal_pos[0]) + abs(new_pos[1] -
                                                           goal_pos[1])
     return total_dist