diff options
Diffstat (limited to 'rustlings/exercises/quizzes')
| -rw-r--r-- | rustlings/exercises/quizzes/README.md | 3 | ||||
| -rw-r--r-- | rustlings/exercises/quizzes/quiz1.rs | 35 | ||||
| -rw-r--r-- | rustlings/exercises/quizzes/quiz2.rs | 81 | ||||
| -rw-r--r-- | rustlings/exercises/quizzes/quiz3.rs | 64 |
4 files changed, 0 insertions, 183 deletions
diff --git a/rustlings/exercises/quizzes/README.md b/rustlings/exercises/quizzes/README.md deleted file mode 100644 index 4d3bcd9..0000000 --- a/rustlings/exercises/quizzes/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Quizzes - -After every couple of sections, there will be a quiz in this directory that'll test your knowledge on a bunch of sections at once. diff --git a/rustlings/exercises/quizzes/quiz1.rs b/rustlings/exercises/quizzes/quiz1.rs deleted file mode 100644 index b787d7e..0000000 --- a/rustlings/exercises/quizzes/quiz1.rs +++ /dev/null @@ -1,35 +0,0 @@ -// This is a quiz for the following sections: -// - Variables -// - Functions -// - If -// -// Mary is buying apples. The price of an apple is calculated as follows: -// - An apple costs 2 rustbucks. -// - However, if Mary buys more than 40 apples, the price of each apple in the -// entire order is reduced to only 1 rustbuck! - -fn calculate_price_of_apples(n: i32) -> i32 { - if n > 40 { - n - } else { - 2 * n - } -} - -fn main() { - // You can optionally experiment here. -} - -// Don't change the tests! -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn verify_test() { - assert_eq!(calculate_price_of_apples(35), 70); - assert_eq!(calculate_price_of_apples(40), 80); - assert_eq!(calculate_price_of_apples(41), 41); - assert_eq!(calculate_price_of_apples(65), 65); - } -} diff --git a/rustlings/exercises/quizzes/quiz2.rs b/rustlings/exercises/quizzes/quiz2.rs deleted file mode 100644 index fd32810..0000000 --- a/rustlings/exercises/quizzes/quiz2.rs +++ /dev/null @@ -1,81 +0,0 @@ -// This is a quiz for the following sections: -// - Strings -// - Vecs -// - Move semantics -// - Modules -// - Enums -// -// Let's build a little machine in the form of a function. As input, we're going -// to give a list of strings and commands. These commands determine what action -// is going to be applied to the string. It can either be: -// - Uppercase the string -// - Trim the string -// - Append "bar" to the string a specified amount of times -// -// The exact form of this will be: -// - The input is going to be a Vector of 2-length tuples, -// the first element is the string, the second one is the command. -// - The output element is going to be a vector of strings. - -enum Command { - Uppercase, - Trim, - Append(usize), -} - -mod my_module { - use super::Command; - - // TODO: Complete the function as described above. - // pub fn transformer(input: ???) -> ??? { ??? } - pub fn transformer(input: Vec<(String, Command)>) -> Vec<String> { - let mut out = Vec::new(); - for inp in input { - out.push(match inp.1 { - Command::Uppercase => inp.0.to_uppercase(), - Command::Trim => String::from(inp.0.trim()), - Command::Append(n) => { - let mut r = inp.0; - for _ in 0..n { - r += "bar"; - } - r - } - }); - } - out - } -} - -fn main() { - // You can optionally experiment here. -} - -#[cfg(test)] -mod tests { - // TODO: What do we need to import to have `transformer` in scope? - // use ???; - use super::Command; - use super::my_module::transformer; - - #[test] - fn it_works() { - let input = vec![ - ("hello".to_string(), Command::Uppercase), - (" all roads lead to rome! ".to_string(), Command::Trim), - ("foo".to_string(), Command::Append(1)), - ("bar".to_string(), Command::Append(5)), - ]; - let output = transformer(input); - - assert_eq!( - output, - [ - "HELLO", - "all roads lead to rome!", - "foobar", - "barbarbarbarbarbar", - ] - ); - } -} diff --git a/rustlings/exercises/quizzes/quiz3.rs b/rustlings/exercises/quizzes/quiz3.rs deleted file mode 100644 index 5bb859f..0000000 --- a/rustlings/exercises/quizzes/quiz3.rs +++ /dev/null @@ -1,64 +0,0 @@ -// This quiz tests: -// - Generics -// - Traits -// -// An imaginary magical school has a new report card generation system written -// in Rust! Currently, the system only supports creating report cards where the -// student's grade is represented numerically (e.g. 1.0 -> 5.5). However, the -// school also issues alphabetical grades (A+ -> F-) and needs to be able to -// print both types of report card! -// -// Make the necessary code changes in the struct `ReportCard` and the impl -// block to support alphabetical report cards in addition to numerical ones. - -// TODO: Adjust the struct as described above. -struct ReportCard<T> { - grade: T, - student_name: String, - student_age: u8, -} - -// TODO: Adjust the impl block as described above. -impl<T: std::fmt::Display> ReportCard<T> { - fn print(&self) -> String { - format!( - "{} ({}) - achieved a grade of {}", - &self.student_name, &self.student_age, &self.grade, - ) - } -} - -fn main() { - // You can optionally experiment here. -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn generate_numeric_report_card() { - let report_card = ReportCard { - grade: 2.1, - student_name: "Tom Wriggle".to_string(), - student_age: 12, - }; - assert_eq!( - report_card.print(), - "Tom Wriggle (12) - achieved a grade of 2.1", - ); - } - - #[test] - fn generate_alphabetic_report_card() { - let report_card = ReportCard { - grade: "A+", - student_name: "Gary Plotter".to_string(), - student_age: 11, - }; - assert_eq!( - report_card.print(), - "Gary Plotter (11) - achieved a grade of A+", - ); - } -} |