public static char[][] GetRepresentation(GridWorld gridWorld, Point goal, Robot robot, PriorityQueue<ExplorationPoint> openQueue, ArrayList<ExplorationPoint> closedSet)
    {
        char[][] representation = gridWorld.GetRepresentation();
        ExplorationPoint goalExplorationPoint = null;

        representation[(int)goal.getY()][(int)goal.getX()] = 'G';

        //Open Queue
        for (ExplorationPoint ep : openQueue)
            if (goal.equals(ep.GetPoint()))
                goalExplorationPoint = ep;
            else
                representation[(int)ep.GetPoint().getY()][(int)ep.GetPoint().getX()] = 'o';

        //Closed Queue
        for (ExplorationPoint ep : closedSet)
            representation[(int)ep.GetPoint().getY()][(int)ep.GetPoint().getX()] = 'x';

        //The goal was found, print the path to the goal
        if (goalExplorationPoint != null)
        {
            ExplorationPoint currentExplorationPoint = goalExplorationPoint;
            while (currentExplorationPoint.GetPreviousPoint() != null)
            {
                representation[(int)currentExplorationPoint.GetPoint().getY()][(int)currentExplorationPoint.GetPoint().getX()] = '.';

                //Find next exploration point by point
                for (ExplorationPoint ep : closedSet)
                {
                    if (currentExplorationPoint.GetPreviousPoint().equals(ep.GetPoint()))
                    {
                        currentExplorationPoint = ep;
                        break;
                    }
                }
            }

            //Set the goal location
            representation[(int)goalExplorationPoint.GetPoint().getY()][(int)goalExplorationPoint.GetPoint().getX()] = 'X';
        }

        //Set the start location
        representation[(int)robot.GetLocation().getY()][(int)robot.GetLocation().getX()] = 'R';

        return representation;
    }