diff --git a/PROGRESS.md b/PROGRESS.md index cf8174b..533872e 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -9,8 +9,8 @@ - ✅ Chapters 1-3: Basics, Variables, Functions, Control Flow - ✅ Chapter 4: Ownership, Borrowing, Slices - ✅ Chapters 5-6: Structs, Enums, Pattern Matching -- 🔄 Chapter 7: Modules (Starting now) -- ⏳ Chapter 8: Collections +- ✅ Chapter 7: Modules +- ✅ Chapter 8: Collections - ⏳ Chapter 9: Error Handling ## Exercise Completion Log diff --git a/exercises/vec-stats/src/main.rs b/exercises/vec-stats/src/main.rs index 5e2b190..7ffbb06 100644 --- a/exercises/vec-stats/src/main.rs +++ b/exercises/vec-stats/src/main.rs @@ -1,5 +1,5 @@ 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)); } @@ -12,55 +12,41 @@ struct Stats { } fn calculate_stats(numbers: Vec) -> Stats { - use std::collections::HashMap; - let mut tmp: Vec = numbers; - let len = tmp.len(); - tmp.sort(); - - let mut median: i32 = 0; + let mut numbers = numbers.clone(); + numbers.sort(); + // let mut median = 0; // median - if len % 2 != 0 { - median = tmp[len / 2]; + let len = numbers.len(); + let median = if len % 2 != 0 { + numbers[len / 2] } else { - median = (tmp[len / 2] + tmp[(len / 2) - 1]) / 2; - } + (numbers[len / 2] + numbers[(len / 2) - 1]) / 2 + }; // mean - let mut sum: i32 = 0; - - let tmp2 = tmp.clone(); - for i in tmp2 { - sum += i; - } - + let sum: i32 = numbers.iter().sum(); let mean = sum as f64 / len as f64; //mode - + use std::collections::HashMap; let mut map = HashMap::new(); - let tmp3 = tmp.clone(); - - for num in tmp3 { + for num in numbers { let count = map.entry(num).or_insert(0); *count += 1; } - let tmp4 = tmp.clone(); - - let mut mode_calc = *map.get(&1).unwrap(); - - let mut mode: i32 = 0; + let mut mode = 0; + let mut max_count = 0; for (k, v) in map { - if v > mode_calc { + if v > max_count { mode = k; + max_count = v; } } - println!("{:?}", tmp4); - let return_value = Stats { mean: mean, median: median,