import java.util.*;

public class RepairDroid
{
    public static final String INITIAL_INPUT = Integer.toString(DroidMovement.NORTH);

    public RepairDroid (Vector<String> instructions, boolean debug)
    {
        _debug = debug;
        _theComputer = new Intcode(instructions, INITIAL_INPUT, _debug);
        _location = new Coordinate(0, 0);  // starting location
        _theMap = new Map();

        _theMap.addContent(_location, TileId.TRAVERSE);
    }

    public final int moveToOxygenStation ()
    {
        int numberOfSteps = 0;

        // create a map first!

        return numberOfSteps;
    }

    public void printGrid ()
    {
        
    }

    private boolean recursiveSearch (Coordinate from)
    {
        while (!_theComputer.hasHalted())
        {
            Coordinate coord = new Coordinate(from.getX(), from.getY()+1);

            _theComputer.setInput(new String(DroidMovement.NORTH));

            _theComputer.singleStepExecution();

            if (_theComputer.hasOutput())
            {
                int response = Integer.parseInt(_theComputer.getOutput());

                switch (response)
                {
                    case DroidStatus.ARRIVED:
                    {
                        _theMap.addContent(coord, TileId.OXYGEN_STATION);
                        
                        return true;
                    }
                    break;
                    case DroidStatus.COLLISION:
                    {
                        _theMap.addContent(from, TileId.WALL);  // didn't move as we hit a wall

                        return false;
                    }
                    break;
                    case DroidStatus.MOVED:
                    {
                        _theMap.addContent(coord, TileId.TRAVERSE);

                        return recursiveSearch(coord);
                    }
                    break;
                    default:
                        System.out.println("Unknown response: "+response);
                }
            }
            else
                System.out.println("Error - no output after move instruction!");
        }

        return false;
    }

    private boolean _debug;
    private Intcode _theComputer;
    private Coordinate _location;
    private Map _theMap;
}
@@ -2160,32 +2160,1536 @@
 n false;%0A    %7D%0A%0A
+    private boolean tryToMove (Coordinate from)%0A    %7B%0A        while (!_theComputer.hasHalted())%0A        %7B%0A            Coordinate coord = new Coordinate(from.getX(), from.getY()+1);%0A%0A            _theComputer.setInput(new String(DroidMovement.NORTH));%0A%0A            _theComputer.singleStepExecution();%0A%0A            if (_theComputer.hasOutput())%0A            %7B%0A                int response = Integer.parseInt(_theComputer.getOutput());%0A%0A                switch (response)%0A                %7B%0A                    case DroidStatus.ARRIVED:%0A                    %7B%0A                        _theMap.addContent(coord, TileId.OXYGEN_STATION);%0A                        %0A                        return true;%0A                    %7D%0A                    break;%0A                    case DroidStatus.COLLISION:%0A                    %7B%0A                        _theMap.addContent(from, TileId.WALL);  // didn't move as we hit a wall%0A%0A                        return false;%0A                    %7D%0A                    break;%0A                    case DroidStatus.MOVED:%0A                    %7B%0A                        _theMap.addContent(coord, TileId.TRAVERSE);%0A%0A                        return recursiveSearch(coord);%0A                    %7D%0A                    break;%0A                    default:%0A                        System.out.println(%22Unknown response: %22+response);%0A                %7D%0A            %7D%0A            else%0A                System.out.println(%22Error - no output after move instruction!%22);%0A        %7D%0A%0A        return false;%0A    %7D%0A%0A
     private bool

Update RepairDroid.java