aboutsummaryrefslogtreecommitdiff
path: root/challenge-234
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2023-09-18 18:55:45 -0400
committerJaldhar H. Vyas <jaldhar@braincells.com>2023-09-18 18:55:45 -0400
commitae4497b916f9a1bb55833a736306764284f2d7fe (patch)
tree14defc70c1919cd320c69d0824c872463fabdfe3 /challenge-234
parentd70c6af225f654081884e720449f92c0f52514b1 (diff)
downloadperlweeklychallenge-club-ae4497b916f9a1bb55833a736306764284f2d7fe.tar.gz
perlweeklychallenge-club-ae4497b916f9a1bb55833a736306764284f2d7fe.tar.bz2
perlweeklychallenge-club-ae4497b916f9a1bb55833a736306764284f2d7fe.zip
Challenge-234 by Jaldhar H. Vyas.
Diffstat (limited to 'challenge-234')
-rw-r--r--challenge-234/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-234/jaldhar-h-vyas/perl/ch-1.pl40
-rwxr-xr-xchallenge-234/jaldhar-h-vyas/perl/ch-2.pl35
-rwxr-xr-xchallenge-234/jaldhar-h-vyas/raku/ch-1.sh3
-rwxr-xr-xchallenge-234/jaldhar-h-vyas/raku/ch-2.raku15
5 files changed, 94 insertions, 0 deletions
diff --git a/challenge-234/jaldhar-h-vyas/blog.txt b/challenge-234/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..3491d9fbb9
--- /dev/null
+++ b/challenge-234/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2023/09/perl_weekly_challenge_week_234.html
diff --git a/challenge-234/jaldhar-h-vyas/perl/ch-1.pl b/challenge-234/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..8fa5006f3f
--- /dev/null
+++ b/challenge-234/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub distinct {
+ my ($arr) = @_;
+ my %unique;
+ my @distinct;
+
+ for my $elem (@{$arr}) {
+ $unique{$elem}++;
+ push @distinct, "$elem$unique{$elem}";
+ }
+
+ return @distinct;
+}
+
+sub intersection {
+ my @sets = @_;
+ my %count;
+
+ for my $set (@sets) {
+ for my $elem (distinct($set)) {
+ if (!exists $count{$elem}) {
+ $count{$elem} = 1;
+ } else {
+ $count{$elem}++;
+ }
+ }
+ }
+
+ return [ map { [split //, $_]->[0] } grep { $_ if $count{$_} == scalar @sets } keys %count ];
+}
+
+my @words = map { [ split //, $_ ] } @ARGV;
+
+say
+ q{(},
+ ( join q{, }, map { "\"$_\"" } ( sort @{intersection( @words )} ) ),
+ q{)};
diff --git a/challenge-234/jaldhar-h-vyas/perl/ch-2.pl b/challenge-234/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..29204d827f
--- /dev/null
+++ b/challenge-234/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub combinations {
+ my @list = @{$_[0]};
+ my $length = $_[1];
+
+ 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;
+
+while (my ($key, $value) = each @ARGV) {
+ $ints{$key} = $value;
+}
+
+say scalar grep {
+ my ($i, $j, $k) = map { $ints{$_} } @{$_};
+ $i != $j && $j != $k && $k != $i;
+} combinations([keys %ints], 3);
diff --git a/challenge-234/jaldhar-h-vyas/raku/ch-1.sh b/challenge-234/jaldhar-h-vyas/raku/ch-1.sh
new file mode 100755
index 0000000000..106ca4032e
--- /dev/null
+++ b/challenge-234/jaldhar-h-vyas/raku/ch-1.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+raku -e 'say q{(},([∩] @*ARGS.map({$_.comb.BagHash})).map({|($_.key x $_.value).comb}).sort.map({"\"$_\""}).join(q{, }),q{)}' "$@"
diff --git a/challenge-234/jaldhar-h-vyas/raku/ch-2.raku b/challenge-234/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..f4a0ae9e7b
--- /dev/null
+++ b/challenge-234/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,15 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ *@ints
+) {
+ @ints
+ .keys
+ .combinations(3)
+ .grep({
+ my ($i, $j, $k) = @$_.map({ @ints[$_] });
+ $i != $j && $j != $k && $k != $i;
+ })
+ .elems
+ .say;
+} \ No newline at end of file