diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-04-15 09:20:47 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-04-15 09:20:47 +0100 |
| commit | 0e4a9d68e5fe1560a06f496241416fcfd9d2cd13 (patch) | |
| tree | 4b3a6c7bbada7d049dcea051998e7247a1d27b89 /challenge-003 | |
| parent | dfbc57749888066b163267bda3801bd66ca5b1de (diff) | |
| download | perlweeklychallenge-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.pl | 33 | ||||
| -rw-r--r-- | challenge-003/jaldhar-h-vyas/perl5/ch-2.pl | 40 | ||||
| -rw-r--r-- | challenge-003/jaldhar-h-vyas/perl6/ch-1.p6 | 22 | ||||
| -rw-r--r-- | challenge-003/jaldhar-h-vyas/perl6/ch-2.p6 | 17 |
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"; +} |
