Two ball bounce problem

368 Views Asked by At

Two I had an interview, where they have asked me a physics puzzle. The question was,

If two balls have been dropped at the same time from same height. suppose Ball A will start bouncing by 10% of reducing its height from its very previous bounce. And Ball Bwill start bouncing by 20% of reducing its height from its very previous bounce. Then how many times they will cross each other?

I have answered him as,

Definitely, Ball B bounce less than Ball A. So, in this context

if Ball-B starts its bounce from height = x.

Then if I will apply this into a program,

int cnt = 0;//Pseudo Code
if(x != 0)
{
x = x * 20 / 100;
 cnt++;
}

So, final value of cnt = number of times they will cross each other.

But after this I was thinking that, this many not be correct answer as in first drop, the Ball-A might have bounced of height x + (x- (height bounced by Ball-B)). So, it is not necessary that they might have crossed each other.

Please me understanding this puzzle.

1

There are 1 best solutions below

12
On

Your code only measures how many times ball $B$ can bounce before the precision of the computer is unable to distinguish its height from zero. This seems like an entirely different question from the one you are asked!

A second point is that the question says (in my interpretation) that each bounce of ball $B$ is 80% of the height of the previous one. So in my interpretation ball $A$ is bouncier than ball $B$. You seem to agree with this at one point, put then your code suggests that each bounce of ball $B$ is 20% the height of the previous one.

Notice that each ball bounces infinitely many times, with the bounce times forming a convergent geometric series. This is because the time that a bounce takes to complete is proportional to the speed at the start of the bounce, which is reduced by a constant factor each time.

Denote the time of the first bounce by $t=0$. Let $t_A$ denote the sum of the bounce times for ball $A$, or equivalently the time at which $A$ completes all of its (infinitely many) bounces and begins sitting still. Similarly, let $t_B$ denote the sum of the bounce times for ball $A$, or equivalently the time at which $B$ completes all of its (infinitely many) bounces and begins sitting still.

Note that $t_B < t_A$, so ball $B$ has finished bouncing while ball $A$ has bounced only finitely many times. All of the crossings must therefore happen in the time interval $[0,t_B]$. Let $t_0 = 0, t_1,t_2,\ldots,t_n \le t_B$ list in increasing order the times at which ball $A$ hits the ground during this interval.

For each bounce $[t_i,t_{i+1}]$ of ball $A$, it crosses paths with ball $B$ at most twice: At most once on the way up (because at any given height it is moving faster than ball $B$ is) and at most once on the way down (for the same reason.) Therefore an upper bound on the number of crossings is given by $2n$.

Because ball $A$'s height in the middle of one of its bounces $[t_i,t_{i+1}]$ is higher than ball $B$ can ever be during that time interval, the only way that there could be fewer than two crossings during the time interval $[t_i,t_{i+1}]$ is in the "degenerate case" that ball $B$ is on the ground at time $t_i$ or at time $t_{i+1}$. This happens at the beginning of $A$'s first bounce at $t = 0$. I'll leave it up to you to calculate $t_B$, $n$, and $t_1,\ldots,t_n$, and to see whether this "degenerate case" ever happens again.