mirror of https://github.com/01-edu/public.git
fix(rust-piscine) adding a new file for code editor to use
This commit is contained in:
parent
70393b26e6
commit
1aa3484757
|
@ -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)
|
||||
);
|
||||
}
|
|
@ -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());
|
||||
}
|
|
@ -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));
|
||||
}
|
|
@ -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));
|
||||
}
|
|
@ -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"));
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
use negative_spelling::*;
|
||||
|
||||
fn main() {
|
||||
println!("{}", negative_spell(-1234));
|
||||
println!("{}", negative_spell(100));
|
||||
}
|
|
@ -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)
|
||||
)
|
||||
);
|
||||
}
|
|
@ -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));
|
||||
}
|
|
@ -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));
|
||||
}
|
|
@ -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()
|
||||
}
|
||||
);
|
||||
}
|
|
@ -86,6 +86,7 @@ fn main() {
|
|||
Err(err) => println!("Error: {:?}", err),
|
||||
};
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
And its output:
|
||||
|
|
|
@ -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),
|
||||
};
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
);
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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)
|
||||
);
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
fn main() {
|
||||
let matrix = Matrix::new(&[&[1, 2, 3], &[4, 5, 6], &[7, 8, 9]]);
|
||||
println!("{}", matrix);
|
||||
}
|
|
@ -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));
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
use min_and_max::min_and_max;
|
||||
|
||||
fn main() {
|
||||
println!("Minimum and maximum are: {:?}", min_and_max(9, 2, 4));
|
||||
}
|
|
@ -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'));
|
||||
}
|
|
@ -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());
|
||||
}
|
|
@ -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));
|
||||
}
|
|
@ -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")
|
||||
);
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
fn main() {
|
||||
println!(
|
||||
"Partial sums of [5, 18, 3, 23] is : {:?}",
|
||||
parts_sums(&[5, 18, 3, 23])
|
||||
);
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println!("The previous prime number before 34 is: {}", prev_prime(34));
|
||||
}
|
|
@ -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));
|
||||
}
|
|
@ -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));
|
||||
}
|
|
@ -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)
|
||||
);
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
fn main() {
|
||||
println!("{}", reverse_it(123));
|
||||
println!("{}", reverse_it(-123));
|
||||
}
|
|
@ -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!"));
|
||||
}
|
|
@ -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)
|
||||
);
|
||||
}
|
|
@ -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)
|
||||
);
|
||||
}
|
Loading…
Reference in New Issue