diff options
Diffstat (limited to 'rust/assembly-line/README.md')
-rw-r--r-- | rust/assembly-line/README.md | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/rust/assembly-line/README.md b/rust/assembly-line/README.md new file mode 100644 index 0000000..b9bc544 --- /dev/null +++ b/rust/assembly-line/README.md @@ -0,0 +1,86 @@ +# Assembly Line + +Welcome to Assembly Line on Exercism's Rust Track. +If you need help running the tests or submitting your code, check out `HELP.md`. +If you get stuck on the exercise, check out `HINTS.md`, but try and solve it without using those first :) + +## Introduction + +## numbers + +There are two different categories of numbers in Rust. + +The name of a numeric type consists of two parts: + +- A letter to specify whether it's a floating-point number (f), unsigned integer (u) or signed integer (i) +- A number to specify the numbers size in bits. Larger types have a greater range between minimum and maximum values. + For floating points it will also allow for more numbers behind the decimal separator. + +The following combinations are possible: + +- 8 bits: `u8`, `i8` +- 16 bits: `u16`, `i16` +- 32 bits: `u32`, `i32`, `f32` +- 64 bits: `u64`, `i64`, `f64` +- 128 bits: `u128`, `i128` + +Note that there are only 32-bits and 64-bits variants for floating-point numbers. + +## Integers + +- Integers: numbers with no digits behind the decimal separator (whole numbers). + Integer types can either store only positive numbers (unsigned) or store either positive and negative numbers (signed). + Examples are -6, 0, 1, 25, 976 and 500000. + +## Floating Point Numbers + +- Floating-point numbers: numbers with zero or more digits behind the decimal separator. + Examples are -2.4, 0.1, 3.14, 16.984025 and 1024.0. + +## Converting between number types + +Rust doesn't do any implicit type conversion. +This means that if you need to turn one numeric type into another, you have to do so explicitly. +When converting from a larger type to a smaller one (for instance `u64` to `u32`) you could lose data. +Converting from a floating point to an integer **will** lose everything behind the decimal point, effectively rounding down. + +## Instructions + +In this exercise you'll be writing code to analyze the production of an assembly line in a car factory. The assembly line's speed can range from `0` (off) to `10` (maximum). + +At its lowest speed (`1`), `221` cars are produced each hour. The production increases linearly with the speed. So with the speed set to `4`, it should produce `4 * 221 = 884` cars per hour. However, higher speeds increase the likelihood that faulty cars are produced, which then have to be discarded. The following table shows how speed influences the success rate: + +- `1` to `4`: 100% success rate. +- `5` to `8`: 90% success rate. +- `9` and `10`: 77% success rate. + +You have two tasks. + +## 1. Calculate the production rate per hour + +Implement a method to calculate the assembly line's production rate per hour, taking into account its success rate: + +```rust +numbers::production_rate_per_hour(6) +// Returns: 1193.4 +``` + +Note that the value returned is an `f64`. + +## 2. Calculate the number of working items produced per minute + +Implement a method to calculate how many working cars are produced per minute: + +```rust +numbers::working_items_per_minute(6) +// Returns: 19 +``` + +Note that the value returned is an `u32`. + +## Source + +### Created by + +- @LewisClement +- @efx \ No newline at end of file |