diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-02-11 23:19:09 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-11 23:19:09 +0000 |
| commit | bf8cb22c04538ec340fb59b885388576842c2ce6 (patch) | |
| tree | 3ddcf7802cb7a44605a6fd72c9feae7d78d6ee4e | |
| parent | 5b114e24070ea0413d96c9c6ccd5bee76d662b7a (diff) | |
| parent | 70773f1748ccad5c3aad751e3db9718fd10790bf (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-209/jaldhar-h-vyas/perl/ch-1.pl | 9 | ||||
| -rwxr-xr-x | challenge-209/jaldhar-h-vyas/perl/ch-2.pl | 55 | ||||
| -rwxr-xr-x | challenge-209/jaldhar-h-vyas/raku/ch-1.raku | 11 | ||||
| -rwxr-xr-x | challenge-209/jaldhar-h-vyas/raku/ch-2.raku | 35 |
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{ ]}; +} |
