Statistics

Problem Statement for "Space3d"

Problem Statement

Class name: Space3d
Method name: getDensityVolume
Parameters: String[], int
Returns: long

Dr. Bob is a research physicist who deals with matter and anti-matter gases.
Given the physical coordinates of rectangular prism volumes of gases, he needs
to know what the total volume is that has a certain density. Densities are
cumulative, in this sense (i.e, if two identical volumes have densities of 1
each, then that volume has a total density of 2).  The "matter" volumes would
have a positive density, and the "anti-matter" volumes would have a negative
density. A density of zero indicates an empty region.

The String[] will contain elements defining each volume of gas by two x, two y,
two z coordinates, and a density.  For instance, parameters of
"(2,0,1),(5,5,5),1", "(3,3,3),(4,4,4),-1" means that the 3-dimensional region
bounded on two opposite corners by the points (2,0,1) and (5,5,5) has a density
of 1, and the region bounded by (3,3,3) and (4,4,4) has a density of -1. So,
added together, the region (3,3,3)-(4,4,4) has density 0.  Note that quotes are
included only for clarity, and will not be in the Strings in the String[].
Given these Strings and a density to search for, determine the total volume
with exactly this density.

The method signature is:
public long getVolume(String[] al, int density);

In the String[], x, y, and z coordinates are between -1000 and 1000, inclusive.
In the String[], Density is between -10 and 10, inclusive.
The density to find is bounded by -150 <= x <= 150, x != 0.
The String[] will contain between 1 and 15 elements, inclusive.

Note:
-Any input that defines a gas with no volume can be ignored (such as
"(0,0,0),(1,1,0),1").
-Any input that defines a gas with no density can be ignored (such as
"(0,0,0),(1,1,1),0").

Examples:
-If the String[] contains "(0,0,0),(2,2,2),1" "(1,1,1),(3,3,3),1", and density
to search for is 1, the volume with density 1 is the two cubes minus their
intersection = 2*2*2 + 2*2*2 - 1 - 1 = 14.

-If the String[] contains "(0,0,0),(5,5,5),1", "(1,1,1),(4,4,4),-2",
"(2,2,2),(3,3,3),2", and the density to search for is 1, the regions with
density 1 are the unit-thick cubic shell from (0,0,0)-(5,5,5), and the region
(2,2,2)-(3,3,3), for a total of 99.

-If the String[] contains:
"(-1000,-1000,-1000),(1000,1000,-999),1"
"(-1000,-1000,-1000),(-999,1000,1000),1"
"(-1000,-1000,-1000),(1000,-999,1000),1"
"(-1000,1000,-1000),(1000,999,1000),1"
"(-1000,-1000,1000),(1000,1000,999),1"
"(1000,-1000,-1000),(999,1000,1000),1"
with a density to search for of 1, the resulting area is a 2000x2000x2000 cube
one unit thick, but the edges and corners have densities of 2 and 3
respectively, so the returned volume is 23952024.

Definition

Class:
Space3d
Method:
getDensityVolume
Parameters:
String[], int
Returns:
long
Method signature:
long getDensityVolume(String[] param0, int param1)
(be sure your method is public)

Constraints

    Examples


      This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
      This problem was used for: