Wednesday, 26 November 2014

Meet the robots

Problem:
Two robots land with their parachutes on an infinite one-dimensional number line. They both release their parachutes as soon as they land and start moving. They are allowed only to make use of the following functions.
I.   moveLeft() // robot moves to left by 1 unit in 1 unit time
II.  moveRight() // robot moves to right by 1 unit in 1 unit time
III. noOperation() // robot does not move and takes 1 unit time
IV.  onTopOfParachute() // returns true if the robot is standing on top of either of the parachute, else false
V.   didWeMeet() // returns true if the robot meets to the other robot, else false
Write a function in order to make the robots meet each other. Robots will be executing the same copy of this function.
Solution:
void meetRobots(Robot r1,Robot r2) {
       r1.moveLeft(), r2.moveLeft();
       while(!r1.onTopOfParachute() && !r2.onTopOfParachute()) {
           r1.moveLeft(), r2.moveLeft();
       }
       if(r1.onTopOfParachute()) {
           while(!r2.didWeMeet()) {
               r2.moveRight(),r1.noOperation();
           }
        } else {
           while(!r1.didWeMeet()) {
               r1.moveRight(),r2.noOperation();
           }
        }
           

No comments:

Post a Comment