• 23

Learning Opportunities

This puzzle can be solved using the following concepts. Practice using these concepts and improve your skills.



===== Summary and your task =====
You will be given 3 measurements (in centimeters) of a drinking-glass, sitting on a bar:
• its bottomRadius
• its topRadius = the radius of the lip (this is always larger than bottomRadius)
• its height, glassHeight

And you will be given a volume of beer beerVol in cubic-centimeters (also known as milliliters) that's been poured into the drinking-glass.

How high up (beerHeight) in the drinking-glass does the beer go ?

===== Geometry background: frustum =====
The above-described drinking-glass (upside down) in geometry is called a frustum.

Wikipedia describes it thus:
"A cone with a region including its apex cut off by a plane is called a truncated cone; if the truncation plane is parallel to the cone's base, it is called a frustum."

The volume of conical frustum is:
V = (1/3) * π * h * (r² + r * R + R²)
...where r and R are the radiuses and h is the height.
But remember the radius of the top of the drinking-glass isn't the radius of the top of the beer.

To better understand frustum geometry, you can experiment with:

===== Oh, tricky =====
Your first instinct might be to try an Analytic solution, by simply plugging numbers into a formula.
But there are 4 elements, and you'd need to know 3 of them; but you only know 2 ☹️

These elements are:
• volume of the beer beerVol
• bottom radius of the drinking-glass bottomRadius
• height of the beer (unknown)
• radius of the drinking-glass at the spot where the top of the beer is (unknown)

So Analytic solution might be a bit tricky.
Perhaps try an Iterative method instead.

===== Notes, sources =====
• Beer foam doesn't matter. Think of it as water instead if you prefer
Line 1: 4 floats separated by a space: bottomRadius topRadius glassHeight beerVol
Line 1: A float, beerHeight rounded and displayed to the nearest tenth
Height is measured perpendicular to the bar
0 < beerHeight < glassHeight < 50
0 < bottomRadius < topRadius < 50
0 < beerVol < 5000
2.5 4 15 473

A higher resolution is required to access the IDE