ch08
This commit is contained in:
parent
eb9773627e
commit
10b29ad9cb
14 changed files with 164 additions and 0 deletions
BIN
ch8/ch10/hash
Executable file
BIN
ch8/ch10/hash
Executable file
Binary file not shown.
12
ch8/ch10/hash.rs
Normal file
12
ch8/ch10/hash.rs
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
fn main() {
|
||||
let field_name = String::from("field");
|
||||
let field_value = String::from("value");
|
||||
|
||||
let mut map = HashMap::new();
|
||||
map.insert(field_name, &field_value);
|
||||
|
||||
print!("{}", map.get("field").unwrap());
|
||||
print!("{}", field_value);
|
||||
}
|
||||
BIN
ch8/ch10/median_int
Executable file
BIN
ch8/ch10/median_int
Executable file
Binary file not shown.
32
ch8/ch10/median_int.rs
Normal file
32
ch8/ch10/median_int.rs
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
fn main() {
|
||||
let mut numbers = vec![100, 23, 1, 2, 100, 38, 57, 100, 23, 44, 163];
|
||||
numbers.sort();
|
||||
|
||||
let is_even = numbers.len() % 2 == 0;
|
||||
let median: i32;
|
||||
let mut count = HashMap::new();
|
||||
|
||||
if is_even {
|
||||
let n1 = numbers[(numbers.len() / 2) - 1];
|
||||
let n2 = numbers[numbers.len() / 2];
|
||||
median = (n1 + n2) / 2;
|
||||
} else {
|
||||
median = numbers[numbers.len() / 2];
|
||||
}
|
||||
|
||||
let mut mode: i32 = 0;
|
||||
|
||||
for num in numbers {
|
||||
let entry = count.entry(num).or_insert(0);
|
||||
*entry += 1;
|
||||
|
||||
if *entry > count.get(&mode).copied().unwrap_or(0) {
|
||||
mode = num;
|
||||
}
|
||||
}
|
||||
|
||||
println!("median: {median}");
|
||||
println!("mode: {mode}");
|
||||
}
|
||||
BIN
ch8/ch10/or_insert
Executable file
BIN
ch8/ch10/or_insert
Executable file
Binary file not shown.
11
ch8/ch10/or_insert.rs
Normal file
11
ch8/ch10/or_insert.rs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
fn main() {
|
||||
let mut scores = HashMap::new();
|
||||
scores.insert(String::from("Blue"), 10);
|
||||
|
||||
scores.entry(String::from("Yellow")).or_insert(50);
|
||||
scores.entry(String::from("Blue")).or_insert(50);
|
||||
|
||||
println!("{scores:?}");
|
||||
}
|
||||
BIN
ch8/ch10/overwrite
Executable file
BIN
ch8/ch10/overwrite
Executable file
Binary file not shown.
11
ch8/ch10/overwrite.rs
Normal file
11
ch8/ch10/overwrite.rs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
fn main() {
|
||||
let mut scores = HashMap::new();
|
||||
|
||||
scores.insert(String::from("Blue"), 10);
|
||||
scores.insert(String::from("Blue"), 25);
|
||||
|
||||
println!("{scores:?}");
|
||||
}
|
||||
|
||||
BIN
ch8/ch10/pig_latin
Executable file
BIN
ch8/ch10/pig_latin
Executable file
Binary file not shown.
22
ch8/ch10/pig_latin.rs
Normal file
22
ch8/ch10/pig_latin.rs
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
fn main() {
|
||||
let vowels = vec!['a', 'e', 'i', 'o', 'u'];
|
||||
let words = vec!["flow", "fool", "dick", "cock", "sex", "ape", "eel", "apple", "addicted", "ore"];
|
||||
|
||||
for word in words {
|
||||
let c = word.chars().next().unwrap();
|
||||
|
||||
let mut adj = format!("-{c}ay");
|
||||
|
||||
for vowel in vowels.iter() {
|
||||
if c != *vowel {
|
||||
continue;
|
||||
}
|
||||
|
||||
adj = String::from("-hay");
|
||||
break;
|
||||
}
|
||||
|
||||
let w = String::from(word) + &adj;
|
||||
println!("{w}");
|
||||
}
|
||||
}
|
||||
BIN
ch8/ch10/update_old
Executable file
BIN
ch8/ch10/update_old
Executable file
Binary file not shown.
13
ch8/ch10/update_old.rs
Normal file
13
ch8/ch10/update_old.rs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
fn main() {
|
||||
let text = "hello world wonderful world";
|
||||
let mut map = HashMap::new();
|
||||
|
||||
for word in text.split_whitespace() {
|
||||
let count = map.entry(word).or_insert(0);
|
||||
*count += 1;
|
||||
}
|
||||
|
||||
println!("{map:?}");
|
||||
}
|
||||
BIN
ch8/ch10/usrmgt
Executable file
BIN
ch8/ch10/usrmgt
Executable file
Binary file not shown.
63
ch8/ch10/usrmgt.rs
Normal file
63
ch8/ch10/usrmgt.rs
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
use std::io;
|
||||
use std::collections::HashMap;
|
||||
|
||||
fn main() {
|
||||
let mut departments: HashMap<String, Vec<String>> = HashMap::new();
|
||||
|
||||
loop {
|
||||
let mut input = String::new();
|
||||
io::stdin().read_line(&mut input).unwrap();
|
||||
|
||||
let words: Vec<&str> = input.split_whitespace().collect();
|
||||
|
||||
if words.is_empty() { continue; }
|
||||
|
||||
match words[0].to_lowercase().as_str() {
|
||||
"add" => {
|
||||
// Format: add [name] [department]
|
||||
if words.len() >= 3 {
|
||||
let v = departments.entry(String::from(words[2])).or_insert(Vec::new());
|
||||
v.push(String::from(words[1]));
|
||||
}
|
||||
},
|
||||
"del" => {
|
||||
// Format: del [name] [department]
|
||||
if words.len() >= 3 {
|
||||
let v = departments.entry(String::from(words[2])).or_insert(Vec::new());
|
||||
let mut idx: Option<usize> = None;
|
||||
|
||||
for (i, who2) in v.into_iter().enumerate() {
|
||||
if who2 == words[1] {
|
||||
idx = Some(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
match idx {
|
||||
Some(x) => { v.remove(x); () },
|
||||
None => (),
|
||||
};
|
||||
}
|
||||
},
|
||||
"ls" => {
|
||||
if words.len() == 1 {
|
||||
println!("{departments:?}");
|
||||
}
|
||||
if words.len() >= 2 {
|
||||
let dpt = String::from(words[1]);
|
||||
let ppl = departments.entry(dpt.clone()).or_insert(Vec::new());
|
||||
ppl.sort();
|
||||
|
||||
println!("The following people are in the {} department:", dpt);
|
||||
|
||||
for pp in ppl {
|
||||
println!("{pp}");
|
||||
}
|
||||
}
|
||||
},
|
||||
_ => println!("Unknown command"),
|
||||
}
|
||||
|
||||
println!("");
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue