diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2020-03-15 16:31:28 -0400 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2020-03-15 16:31:28 -0400 |
| commit | 3147b70cde478cf4ece124ee6dcd220f0d815b56 (patch) | |
| tree | c9c93e40b07806dedeeb3a298ed0f70d39d084eb | |
| parent | 880ea1c09f7dada3f92317c3f7f7c0ddb6c17213 (diff) | |
| download | perlweeklychallenge-club-3147b70cde478cf4ece124ee6dcd220f0d815b56.tar.gz perlweeklychallenge-club-3147b70cde478cf4ece124ee6dcd220f0d815b56.tar.bz2 perlweeklychallenge-club-3147b70cde478cf4ece124ee6dcd220f0d815b56.zip | |
Challenge 51 by Jaldhar H. Vyas
| -rw-r--r-- | challenge-051/jaldhar-h-vyas/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-051/jaldhar-h-vyas/perl/ch-1.pl | 41 | ||||
| -rwxr-xr-x | challenge-051/jaldhar-h-vyas/perl/ch-2.pl | 22 | ||||
| -rwxr-xr-x | challenge-051/jaldhar-h-vyas/raku/ch-1.p6 | 14 | ||||
| -rwxr-xr-x | challenge-051/jaldhar-h-vyas/raku/ch-2.p6 | 18 |
5 files changed, 96 insertions, 0 deletions
diff --git a/challenge-051/jaldhar-h-vyas/blog.txt b/challenge-051/jaldhar-h-vyas/blog.txt new file mode 100644 index 0000000000..a0c2c6023b --- /dev/null +++ b/challenge-051/jaldhar-h-vyas/blog.txt @@ -0,0 +1 @@ +https://www.braincells.com/perl/2020/03/perl_weekly_challenge_week_51.html diff --git a/challenge-051/jaldhar-h-vyas/perl/ch-1.pl b/challenge-051/jaldhar-h-vyas/perl/ch-1.pl new file mode 100755 index 0000000000..d37d3a829c --- /dev/null +++ b/challenge-051/jaldhar-h-vyas/perl/ch-1.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl +use warnings; +use strict; +use 5.010; + +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 $T = shift; +my @L = @ARGV; + +for my $combo (combinations(\@L, 3)) { + my @triplet = sort{ $a <=> $b } @{$combo}; + + my $total = 0; + for my $elem (@triplet) { + $total += $elem; + } + + if ($total == $T) { + say join q{ }, @triplet; + } +}
\ No newline at end of file diff --git a/challenge-051/jaldhar-h-vyas/perl/ch-2.pl b/challenge-051/jaldhar-h-vyas/perl/ch-2.pl new file mode 100755 index 0000000000..aeae6e0fbc --- /dev/null +++ b/challenge-051/jaldhar-h-vyas/perl/ch-2.pl @@ -0,0 +1,22 @@ +#!/usr/bin/perl +use warnings; +use strict; +use 5.010; + +sub isColorful { + my ($n) = @_; + my %subsets; + my @digits = split //, $n; + my @products = @digits; + + push @products, $digits[0] * $digits[1]; + push @products, $digits[1] * $digits[2]; + push @products, $digits[0] * $digits[1] * $digits[2]; + map { $subsets{$_}++ } @products; + + return !grep { $_ > 1 } values %subsets; +} + +for my $n (grep { isColorful($_) } 100 .. 999) { + say $n; +} diff --git a/challenge-051/jaldhar-h-vyas/raku/ch-1.p6 b/challenge-051/jaldhar-h-vyas/raku/ch-1.p6 new file mode 100755 index 0000000000..838c701cbe --- /dev/null +++ b/challenge-051/jaldhar-h-vyas/raku/ch-1.p6 @@ -0,0 +1,14 @@ +#!/usr/bin/perl6 + +multi sub MAIN($T, *@L) { + + for @L.combinations(3) -> @combo { + my @triplet = @combo.sort; + + my $total = [+] @triplet; + + if ($total == $T) { + @triplet.join(q{ }).say; + } + } +}
\ No newline at end of file diff --git a/challenge-051/jaldhar-h-vyas/raku/ch-2.p6 b/challenge-051/jaldhar-h-vyas/raku/ch-2.p6 new file mode 100755 index 0000000000..379fbc09a9 --- /dev/null +++ b/challenge-051/jaldhar-h-vyas/raku/ch-2.p6 @@ -0,0 +1,18 @@ +#!/usr/bin/perl6 + +sub isColorful($n) { + my %subsets; + my @digits = $n.comb; + my @products = @digits; + + @products.push(@digits[0] * @digits[1]); + @products.push(@digits[1] * @digits[2]); + @products.push(@digits[0] * @digits[1] * @digits[2]); + @products.map({ %subsets{$_}++ }); + + return %subsets.values.all == 1; +} + +for (100 .. 999).grep({ isColorful($_) }) -> $n { + say $n; +} |
