aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2024-07-13 22:19:33 -0400
committerJaldhar H. Vyas <jaldhar@braincells.com>2024-07-13 22:19:33 -0400
commit2927128e81d704e030afb738eb43703b7b24abae (patch)
tree346bddd34cf069b539fd484fd4dfd4bf8a3c6f2c
parentbf4eb71a4e5ef70445e3319aba7e9666235a1ecf (diff)
downloadperlweeklychallenge-club-2927128e81d704e030afb738eb43703b7b24abae.tar.gz
perlweeklychallenge-club-2927128e81d704e030afb738eb43703b7b24abae.tar.bz2
perlweeklychallenge-club-2927128e81d704e030afb738eb43703b7b24abae.zip
Challenge 277 by Jaldhar H. Vyas.
-rw-r--r--challenge-277/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-277/jaldhar-h-vyas/perl/ch-1.pl25
-rwxr-xr-xchallenge-277/jaldhar-h-vyas/perl/ch-2.pl43
-rwxr-xr-xchallenge-277/jaldhar-h-vyas/raku/ch-1.sh3
-rwxr-xr-xchallenge-277/jaldhar-h-vyas/raku/ch-2.sh3
5 files changed, 75 insertions, 0 deletions
diff --git a/challenge-277/jaldhar-h-vyas/blog.txt b/challenge-277/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..c277bb3563
--- /dev/null
+++ b/challenge-277/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2024/07/perl_weekly_challenge_week_277.html
diff --git a/challenge-277/jaldhar-h-vyas/perl/ch-1.pl b/challenge-277/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..04203bd02e
--- /dev/null
+++ b/challenge-277/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+use v5.38;
+
+sub intersection($arr1, $arr2) {
+ my %intersection;
+ for my $i (@{$arr1}, @{$arr2}) {
+ $intersection{$i}++;
+ }
+
+ return grep { $intersection{$_} > 1 } keys %intersection;
+}
+
+sub uniqueWords(@words) {
+ my %freq;
+ for my $word (@words) {
+ $freq{$word}++;
+ }
+
+ return grep { $freq{$_} == 1 } keys %freq;
+}
+
+say scalar intersection(
+ [uniqueWords(split /\s+/, $ARGV[0])],
+ [uniqueWords(split /\s+/, $ARGV[1])]
+);
diff --git a/challenge-277/jaldhar-h-vyas/perl/ch-2.pl b/challenge-277/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..fd149017cc
--- /dev/null
+++ b/challenge-277/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+use v5.38;
+
+sub combinations($length, @list) {
+
+ 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($length - 1, @rest)) {
+ push @combos, [$val, @{$c}];
+ }
+ }
+
+ return @combos;
+}
+
+sub min(@arr) {
+ my $lowest = 'inf';
+ for my $i (@arr) {
+ if ($i < $lowest) {
+ $lowest = $i;
+ }
+ }
+
+ return $lowest;
+}
+
+sub unique(@list) {
+ my %elems;
+ for (@list) {
+ $elems{$_}++;
+ }
+
+ return (keys %elems);
+}
+
+say scalar grep { 0 < abs($_->[0] - $_->[1]) < min(@{$_}) } combinations(2, unique(@ARGV));
diff --git a/challenge-277/jaldhar-h-vyas/raku/ch-1.sh b/challenge-277/jaldhar-h-vyas/raku/ch-1.sh
new file mode 100755
index 0000000000..84f87c8805
--- /dev/null
+++ b/challenge-277/jaldhar-h-vyas/raku/ch-1.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+raku -e '(@*ARGS[0].words.Bag.grep({ $_.value==1})∩@*ARGS[1].words.Bag.grep({ $_.value==1})).elems.say' "$@"
diff --git a/challenge-277/jaldhar-h-vyas/raku/ch-2.sh b/challenge-277/jaldhar-h-vyas/raku/ch-2.sh
new file mode 100755
index 0000000000..a55d725ef2
--- /dev/null
+++ b/challenge-277/jaldhar-h-vyas/raku/ch-2.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+raku -e '@*ARGS.unique.combinations(2).grep({ 0 < ($_[0] - $_[1]).abs < $_.min}).elems.say' "$@"