aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-06-26 23:26:35 +0100
committerGitHub <noreply@github.com>2025-06-26 23:26:35 +0100
commit182bcd9945ea9f2c903d090bcc9898020c5e2b85 (patch)
tree85867e62f1bbf77ec3fa5691ed717d153ff70412
parentcb307d826c061cfc4677d2993677ecb68b42c769 (diff)
parent9a327407379a54d10fcee2eb38314804ffa2a684 (diff)
downloadperlweeklychallenge-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-xchallenge-327/roger-bell-west/rust/ch-1.rs32
-rwxr-xr-xchallenge-327/roger-bell-west/rust/ch-2.rs33
-rw-r--r--challenge-327/roger-bell-west/tests.json36
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] ]
+ }
+ ]
+}