diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-06-26 23:26:35 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-26 23:26:35 +0100 |
| commit | 182bcd9945ea9f2c903d090bcc9898020c5e2b85 (patch) | |
| tree | 85867e62f1bbf77ec3fa5691ed717d153ff70412 | |
| parent | cb307d826c061cfc4677d2993677ecb68b42c769 (diff) | |
| parent | 9a327407379a54d10fcee2eb38314804ffa2a684 (diff) | |
| download | perlweeklychallenge-club-182bcd9945ea9f2c903d090bcc9898020c5e2b85.tar.gz perlweeklychallenge-club-182bcd9945ea9f2c903d090bcc9898020c5e2b85.tar.bz2 perlweeklychallenge-club-182bcd9945ea9f2c903d090bcc9898020c5e2b85.zip | |
Merge pull request #12242 from Firedrake/rogerbw-challenge-327
RogerBW solutions for challenge no. 327
| -rwxr-xr-x | challenge-327/roger-bell-west/rust/ch-1.rs | 32 | ||||
| -rwxr-xr-x | challenge-327/roger-bell-west/rust/ch-2.rs | 33 | ||||
| -rw-r--r-- | challenge-327/roger-bell-west/tests.json | 36 |
3 files changed, 101 insertions, 0 deletions
diff --git a/challenge-327/roger-bell-west/rust/ch-1.rs b/challenge-327/roger-bell-west/rust/ch-1.rs new file mode 100755 index 0000000000..6588ef7a58 --- /dev/null +++ b/challenge-327/roger-bell-west/rust/ch-1.rs @@ -0,0 +1,32 @@ +#! /bin/sh +//usr/bin/env rustc --test $0 -o ${0}x && ./${0}x --nocapture; rm -f ${0}x ; exit + +use std::collections::HashSet; + +#[test] +fn test_ex1() { + assert_eq!(missingintegers(vec![1, 2, 1, 3, 2, 5]), vec![4, 6]); +} + +#[test] +fn test_ex2() { + assert_eq!(missingintegers(vec![1, 1, 1]), vec![2, 3]); +} + +#[test] +fn test_ex3() { + assert_eq!(missingintegers(vec![2, 2, 1]), vec![3]); +} + +#[test] +fn test_ex4() { + assert_eq!(missingintegers(vec![2, 1]), Vec::<i32>::new()); +} + +fn missingintegers(a: Vec<i32>) -> Vec<i32> { + let range = (1..=a.len() as i32).collect::<HashSet<i32>>(); + let present = a.into_iter().collect::<HashSet<i32>>(); + let mut b = range.difference(&present).copied().collect::<Vec<i32>>(); + b.sort_unstable(); + b +} diff --git a/challenge-327/roger-bell-west/rust/ch-2.rs b/challenge-327/roger-bell-west/rust/ch-2.rs new file mode 100755 index 0000000000..1a0737f4df --- /dev/null +++ b/challenge-327/roger-bell-west/rust/ch-2.rs @@ -0,0 +1,33 @@ +use permutator::Combination; + +#[test] +fn test_ex1() { + assert_eq!(mad(vec![4, 1, 2, 3]), vec![vec![1, 2], vec![2, 3], vec![3, 4]]); +} + +#[test] +fn test_ex2() { + assert_eq!(mad(vec![1, 3, 7, 11, 15]), vec![vec![1, 3]]); +} + +#[test] +fn test_ex3() { + assert_eq!(mad(vec![1, 5, 3, 8]), vec![vec![1, 3], vec![3, 5]]); +} + +fn mad(a: Vec<i32>) -> Vec<Vec<i32>> { + let mut combs: Vec<Vec<i32>> = Vec::new(); + a.combination(2).for_each(|l| { + let mut m = l.clone(); + m.sort(); + combs.push(vec![*m[0], *m[1]]); + }); + let dif = combs.iter().map(|x| x[1] - x[0]).min().unwrap(); + let mut res = combs + .iter() + .cloned() + .filter(|x| x[1] - x[0] == dif) + .collect::<Vec<Vec<i32>>>(); + res.sort_unstable(); + res +} diff --git a/challenge-327/roger-bell-west/tests.json b/challenge-327/roger-bell-west/tests.json new file mode 100644 index 0000000000..4e25363528 --- /dev/null +++ b/challenge-327/roger-bell-west/tests.json @@ -0,0 +1,36 @@ +{ + "ch-1" : [ + { + "function" : "missingintegers", + "arguments" : [ 1, 2, 1, 3, 2, 5 ], + "result" : [ 4, 6 ] + }, + { + "arguments" : [ 1, 1, 1 ], + "result" : [ 2, 3 ] + }, + { + "arguments" : [ 2, 2, 1 ], + "result" : [ 3 ] + }, + { + "arguments" : [ 2, 1 ], + "result" : [ ] + } + ], + "ch-2" : [ + { + "function" : "mad", + "arguments" : [ 4, 1, 2, 3 ], + "result" : [ [1,2], [2,3], [3,4] ] + }, + { + "arguments" : [ 1, 3, 7, 11, 15 ], + "result" : [ [ 1, 3 ] ] + }, + { + "arguments" : [ 1, 5, 3, 8 ], + "result" : [ [1,3], [3,5] ] + } + ] +} |
