The challenge
Bob is working as a bus driver. However, he has become extremely popular amongst the city’s residents. With so many passengers wanting to get aboard his bus, he sometimes has to face the problem of not having enough space left on the bus! He wants you to write a simple program telling him if he will be able to fit all the passengers.
The task:
You have to write a function that accepts three parameters:
cap
is the amount of people the bus can hold excluding the driver.on
is the number of people on the bus excluding the driver.wait
is the number of people waiting to get on to the bus excluding the driver.
If there is enough space, return 0, and if there isn’t, return the number of passengers he can’t take.
Examples:
cap = 10, on = 5, wait = 5 --> 0 # He can fit all 5 passengers
cap = 100, on = 60, wait = 50 --> 10 # He can't fit 10 of the 50 waiting
The solution in Java code
Option 1:
public class Bob {
public static int enough(int cap, int on, int wait){
return Math.max(0, on + wait - cap);
}
}
Option 2:
public class Bob {
public static int enough(int cap, int on, int wait){
return (cap-on-wait>=0)? 0: on+wait-cap;
}
}
Option 3:
public class Bob {
public static int enough(int cap, int on, int wait){
int pusto = cap-on;
if(wait==pusto || wait<pusto) return 0;
else return wait-pusto;
}
}
Test cases to validate our solution
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;
public class SolutionTest {
@Test
public void testBob() {
assertEquals("Should return 0.", 0, Bob.enough(10, 5, 5));
assertEquals("Should return 10.", 10, Bob.enough(100, 60, 50));
assertEquals("Should return 0.", 0, Bob.enough(20, 5, 5));
}
}