aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2025-06-29 17:48:48 -0400
committerJaldhar H. Vyas <jaldhar@braincells.com>2025-06-29 17:48:48 -0400
commit9fd0668a04dea93a9f87119759a3c7ecbc0beebf (patch)
tree9f06a566adc9f796d3a11ce7f06c95de4d16b9bd
parent3495f39a1245ae75e4aa8c3862186211a5b33a5b (diff)
downloadperlweeklychallenge-club-9fd0668a04dea93a9f87119759a3c7ecbc0beebf.tar.gz
perlweeklychallenge-club-9fd0668a04dea93a9f87119759a3c7ecbc0beebf.tar.bz2
perlweeklychallenge-club-9fd0668a04dea93a9f87119759a3c7ecbc0beebf.zip
Challenge 327 by Jaldhar H. Vyas.
-rw-r--r--challenge-327/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-327/jaldhar-h-vyas/perl/ch-1.pl29
-rwxr-xr-xchallenge-327/jaldhar-h-vyas/perl/ch-2.pl36
-rwxr-xr-xchallenge-327/jaldhar-h-vyas/raku/ch-1.raku8
-rwxr-xr-xchallenge-327/jaldhar-h-vyas/raku/ch-2.raku17
5 files changed, 91 insertions, 0 deletions
diff --git a/challenge-327/jaldhar-h-vyas/blog.txt b/challenge-327/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..71395f8e01
--- /dev/null
+++ b/challenge-327/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2025/06/perl_weekly_challenge_week_327.html
diff --git a/challenge-327/jaldhar-h-vyas/perl/ch-1.pl b/challenge-327/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..105f3db5bf
--- /dev/null
+++ b/challenge-327/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/perl
+use 5.038;
+use warnings;
+
+sub setDifference($arr1, $arr2) {
+ my %difference = map { $_ => 0 } @{$arr1};
+
+ for my $elem (@{$arr2}) {
+ if (exists $difference{$elem}) {
+ $difference{$elem}++;
+ }
+ }
+
+ return grep { !$difference{$_} } keys %difference;
+}
+
+sub unique(@list) {
+ my %elems;
+ for (@list) {
+ $elems{$_}++;
+ }
+
+ return [keys %elems];
+}
+
+my @ints = @ARGV;
+
+my @missing = sort { $a <=> $b } setDifference([1 .. scalar @ints], unique(@ints));
+say q{(}, (join q{, }, @missing), q{)};
diff --git a/challenge-327/jaldhar-h-vyas/perl/ch-2.pl b/challenge-327/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..60b698f1a2
--- /dev/null
+++ b/challenge-327/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+use 5.038;
+use warnings;
+
+sub combinations($listref, $length) {
+ my @list = @{$listref};
+
+ if ($length <= 1) {
+ return map { [$_] } @list;
+ }
+
+ my @combos;
+
+ for (my $i = 0; $i + $length <= scalar @list; $i++) {
+ my $val = $list[$i];
+ my @rest = @list[$i + 1 .. $#list];
+ for my $c (combinations(\@rest, $length - 1)) {
+ push @combos, [$val, @{$c}] ;
+ }
+ }
+
+ return @combos;
+}
+
+my @ints = @ARGV;
+my %differences;
+
+for my $pair (combinations(\@ints, 2)) {
+ push @{ $differences{ abs($pair->[0] - $pair->[1]) } }, $pair;
+}
+
+say
+join q{, },
+sort
+map { q{[} . ( join q{,}, sort { $a <=> $b } @{$_} ) . q{]} }
+@{ $differences{ (sort { $a <=> $b } keys %differences)[0] } };
diff --git a/challenge-327/jaldhar-h-vyas/raku/ch-1.raku b/challenge-327/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..34f23edd72
--- /dev/null
+++ b/challenge-327/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,8 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ *@ints
+) {
+ my @missing = ((1.. @ints.elems) ∖ @ints».Int.unique).keys.sort({$^a <=> $^b});
+ say q{(}, @missing.join(q{, }), q{)};
+} \ No newline at end of file
diff --git a/challenge-327/jaldhar-h-vyas/raku/ch-2.raku b/challenge-327/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..e3161d288b
--- /dev/null
+++ b/challenge-327/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,17 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ *@ints
+) {
+ my %differences;
+
+ for @ints».Int.combinations(2) -> $pair {
+ %differences{([-] @$pair).abs}.push($pair);
+ }
+
+ %differences{%differences.keys».Int.min}
+ .map({ "[@$_.sort({ $^a <=> $^b }).join(q{,})]" })
+ .sort
+ .join(q{, })
+ .say;
+} \ No newline at end of file