## does_it_fit ### Instructions Use the `areas_volumes` module provided to create two **functions**. Create `area_fit`. It should return `true` if the geometric shape can fit inside the rectangular area as many times as is indicated by `times`. The arguments of the function will be: - `x` and `y`: length and width of the rectangular area. - `objects`: the type of geometric shape. - `times`: the number of geometric shapes to fit inside the rectangular area. - `a`: size of dimension for: - `side` of a `Square` - `base` of a `Triangle` - `radius` of a `Circle` - `side_a` of a `Rectangle` - `b`: size of dimension for: - `height` of a `Triangle` - `side_b` of a `Rectangle` Create `volume_fit`. It should return `true` if the geometric volume can fit inside the box as many times as is indicated by `times`. The arguments of the function will be: - `x`, `y` and `z`: length, width and depth of the box. - `objects`: the type of geometric volume. - `times`: the number of geometric volumes to fit inside the box. - `a`: size of dimension for: - `side` of a `Cube` - `radius` of a `Sphere` - `base_area` of a triangular `Pyramid` - `side_a` of a `Parallelepiped` - `base_radius` of a `Cone` - `b`: size dimension for: - `height` of the triangular `Pyramid` - `side_b` of a `Parallelepiped` - `height` of the `Cone` - `c`: size dimension for: - `side_c` of a `Parallelepiped` ### Expected Functions ```rust pub fn area_fit( x: usize, y: usize, objects: areas_volumes::GeometricalShapes, times: usize, a: usize, b: usize, ) -> bool { } pub fn volume_fit( x: usize, y: usize, z: usize, objects: areas_volumes::GeometricalVolumes, times: usize, a: usize, b: usize, c: usize, ) -> bool { } ``` ### areas_volumes.rs ```rust pub enum GeometricalShapes { Square, Circle, Rectangle, Triangle, } pub enum GeometricalVolumes { Cube, Sphere, Cone, Pyramid, Parallelepiped, } pub fn square_area(side: usize) -> usize { side.pow(2) } pub fn triangle_area(base: usize, height: usize) -> f64 { (base as f64 * height as f64) / 2.0 } pub fn circle_area(radius: usize) -> f64 { std::f64::consts::PI * (radius.pow(2) as f64) } pub fn rectangle_area(side_a: usize, side_b: usize) -> usize { side_a * side_b } pub fn cube_volume(side: usize) -> usize { side.pow(3) } pub fn sphere_volume(radius: usize) -> f64 { (4.0 / 3.0) * std::f64::consts::PI * (radius.pow(3) as f64) } pub fn triangular_pyramid_volume(base_area: f64, height: usize) -> f64 { (base_area * height as f64) / 3.0 } pub fn parallelepiped_volume(side_a: usize, side_b: usize, side_c: usize) -> usize { side_a * side_b * side_c } pub fn cone_volume(base_radius: usize, height: usize) -> f64 { (1.0 / 3.0) * std::f64::consts::PI * base_radius.pow(2) as f64 * height as f64 } ``` ### Usage Here is a program to test your function: ```rust use does_it_fit::*; fn main() { println!( "Do 100 rectangles (2x1) fit in a 2 by 4 square? {}", area_fit(2, 4, GeometricalShapes::Rectangle, 100, 2, 1) ); println!( "Do 3 triangles (5 base and 3 height) fit in a 5 by 5 square? {}", area_fit(5, 5, GeometricalShapes::Triangle, 3, 5, 3) ); println!( "Do 3 spheres (2 radius) fit in a 5 by 5 by 5 box? {}", volume_fit(5, 5, 5, GeometricalVolumes::Sphere, 3, 2, 0, 0) ); println!( "Does 1 parallelepiped (6 base, 7 height and depth 4) fit in a 5 by 7 by 5 parallelepiped? {}", volume_fit(5, 7, 5, GeometricalVolumes::Parallelepiped, 1, 6, 7, 4) ); } ``` And its output: ```sh $ cargo run Do 100 rectangles (2x1) fit in a 2 by 4 square? false Do 3 triangles (5 base and 3 height) fit in a 5 by 5 square? true Do 3 spheres (2 radius) fit in a 5 by 5 by 5 box? true Does 1 parallelepiped (6 base, 7 height and depth 4) fit in a 5 by 7 by 5 parallelepiped? true $ ```