diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2023-09-18 18:55:45 -0400 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2023-09-18 18:55:45 -0400 |
| commit | ae4497b916f9a1bb55833a736306764284f2d7fe (patch) | |
| tree | 14defc70c1919cd320c69d0824c872463fabdfe3 /challenge-234 | |
| parent | d70c6af225f654081884e720449f92c0f52514b1 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-234/jaldhar-h-vyas/perl/ch-1.pl | 40 | ||||
| -rwxr-xr-x | challenge-234/jaldhar-h-vyas/perl/ch-2.pl | 35 | ||||
| -rwxr-xr-x | challenge-234/jaldhar-h-vyas/raku/ch-1.sh | 3 | ||||
| -rwxr-xr-x | challenge-234/jaldhar-h-vyas/raku/ch-2.raku | 15 |
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 |
