TopCoder problem "MixtureDensity" used in SRM 375 (Division II Level One)



Problem Statement

    

A pharmacist is making a mixture of several ingredients. She needs to know the density of the resulting mixture. Density is defined as the mass of the mixture divided by its volume.

You're given a String[] ingredients, each element of which describes a single ingredient and is formatted "<Volume> ml of <Name>, weighing <Mass> g" (quotes for clarity). <Volume> and <Mass> are integers representing the volume in milliliters and mass in grams, respectively. <Name> is the name of the ingredient.

Return the density of the resulting mixture in grams per milliliters.

 

Definition

    
Class:MixtureDensity
Method:getDensity
Parameters:String[]
Returns:double
Method signature:double getDensity(String[] ingredients)
(be sure your method is public)
    
 

Notes

-The returned value must be accurate to within a relative or absolute value of 1E-9.
 

Constraints

-ingredients will contain between 1 and 50 elements, inclusive.
-Each element of ingredients will contain between 23 and 50 characters, inclusive.
-Each element of ingredients will be formatted as described in the statement.
-Each <Volume> in ingredients will be an integer between 1 and 1000, inclusive, with no leading zeroes.
-Each <Mass> in ingredients will be an integer between 1 and 1000, inclusive, with no leading zeroes.
-Each <Name> in ingredients will contain only lowercase letters ('a'-'z') and spaces (' ').
-Each <Name> in ingredients will begin and end with a lowercase letter.
 

Examples

0)
    
{"200 ml of oil, weighing 180 g"}
Returns: 0.9
The density is mass/volume = 180g/200ml = 0.9g/ml, the answer is 0.9.
1)
    
{"100 ml of dichloromethane, weighing 130 g", "100 ml of sea water, weighing 103 g"}
Returns: 1.165
The volume of the resulting mixture is 200 ml and the mass is 233 g. Therefore, the density is 233g/200ml = 1.165g/ml.
2)
    
{"1000 ml of water, weighing 1000 g", "500 ml of orange juice concentrate, weighing 566 g"}
Returns: 1.044
3)
    
{"1000 ml of something   l i g h t, weighing 1 g"}
Returns: 0.0010

Problem url:

http://www.topcoder.com/stat?c=problem_statement&pm=8269

Problem stats url:

http://www.topcoder.com/tc?module=ProblemDetail&rd=10794&pm=8269

Writer:

darnley

Testers:

PabloGilberto , Olexiy , ivan_metelsky , ged

Problem categories:

Simple Math, String Manipulation