aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-03-06 01:54:38 +0000
committerGitHub <noreply@github.com>2023-03-06 01:54:38 +0000
commit23632a35cd0898831f905d6cff4c0934cabc57a9 (patch)
treee08c35e40efc5711fbcb5be5476d2b4da1ac3d89
parent3cde7a484583d8898079b19f0bb5bfd760cc5dc9 (diff)
parent269cc78a2098a1b25e7503bd0287ff3cdc788121 (diff)
downloadperlweeklychallenge-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.txt1
-rw-r--r--challenge-206/ealvar3z/rust/src/main.rs65
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);
+}
+