aboutsummaryrefslogtreecommitdiff
path: root/challenge-003
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2019-04-15 09:20:47 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2019-04-15 09:20:47 +0100
commit0e4a9d68e5fe1560a06f496241416fcfd9d2cd13 (patch)
tree4b3a6c7bbada7d049dcea051998e7247a1d27b89 /challenge-003
parentdfbc57749888066b163267bda3801bd66ca5b1de (diff)
downloadperlweeklychallenge-club-0e4a9d68e5fe1560a06f496241416fcfd9d2cd13.tar.gz
perlweeklychallenge-club-0e4a9d68e5fe1560a06f496241416fcfd9d2cd13.tar.bz2
perlweeklychallenge-club-0e4a9d68e5fe1560a06f496241416fcfd9d2cd13.zip
- Added solutions by Jaldhar H. Vyas for Challenge 003.
Diffstat (limited to 'challenge-003')
-rw-r--r--challenge-003/jaldhar-h-vyas/perl5/ch-1.pl33
-rw-r--r--challenge-003/jaldhar-h-vyas/perl5/ch-2.pl40
-rw-r--r--challenge-003/jaldhar-h-vyas/perl6/ch-1.p622
-rw-r--r--challenge-003/jaldhar-h-vyas/perl6/ch-2.p617
4 files changed, 112 insertions, 0 deletions
diff --git a/challenge-003/jaldhar-h-vyas/perl5/ch-1.pl b/challenge-003/jaldhar-h-vyas/perl5/ch-1.pl
new file mode 100644
index 0000000000..9f6c62296b
--- /dev/null
+++ b/challenge-003/jaldhar-h-vyas/perl5/ch-1.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use 5.010;
+
+sub usage {
+ print <<"-USAGE-";
+ Usage:
+ $0 <number>
+
+<number> maximum integer to search for 5-smooth numbers
+-USAGE-
+
+ exit(1);
+}
+
+sub isSmooth {
+ my ($num) = @_;
+
+ # get the divisors that _aren't_ multiples of 2, 3, or 5
+ my @divisors = grep { ($_ % 2 != 0) && ($_ % 3 != 0) && ($_% 5 != 0) }
+ (grep { $num % $_ == 0 } (1 .. $num));
+
+ # 1 is always a divisor so the array will always have atleast one member.
+ return scalar @divisors == 1;
+}
+
+
+if (scalar @ARGV < 1) {
+ usage();
+}
+
+say join q{ }, grep { isSmooth($_) } (1 .. $ARGV[0]);
diff --git a/challenge-003/jaldhar-h-vyas/perl5/ch-2.pl b/challenge-003/jaldhar-h-vyas/perl5/ch-2.pl
new file mode 100644
index 0000000000..ccf52cc81d
--- /dev/null
+++ b/challenge-003/jaldhar-h-vyas/perl5/ch-2.pl
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use 5.010;
+sub usage {
+ print <<"-USAGE-";
+ Usage:
+ $0 <number>
+
+ <number> the number of rows in the triangle
+-USAGE-
+
+ exit(1);
+}
+
+sub ptRow {
+ my ($row, $col) = @_;
+
+ if ($col == 1 || $col == $row) {
+ return 1;
+ }
+
+ return ptRow($row - 1, $col - 1) + ptRow($row - 1, $col);
+}
+
+if (scalar @ARGV < 1) {
+ usage();
+}
+
+my $height = $ARGV[0];
+
+for my $row (1 .. $height) {
+ for my $col (1 .. $row) {
+ print ptRow($row, $col);
+ }
+ print q{ };
+}
+
+print "\n";
+
diff --git a/challenge-003/jaldhar-h-vyas/perl6/ch-1.p6 b/challenge-003/jaldhar-h-vyas/perl6/ch-1.p6
new file mode 100644
index 0000000000..4c7226933d
--- /dev/null
+++ b/challenge-003/jaldhar-h-vyas/perl6/ch-1.p6
@@ -0,0 +1,22 @@
+#!/usr/bin/perl6
+
+sub isSmooth(Int $num) {
+
+ # get the divisors that _aren't_ multiples of 2, 3, or 5
+ my @divisors = (1 .. $num)
+ .grep( { $num % $_ == 0 } )
+ .grep( { ($_ % 2 != 0) && ($_ % 3 != 0) && ($_% 5 != 0) } );
+
+ # 1 is always a divisor so the array will always have atleast one member.
+ return @divisors.elems == 1;
+}
+
+
+
+multi sub MAIN(
+ Int $max #= search for 5-smooth numbers in the range 1 .. max
+ ) {
+ (1 .. $max).grep(&isSmooth).join(' ').say;
+}
+
+
diff --git a/challenge-003/jaldhar-h-vyas/perl6/ch-2.p6 b/challenge-003/jaldhar-h-vyas/perl6/ch-2.p6
new file mode 100644
index 0000000000..5290459439
--- /dev/null
+++ b/challenge-003/jaldhar-h-vyas/perl6/ch-2.p6
@@ -0,0 +1,17 @@
+#!/usr/bin/perl6
+
+multi sub MAIN(
+ Int $height, #= the number of rows in the triangle
+ ) {
+
+ my &ptRow = -> $row, $col {
+ $col == 1 || $col == $row
+ ?? 1
+ !! ptRow($row - 1, $col - 1) + ptRow($row - 1, $col)
+ };
+
+ for 1 .. $height -> $row {
+ print ($row X (1 .. $row)).flat.map(&ptRow).join(), ' ';
+ }
+ print "\n";
+}