aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2020-03-15 16:31:28 -0400
committerJaldhar H. Vyas <jaldhar@braincells.com>2020-03-15 16:31:28 -0400
commit3147b70cde478cf4ece124ee6dcd220f0d815b56 (patch)
treec9c93e40b07806dedeeb3a298ed0f70d39d084eb
parent880ea1c09f7dada3f92317c3f7f7c0ddb6c17213 (diff)
downloadperlweeklychallenge-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.txt1
-rwxr-xr-xchallenge-051/jaldhar-h-vyas/perl/ch-1.pl41
-rwxr-xr-xchallenge-051/jaldhar-h-vyas/perl/ch-2.pl22
-rwxr-xr-xchallenge-051/jaldhar-h-vyas/raku/ch-1.p614
-rwxr-xr-xchallenge-051/jaldhar-h-vyas/raku/ch-2.p618
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;
+}