diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2023-03-06 01:54:38 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-06 01:54:38 +0000 |
| commit | 23632a35cd0898831f905d6cff4c0934cabc57a9 (patch) | |
| tree | e08c35e40efc5711fbcb5be5476d2b4da1ac3d89 | |
| parent | 3cde7a484583d8898079b19f0bb5bfd760cc5dc9 (diff) | |
| parent | 269cc78a2098a1b25e7503bd0287ff3cdc788121 (diff) | |
| download | perlweeklychallenge-club-23632a35cd0898831f905d6cff4c0934cabc57a9.tar.gz perlweeklychallenge-club-23632a35cd0898831f905d6cff4c0934cabc57a9.tar.bz2 perlweeklychallenge-club-23632a35cd0898831f905d6cff4c0934cabc57a9.zip | |
Merge pull request #7670 from ealvar3z/challenge-206_eax
add Rust solution for week 206
| -rw-r--r-- | challenge-206/ealvar3z/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-206/ealvar3z/rust/src/main.rs | 65 |
2 files changed, 66 insertions, 0 deletions
diff --git a/challenge-206/ealvar3z/blog.txt b/challenge-206/ealvar3z/blog.txt new file mode 100644 index 0000000000..c3ad90c16b --- /dev/null +++ b/challenge-206/ealvar3z/blog.txt @@ -0,0 +1 @@ +https://eax.bearblog.dev/perl-challenge-weekly-206/ diff --git a/challenge-206/ealvar3z/rust/src/main.rs b/challenge-206/ealvar3z/rust/src/main.rs new file mode 100644 index 0000000000..29e228495a --- /dev/null +++ b/challenge-206/ealvar3z/rust/src/main.rs @@ -0,0 +1,65 @@ +use itertools::Itertools; + +pub fn task_one(time_points: &[&str]) -> i32 { + let mut minutes: Vec<i32> = time_points + .iter() + .map(|time| { + let parts: Vec<&str> = time.split(':').collect(); + let hours: i32 = parts[0].parse().unwrap(); + let mins: i32 = parts[1].parse().unwrap(); + hours * 60 + mins + }) + .collect(); + minutes.sort(); + let mut delta = 24 * 60; + let first = minutes[0]; + let last = minutes[minutes.len() - 1]; + let circular_diff = first + (delta - last); + delta = delta.min(circular_diff); + for i in 1..minutes.len() { + let diff = minutes[i] - minutes[i - 1]; + if diff < delta { + delta = diff; + } + } + println!("Output: {}", delta); + return delta; +} + +pub fn task_two(nums: &[i32]) -> i32 { + let sum = nums.iter() + .sorted() + .step_by(2) + .map(|x| *x) + .sum(); + println!("Output: {}", sum); + return sum; +} + +fn main() { + println!("Task 1"); + test_task_one(); + println!(); + println!("Task 2"); + test_task_two(); +} + +fn test_task_one() { + let a = ["00:00", "23:55", "20:00"]; + assert_eq!(task_one(&a), 5); + + let b = ["01:01", "00:50", "00:57"]; + assert_eq!(task_one(&b), 4); + + let c = ["10:10", "09:30", "09:00", "09:55"]; + assert_eq!(task_one(&c), 15); +} + +fn test_task_two() { + let a = [1, 2, 3, 4]; + assert_eq!(task_two(&a), 4); + + let b = [0, 2, 1, 3]; + assert_eq!(task_two(&b), 2); +} + |
