You've already forked rust-tutor
improved solution to exercise
This commit is contained in:
@@ -9,8 +9,8 @@
|
|||||||
- ✅ Chapters 1-3: Basics, Variables, Functions, Control Flow
|
- ✅ Chapters 1-3: Basics, Variables, Functions, Control Flow
|
||||||
- ✅ Chapter 4: Ownership, Borrowing, Slices
|
- ✅ Chapter 4: Ownership, Borrowing, Slices
|
||||||
- ✅ Chapters 5-6: Structs, Enums, Pattern Matching
|
- ✅ Chapters 5-6: Structs, Enums, Pattern Matching
|
||||||
- 🔄 Chapter 7: Modules (Starting now)
|
- ✅ Chapter 7: Modules
|
||||||
- ⏳ Chapter 8: Collections
|
- ✅ Chapter 8: Collections
|
||||||
- ⏳ Chapter 9: Error Handling
|
- ⏳ Chapter 9: Error Handling
|
||||||
|
|
||||||
## Exercise Completion Log
|
## Exercise Completion Log
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
fn main() {
|
fn main() {
|
||||||
let test_vec = vec![1, 2, 2, 2, 2, 3, 4, 5]; // should return (3.0, 3, 3)
|
let test_vec = vec![1, 2, 2, 3, 4, 5, 9, 9, 9, 9];
|
||||||
|
|
||||||
println!("{:?}", calculate_stats(test_vec));
|
println!("{:?}", calculate_stats(test_vec));
|
||||||
}
|
}
|
||||||
@@ -12,55 +12,41 @@ struct Stats {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn calculate_stats(numbers: Vec<i32>) -> Stats {
|
fn calculate_stats(numbers: Vec<i32>) -> Stats {
|
||||||
use std::collections::HashMap;
|
let mut numbers = numbers.clone();
|
||||||
let mut tmp: Vec<i32> = numbers;
|
numbers.sort();
|
||||||
let len = tmp.len();
|
// let mut median = 0;
|
||||||
tmp.sort();
|
|
||||||
|
|
||||||
let mut median: i32 = 0;
|
|
||||||
|
|
||||||
// median
|
// median
|
||||||
if len % 2 != 0 {
|
let len = numbers.len();
|
||||||
median = tmp[len / 2];
|
let median = if len % 2 != 0 {
|
||||||
|
numbers[len / 2]
|
||||||
} else {
|
} else {
|
||||||
median = (tmp[len / 2] + tmp[(len / 2) - 1]) / 2;
|
(numbers[len / 2] + numbers[(len / 2) - 1]) / 2
|
||||||
}
|
};
|
||||||
|
|
||||||
// mean
|
// mean
|
||||||
let mut sum: i32 = 0;
|
let sum: i32 = numbers.iter().sum();
|
||||||
|
|
||||||
let tmp2 = tmp.clone();
|
|
||||||
for i in tmp2 {
|
|
||||||
sum += i;
|
|
||||||
}
|
|
||||||
|
|
||||||
let mean = sum as f64 / len as f64;
|
let mean = sum as f64 / len as f64;
|
||||||
|
|
||||||
//mode
|
//mode
|
||||||
|
use std::collections::HashMap;
|
||||||
let mut map = HashMap::new();
|
let mut map = HashMap::new();
|
||||||
|
|
||||||
let tmp3 = tmp.clone();
|
for num in numbers {
|
||||||
|
|
||||||
for num in tmp3 {
|
|
||||||
let count = map.entry(num).or_insert(0);
|
let count = map.entry(num).or_insert(0);
|
||||||
*count += 1;
|
*count += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
let tmp4 = tmp.clone();
|
let mut mode = 0;
|
||||||
|
let mut max_count = 0;
|
||||||
let mut mode_calc = *map.get(&1).unwrap();
|
|
||||||
|
|
||||||
let mut mode: i32 = 0;
|
|
||||||
|
|
||||||
for (k, v) in map {
|
for (k, v) in map {
|
||||||
if v > mode_calc {
|
if v > max_count {
|
||||||
mode = k;
|
mode = k;
|
||||||
|
max_count = v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
println!("{:?}", tmp4);
|
|
||||||
|
|
||||||
let return_value = Stats {
|
let return_value = Stats {
|
||||||
mean: mean,
|
mean: mean,
|
||||||
median: median,
|
median: median,
|
||||||
|
|||||||
Reference in New Issue
Block a user