diff --git a/subjects/blood_types_s/main.rs b/subjects/blood_types_s/main.rs new file mode 100644 index 00000000..60fd9be3 --- /dev/null +++ b/subjects/blood_types_s/main.rs @@ -0,0 +1,19 @@ +use blood_types_s::{Antigen, BloodType, RhFactor}; + +fn main() { + let blood_type = BloodType { + antigen: Antigen::O, + rh_factor: RhFactor::Positive, + }; + println!("recipients of O+ {:?}", blood_type.recipients()); + println!("donors of O+ {:?}", blood_type.donors()); + let another_blood_type = BloodType { + antigen: Antigen::O, + rh_factor: RhFactor::Positive, + }; + println!( + "donors of O+ can receive from {:?} {:?}", + &another_blood_type, + blood_type.can_receive_from(&another_blood_type) + ); +} diff --git a/subjects/car_rental/main.rs b/subjects/car_rental/main.rs new file mode 100644 index 00000000..7c8923da --- /dev/null +++ b/subjects/car_rental/main.rs @@ -0,0 +1,31 @@ +use car_rental::*; +use std::cell::RefCell; + +fn main() { + let car_rental = RentalBusiness { + car: RefCell::new(Car { + color: "red".to_string(), + plate: "AAA".to_string(), + }), + }; + + println!("{:?}", car_rental.rent_car()); + println!("{:?}", car_rental.repair_car()); + + { + let mut car = car_rental.repair_car(); + car.color = "blue".to_string(); + } + + println!("{:?}", car_rental.rent_car()); + + car_rental.change_car(Car { + color: "pink".to_string(), + plate: "WWW".to_string(), + }); + + println!("{:?}", car_rental.rent_car()); + + println!("{:?}", car_rental.sell_car()); + println!("{:?}", car_rental.sell_car()); +} diff --git a/subjects/check_user_name/main.rs b/subjects/check_user_name/main.rs new file mode 100644 index 00000000..a6204cd9 --- /dev/null +++ b/subjects/check_user_name/main.rs @@ -0,0 +1,12 @@ +use check_user_name::*; + +fn main() { + let user0 = User::new("Didier".to_string(), AccessLevel::Admin); + println!("{:?}", check_user_name(&user0)); + + let user1 = User::new("Mary".to_string(), AccessLevel::Normal); + println!("{:?}", check_user_name(&user1)); + + let user2 = User::new("John".to_string(), AccessLevel::Guest); + println!("{:?}", check_user_name(&user2)); +} diff --git a/subjects/count_factorial_steps/main.rs b/subjects/count_factorial_steps/main.rs new file mode 100644 index 00000000..32d18fcd --- /dev/null +++ b/subjects/count_factorial_steps/main.rs @@ -0,0 +1,10 @@ +use count_factorial_steps::count_factorial_steps; + +fn main() { + println!( + "The factorial steps of 720 = {}", + count_factorial_steps(720) + ); + println!("The factorial steps of 13 = {}", count_factorial_steps(13)); + println!("The factorial steps of 6 = {}", count_factorial_steps(6)); +} diff --git a/subjects/counting_words/main.rs b/subjects/counting_words/main.rs new file mode 100644 index 00000000..eced2a4c --- /dev/null +++ b/subjects/counting_words/main.rs @@ -0,0 +1,9 @@ +use counting_words::counting_words; +use std::collections::HashMap; + +fn main() { + println!("{:?}", counting_words("Hello, world!")); + println!("{:?}", counting_words("“Two things are infinite: the universe and human stupidity; and I'm not sure about the universe.” + ― Albert Einstein ")); + println!("{:?}", counting_words("Batman, BATMAN, batman, Stop stop")); +} diff --git a/subjects/display_table/main.rs b/subjects/display_table/main.rs new file mode 100644 index 00000000..72389813 --- /dev/null +++ b/subjects/display_table/main.rs @@ -0,0 +1,29 @@ +fn main() { + let mut table = Table::new(); + println!("{}", table); + table.headers = vec![ + String::from("Model"), + String::from("Piece N°"), + String::from("In Stock"), + String::from("Description"), + ]; + table.add_row(&[ + String::from("model 1"), + String::from("43-EWQE304"), + String::from("30"), + String::from("Piece for x"), + ]); + table.add_row(&[ + String::from("model 2"), + String::from("98-QCVX5433"), + String::from("100000000"), + String::from("-"), + ]); + table.add_row(&[ + String::from("model y"), + String::from("78-NMNH"), + String::from("60"), + String::from("nothing"), + ]); + println!("{}", table); +} diff --git a/subjects/dress_code/main.rs b/subjects/dress_code/main.rs new file mode 100644 index 00000000..2e4d1b21 --- /dev/null +++ b/subjects/dress_code/main.rs @@ -0,0 +1,6 @@ +use negative_spelling::*; + +fn main() { + println!("{}", negative_spell(-1234)); + println!("{}", negative_spell(100)); +} diff --git a/subjects/drop_the_blog/main.rs b/subjects/drop_the_blog/main.rs new file mode 100644 index 00000000..837cfb9f --- /dev/null +++ b/subjects/drop_the_blog/main.rs @@ -0,0 +1,31 @@ +use drop_the_blog::*; +use std::rc::Rc; + +fn main() { + let blog = Blog::new(); + let (id, article) = blog.new_article(String::from("Winter is coming")); + let (id1, article1) = blog.new_article(String::from("The story of the universe")); + + article.discard(); + + println!("{:?}", (blog.is_dropped(id), id, &blog.drops)); + + article1.discard(); + println!("{:?}", (blog.is_dropped(id1), id1, &blog.drops)); + + let (id2, article2) = blog.new_article(String::from("How to cook 101")); + let article2 = Rc::new(article2); + let article2_clone = article2.clone(); + + drop(article2_clone); + + println!( + "{:?}", + ( + blog.is_dropped(id2), + id2, + &blog.drops, + Rc::strong_count(&article2) + ) + ); +} diff --git a/subjects/filter_table/main.rs b/subjects/filter_table/main.rs new file mode 100644 index 00000000..060f0bee --- /dev/null +++ b/subjects/filter_table/main.rs @@ -0,0 +1,28 @@ +fn main() { + let mut table = Table::new(); + table.headers = vec![ + "Name".to_string(), + "Last Name".to_string(), + "ID Number".to_string(), + ]; + table.add_row(&[ + "Adam".to_string(), + "Philips".to_string(), + "123456789".to_string(), + ]); + table.add_row(&[ + "Adamaris".to_string(), + "Shelby".to_string(), + "1111123456789".to_string(), + ]); + table.add_row(&[ + "Ackerley".to_string(), + "Philips".to_string(), + "123456789".to_string(), + ]); + let filter_names = |col: &str| col == "Name"; + println!("{:?}", table.filter_col(filter_names)); + + let filter_philips = |lastname: &str| lastname == "Philips"; + println!("{:?}", table.filter_row("Last Name", filter_philips)); +} diff --git a/subjects/flat_tree/main.rs b/subjects/flat_tree/main.rs new file mode 100644 index 00000000..abf25c3f --- /dev/null +++ b/subjects/flat_tree/main.rs @@ -0,0 +1,15 @@ +fn main() { + let mut tree = BTreeSet::new(); + tree.insert(34); + tree.insert(0); + tree.insert(9); + tree.insert(30); + println!("{:?}", flatten_tree(&tree)); + + let mut tree = BTreeSet::new(); + tree.insert("Slow"); + tree.insert("kill"); + tree.insert("will"); + tree.insert("Horses"); + println!("{:?}", flatten_tree(&tree)); +} diff --git a/subjects/format_me/main.rs b/subjects/format_me/main.rs new file mode 100644 index 00000000..4890d7e5 --- /dev/null +++ b/subjects/format_me/main.rs @@ -0,0 +1,24 @@ +use format_me::*; + +fn main() { + println!( + "{}", + Park { + name: "Les Tuileries".to_string(), + park_type: ParkType::Garden, + address: "Pl. de la Concorde".to_string(), + cap: "75001".to_string(), + state: "France".to_string() + } + ); + println!( + "{}", + Park { + name: "".to_string(), + park_type: ParkType::Playground, + address: "".to_string(), + cap: "".to_string(), + state: "".to_string() + } + ); +} diff --git a/subjects/get_document_id/README.md b/subjects/get_document_id/README.md index 77d63f1f..5484dc55 100644 --- a/subjects/get_document_id/README.md +++ b/subjects/get_document_id/README.md @@ -86,6 +86,7 @@ fn main() { Err(err) => println!("Error: {:?}", err), }; } + ``` And its output: diff --git a/subjects/get_document_id/main.rs b/subjects/get_document_id/main.rs new file mode 100644 index 00000000..689833ad --- /dev/null +++ b/subjects/get_document_id/main.rs @@ -0,0 +1,29 @@ +use get_document_id::*; + +fn main() { + let office_ok = OfficeOne { + next_office: Ok(OfficeTwo { + next_office: Ok(OfficeThree { + next_office: Ok(OfficeFour { + document_id: Ok(13), + }), + }), + }), + }; + let office_closed = { + OfficeOne { + next_office: Ok(OfficeTwo { + next_office: Err(ErrorOffice::OfficeClose(23)), + }), + } + }; + + match office_ok.get_document_id() { + Ok(id) => println!("Found a document with id {}", id), + Err(err) => println!("Error: {:?}", err), + }; + match office_closed.get_document_id() { + Ok(id) => println!("Found a document with id {}", id), + Err(err) => println!("Error: {:?}", err), + }; +} diff --git a/subjects/insertion_sort/main.rs b/subjects/insertion_sort/main.rs new file mode 100644 index 00000000..7845b7dd --- /dev/null +++ b/subjects/insertion_sort/main.rs @@ -0,0 +1,13 @@ +fn main() { + let mut target = [5, 3, 7, 2, 1, 6, 8, 4]; + // executes the first iteration of the algorithm + insertion_sort(&mut target, 1); + println!("{:?}", target); + + let mut target = [5, 3, 7, 2, 1, 6, 8, 4]; + let len = target.len(); + // executes len - 1 iterations of the algorithm + // i.e. sorts the slice + insertion_sort(&mut target, len - 1); + println!("{:?}", target); +} diff --git a/subjects/inv_pyramid/main.rs b/subjects/inv_pyramid/main.rs new file mode 100644 index 00000000..d8b2df66 --- /dev/null +++ b/subjects/inv_pyramid/main.rs @@ -0,0 +1,19 @@ +fn main() { + let a = inv_pyramid(String::from("#"), 1); + let b = inv_pyramid(String::from("a"), 2); + let c = inv_pyramid(String::from(">"), 5); + let d = inv_pyramid(String::from("&"), 8); + + for v in a.iter() { + println!("{:?}", v); + } + for v in b.iter() { + println!("{:?}", v); + } + for v in c.iter() { + println!("{:?}", v); + } + for v in d.iter() { + println!("{:?}", v); + } +} diff --git a/subjects/lucas_number/main.rs b/subjects/lucas_number/main.rs new file mode 100644 index 00000000..ecc5c0ff --- /dev/null +++ b/subjects/lucas_number/main.rs @@ -0,0 +1,24 @@ +use lucas_number::lucas_number; + +fn main() { + println!( + "The element in the position {} in Lucas Numbres is {}", + 2, + lucas_number(2) + ); + println!( + "The element in the position {} in Lucas Numbres is {}", + 5, + lucas_number(5) + ); + println!( + "The element in the position {} in Lucas Numbres is {}", + 10, + lucas_number(10) + ); + println!( + "The element in the position {} in Lucas Numbres is {}", + 13, + lucas_number(13) + ); +} diff --git a/subjects/lunch_queue/main.rs b/subjects/lunch_queue/main.rs new file mode 100644 index 00000000..f28bb371 --- /dev/null +++ b/subjects/lunch_queue/main.rs @@ -0,0 +1,17 @@ +fn main() { + let mut list = Queue::new(); + list.add(String::from("Marie"), 20); + list.add(String::from("Monica"), 15); + list.add(String::from("Ana"), 5); + list.add(String::from("Alice"), 35); + println!("{:?}", list); + + println!("{:?}", list.search("Marie")); + println!("{:?}", list.search("Alice")); + println!("{:?}", list.search("someone")); + + println!("removed {:?}", list.rm()); + println!("list {:?}", list); + list.invert_queue(); + println!("invert {:?}", list); +} diff --git a/subjects/matrix_determinant/main.rs b/subjects/matrix_determinant/main.rs new file mode 100644 index 00000000..30ecbdab --- /dev/null +++ b/subjects/matrix_determinant/main.rs @@ -0,0 +1,8 @@ +fn main() { + let matrix = [[1, 2, 4], [2, -1, 3], [4, 0, 1]]; + + println!( + "The determinant of the matrix:\n|1 2 4|\n|2 -1 3| = {}\n|4 0 1|", + matrix_determinant(matr) + ); +} diff --git a/subjects/matrix_display/main.rs b/subjects/matrix_display/main.rs new file mode 100644 index 00000000..34c270e1 --- /dev/null +++ b/subjects/matrix_display/main.rs @@ -0,0 +1,4 @@ +fn main() { + let matrix = Matrix::new(&[&[1, 2, 3], &[4, 5, 6], &[7, 8, 9]]); + println!("{}", matrix); +} diff --git a/subjects/matrix_multiplication/main.rs b/subjects/matrix_multiplication/main.rs new file mode 100644 index 00000000..373500e8 --- /dev/null +++ b/subjects/matrix_multiplication/main.rs @@ -0,0 +1,7 @@ +use matrix_multiplication::*; + +fn main() { + let matrix = Matrix((1, 3), (4, 5)); + println!("Original matrix {:?}", matrix); + println!("Matrix after multiply {:?}", multiply(matrix, 3)); +} diff --git a/subjects/min_and_max/main.rs b/subjects/min_and_max/main.rs new file mode 100644 index 00000000..294870c1 --- /dev/null +++ b/subjects/min_and_max/main.rs @@ -0,0 +1,5 @@ +use min_and_max::min_and_max; + +fn main() { + println!("Minimum and maximum are: {:?}", min_and_max(9, 2, 4)); +} diff --git a/subjects/modify_letter/main.rs b/subjects/modify_letter/main.rs new file mode 100644 index 00000000..0a3f3172 --- /dev/null +++ b/subjects/modify_letter/main.rs @@ -0,0 +1,7 @@ +use modify_letter::*modify_letter*; + +fn main() { + println!("{}", remove_letter_sensitive("Jojhn jis sljeepjjing", 'j')); + println!("{}", remove_letter_insensitive("JaimA ais swiaAmmingA", 'A')); + println!("{}", swap_letter_case("byE bye", 'e')); +} diff --git a/subjects/moving_targets/main.rs b/subjects/moving_targets/main.rs new file mode 100644 index 00000000..4565bb73 --- /dev/null +++ b/subjects/moving_targets/main.rs @@ -0,0 +1,14 @@ +use moving_targets::*; + +fn main() { + let mut field = Field::new(); + + println!("{:?}", field.pop()); + field.push(Target { size: 12, xp: 2 }); + println!("{:?}", *field.peek().unwrap()); + field.push(Target { size: 24, xp: 4 }); + println!("{:?}", field.pop()); + let last_target = field.peek_mut().unwrap(); + *last_target = Target { size: 2, xp: 0 }; + println!("{:?}", field.pop()); +} diff --git a/subjects/nextprime/main.rs b/subjects/nextprime/main.rs new file mode 100644 index 00000000..2354ee4a --- /dev/null +++ b/subjects/nextprime/main.rs @@ -0,0 +1,4 @@ +fn main() { + println!("The next prime after 4 is: {}", next_prime(4)); + println!("The next prime after 11 is: {}", next_prime(11)); +} diff --git a/subjects/office_worker/main.rs b/subjects/office_worker/main.rs new file mode 100644 index 00000000..99f4e206 --- /dev/null +++ b/subjects/office_worker/main.rs @@ -0,0 +1,9 @@ +use office_worker::*; + +fn main() { + println!("New worker: {:?}", OfficeWorker::from("Manuel,23,admin")); + println!( + "New worker: {:?}", + OfficeWorker::from("Jean Jacques,44,guest") + ); +} diff --git a/subjects/order_books/main.rs b/subjects/order_books/main.rs new file mode 100644 index 00000000..bb5a02f8 --- /dev/null +++ b/subjects/order_books/main.rs @@ -0,0 +1,39 @@ +pub use library::books::Book; +pub use library::writers::Writer; + +fn main() { + let mut writer_a = Writer { + first_name: "William".to_string(), + last_name: "Shakespeare".to_string(), + books: vec![ + Book { + title: "Hamlet".to_string(), + year: 1600, + }, + Book { + title: "Othelo".to_string(), + year: 1603, + }, + Book { + title: "Romeo and Juliet".to_string(), + year: 1593, + }, + Book { + title: "MacBeth".to_string(), + year: 1605, + }, + ], + }; + + println!("Before ordering"); + for b in &writer_a.books { + println!("{:?}", b.title); + } + + order_books(&mut writer_a); + + println!("\nAfter ordering"); + for b in writer_a.books { + println!("{:?}", b.title); + } +} diff --git a/subjects/organize_garage/main.rs b/subjects/organize_garage/main.rs new file mode 100644 index 00000000..aa4d86e8 --- /dev/null +++ b/subjects/organize_garage/main.rs @@ -0,0 +1,14 @@ +use organize_garage::*; + +fn main() { + let mut garage = Garage { + left: Some(5), + right: Some(2), + }; + + println!("{:?}", garage); + garage.move_to_right(); + println!("{:?}", garage); + garage.move_to_left(); + println!("{:?}", garage); +} diff --git a/subjects/own_and_return/README.md b/subjects/own_and_return/README.md index 86ee4d8c..14517c56 100644 --- a/subjects/own_and_return/README.md +++ b/subjects/own_and_return/README.md @@ -22,7 +22,6 @@ pub fn read_film_name(/* to be implemented */) -> String { pub fn take_film_name(/* to be implemented */) -> String { } - ``` ### Usage @@ -32,7 +31,6 @@ Here is a possible program to test your function: ```rust use own_and_return::*; - pub struct Film { pub name: String, } @@ -47,6 +45,7 @@ fn main() { // you can test this function by commenting out the first print statement, // you should see the expected output without errors in this case } + ``` And its output: diff --git a/subjects/own_and_return/main.rs b/subjects/own_and_return/main.rs new file mode 100644 index 00000000..96e8a7d3 --- /dev/null +++ b/subjects/own_and_return/main.rs @@ -0,0 +1,18 @@ +use own_and_return::*; + +pub struct Film { + pub name: String, +} + +fn main() { + let my_film = Film { + name: "Terminator".toString(), + }; + println!("{}", take_film_name(/* to be implemented */)); + // the order of the print statements is intentional, if your implementation is correct, + // you should have a compile error because my_film was consumed + println!("{}", read_film_name(/* to be implemented */)); + println!("{}", take_film_name(/*to be implemented*/)) + // you can test this function by commenting out the first print statement, + // you should see the expected output without errors in this case +} diff --git a/subjects/partial_sums/main.rs b/subjects/partial_sums/main.rs new file mode 100644 index 00000000..eb2cd31e --- /dev/null +++ b/subjects/partial_sums/main.rs @@ -0,0 +1,6 @@ +fn main() { + println!( + "Partial sums of [5, 18, 3, 23] is : {:?}", + parts_sums(&[5, 18, 3, 23]) + ); +} diff --git a/subjects/previousprime/main.rs b/subjects/previousprime/main.rs new file mode 100644 index 00000000..b0766729 --- /dev/null +++ b/subjects/previousprime/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("The previous prime number before 34 is: {}", prev_prime(34)); +} diff --git a/subjects/prime_checker/main.rs b/subjects/prime_checker/main.rs new file mode 100644 index 00000000..bb8bfe4c --- /dev/null +++ b/subjects/prime_checker/main.rs @@ -0,0 +1,7 @@ +use prime_checker::*; + +fn main() { + println!("Is {} prime? {:?}", 2, prime_checker(2)); + println!("Is {} prime? {:?}", 14, prime_checker(14)); + println!("Is {} prime? {:?}", 2147483647, prime_checker(2147483647)); +} diff --git a/subjects/profanity_filter/main.rs b/subjects/profanity_filter/main.rs new file mode 100644 index 00000000..02607b9a --- /dev/null +++ b/subjects/profanity_filter/main.rs @@ -0,0 +1,15 @@ +use profanity_filter::*; + +fn main() { + let m0 = Message::new("hello there".to_string(), "toby".to_string()); + println!("{:?}", check_ms(&m0)); + + let m1 = Message::new("".to_string(), "toby".to_string()); + println!("{:?}", check_ms(&m1)); + + let m2 = Message::new("you are stupid".to_string(), "toby".to_string()); + println!("{:?}", check_ms(&m2)); + + let m3 = Message::new("stupid".to_string(), "toby".to_string()); + println!("{:?}", check_ms(&m3)); +} diff --git a/subjects/queens/main.rs b/subjects/queens/main.rs new file mode 100644 index 00000000..f07f24e1 --- /dev/null +++ b/subjects/queens/main.rs @@ -0,0 +1,17 @@ +fn main() { + let white_queen = Queen::new(ChessPosition::new(2, 2).unwrap()); + let black_queen = Queen::new(ChessPosition::new(0, 4).unwrap()); + + println!( + "Is it possible for the queens to attack each other? => {}", + white_queen.can_attack(&black_queen) + ); + + let white_queen = Queen::new(ChessPosition::new(1, 2).unwrap()); + let black_queen = Queen::new(ChessPosition::new(0, 4).unwrap()); + + println!( + "Is it possible for the queens to attack each other? => {}", + white_queen.can_attack(&black_queen) + ); +} diff --git a/subjects/reverse_it/main.rs b/subjects/reverse_it/main.rs new file mode 100644 index 00000000..f5464a8c --- /dev/null +++ b/subjects/reverse_it/main.rs @@ -0,0 +1,4 @@ +fn main() { + println!("{}", reverse_it(123)); + println!("{}", reverse_it(-123)); +} diff --git a/subjects/rot21/main.rs b/subjects/rot21/main.rs new file mode 100644 index 00000000..fc32129a --- /dev/null +++ b/subjects/rot21/main.rs @@ -0,0 +1,9 @@ +use rot21::rot21; + +fn main() { + println!("The letter \"a\" becomes: {}", rot21("a")); + println!("The letter \"m\" becomes: {}", rot21("m")); + println!("The word \"MISS\" becomes: {}", rot21("MISS")); + println!("Your cypher wil be: {}", rot21("Testing numbers 1 2 3")); + println!("Your cypher wil be: {}", rot21("rot21 works!")); +} diff --git a/subjects/scytale_decoder/main.rs b/subjects/scytale_decoder/main.rs new file mode 100644 index 00000000..79630144 --- /dev/null +++ b/subjects/scytale_decoder/main.rs @@ -0,0 +1,11 @@ +fn main() { + println!( + "\"sec yCtoadle\" size=2 -> {:?}", + scytale_decoder("sec yCtoadle".to_string(), 2) + ); + + println!( + "\"steoca dylCe\" size=4 -> {:?}", + scytale_decoder("steoca dylCe".to_string(), 4) + ); +} diff --git a/subjects/smallest/main.rs b/subjects/smallest/main.rs new file mode 100644 index 00000000..1f2f166d --- /dev/null +++ b/subjects/smallest/main.rs @@ -0,0 +1,15 @@ +use smallest::smallest; +use std::collections::HashMap; + +fn main() { + let mut hash = HashMap::new(); + hash.insert("Cat", 122); + hash.insert("Dog", 333); + hash.insert("Elephant", 334); + hash.insert("Gorilla", 14); + + println!( + "The smallest of the elements in the HashMap is {}", + smallest(hash) + ); +}