aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-02-11 23:19:09 +0000
committerGitHub <noreply@github.com>2024-02-11 23:19:09 +0000
commitbf8cb22c04538ec340fb59b885388576842c2ce6 (patch)
tree3ddcf7802cb7a44605a6fd72c9feae7d78d6ee4e
parent5b114e24070ea0413d96c9c6ccd5bee76d662b7a (diff)
parent70773f1748ccad5c3aad751e3db9718fd10790bf (diff)
downloadperlweeklychallenge-club-bf8cb22c04538ec340fb59b885388576842c2ce6.tar.gz
perlweeklychallenge-club-bf8cb22c04538ec340fb59b885388576842c2ce6.tar.bz2
perlweeklychallenge-club-bf8cb22c04538ec340fb59b885388576842c2ce6.zip
Merge pull request #9561 from jaldhar/challenge-209
Challenge 209 by Jaldhar H. Vyas.
-rw-r--r--challenge-209/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-209/jaldhar-h-vyas/perl/ch-1.pl9
-rwxr-xr-xchallenge-209/jaldhar-h-vyas/perl/ch-2.pl55
-rwxr-xr-xchallenge-209/jaldhar-h-vyas/raku/ch-1.raku11
-rwxr-xr-xchallenge-209/jaldhar-h-vyas/raku/ch-2.raku35
5 files changed, 111 insertions, 0 deletions
diff --git a/challenge-209/jaldhar-h-vyas/blog.txt b/challenge-209/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..eef31f94e2
--- /dev/null
+++ b/challenge-209/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2024/02/perl_weekly_challenge_week_209.html \ No newline at end of file
diff --git a/challenge-209/jaldhar-h-vyas/perl/ch-1.pl b/challenge-209/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..d1de454773
--- /dev/null
+++ b/challenge-209/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,9 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+my $arg = join q{}, @ARGV;
+$arg =~ s/10/b/g;
+$arg =~ s/11/c/g;
+$arg =~ s/0/a/g;
+say $arg =~ /a$/ ? 1 : 0;
diff --git a/challenge-209/jaldhar-h-vyas/perl/ch-2.pl b/challenge-209/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..b93ab588a1
--- /dev/null
+++ b/challenge-209/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,55 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub intersection {
+ my ($arr1, $arr2) = @_;
+ my %intersection;
+ for my $i (@{$arr1}, @{$arr2}) {
+ $intersection{$i}++;
+ }
+
+ return grep { $intersection{$_} > 1 } keys %intersection;
+}
+
+sub union {
+ my ($arr1, $arr2) = @_;
+ my %union;
+ for my $i (@{$arr1}, @{$arr2}) {
+ $union{$i}++;
+ }
+ return keys %union;
+}
+
+my %merges;
+
+for my $arg (@ARGV) {
+ my @temp = split /\s+/, $arg;
+ my $name = shift @temp;
+ push @{$merges{$name}}, [@temp];
+}
+
+for my $key (keys %merges) {
+ for my $i (0 .. scalar @{$merges{$key}} - 2) {
+ for my $j ($i + 1 .. scalar @{$merges{$key}} - 1) {
+ if (scalar intersection(\@{$merges{$key}->[$i]}, \@{$merges{$key}->[$j]})) {
+ @{$merges{$key}}[$i] = [ union(\@{$merges{$key}->[$i]}, \@{$merges{$key}->[$j]}) ];
+ @{$merges{$key}}[$j] = [];
+ }
+ }
+ }
+}
+
+my @output;
+for my $key (keys %merges) {
+ for my $value (@{$merges{$key}}) {
+ if (scalar @{$value}) {
+ push @output,
+ q{[} .
+ (join q{, }, map { q{"} . $_ . q{"} } ( $key, @{$value} )) .
+ q{]};
+ }
+ }
+};
+
+say q{[ }, (join ",\n", sort { $a cmp $b } @output), q{ ]};
diff --git a/challenge-209/jaldhar-h-vyas/raku/ch-1.raku b/challenge-209/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..3d7c2b5e90
--- /dev/null
+++ b/challenge-209/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,11 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ *@bits
+) {
+ my $arg = @bits.join(q{});
+ $arg ~~ s:g/10/b/;
+ $arg ~~ s:g/11/c/;
+ $arg ~~ s:g/0/a/;
+ say $arg ~~ /a$/ ?? 1 !! 0;
+} \ No newline at end of file
diff --git a/challenge-209/jaldhar-h-vyas/raku/ch-2.raku b/challenge-209/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..e76ab534a9
--- /dev/null
+++ b/challenge-209/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,35 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ *@args
+) {
+ my %merges;
+
+ for @args -> $arg {
+ my @temp = $arg.words;
+ my $name = @temp.shift;
+ %merges{$name}.push(@temp);
+ }
+
+ for %merges.keys -> $key {
+ for 0 ..^ %merges{$key}.elems - 1 -> $i {
+ for $i ^..^ %merges{$key}.elems -> $j {
+ if (%merges{$key}[$i] ∩ %merges{$key}[$j]).elems {
+ %merges{$key}[$i] = (%merges{$key}[$i] ∪ %merges{$key}[$j]).keys;
+ %merges{$key}[$j] = ();
+ }
+ }
+ }
+ }
+
+ my @output;
+ for %merges.keys -> $key {
+ for %merges{$key}.values -> $value {
+ if @$value.elems {
+ @output.push(q{[} ~ [ $key, | @$value ].map({ q{"} ~ $_ ~ q{"} }).join(q{, }) ~ q{]});
+ }
+ }
+ };
+
+ say q{[ }, @output.sort({ @$^a cmp @$^b }).join(",\n"), q{ ]};
+}