aboutsummaryrefslogtreecommitdiff
path: root/challenge-066
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2020-06-28 19:03:34 -0400
committerJaldhar H. Vyas <jaldhar@braincells.com>2020-06-28 19:03:34 -0400
commit3f93dc240149ec6c0442d6cde2875e4d86b8cc06 (patch)
treec26bd5caf53894497487544a1ee0aa2b04148c4b /challenge-066
parent55ae77073cfb187f817d5f68c2ea4d71d912f562 (diff)
downloadperlweeklychallenge-club-3f93dc240149ec6c0442d6cde2875e4d86b8cc06.tar.gz
perlweeklychallenge-club-3f93dc240149ec6c0442d6cde2875e4d86b8cc06.tar.bz2
perlweeklychallenge-club-3f93dc240149ec6c0442d6cde2875e4d86b8cc06.zip
Challenge 66 by Jaldhar H. Vyas
Diffstat (limited to 'challenge-066')
-rw-r--r--challenge-066/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-066/jaldhar-h-vyas/perl/ch-1.pl39
-rwxr-xr-xchallenge-066/jaldhar-h-vyas/perl/ch-2.pl46
-rwxr-xr-xchallenge-066/jaldhar-h-vyas/raku/ch-1.p625
-rwxr-xr-xchallenge-066/jaldhar-h-vyas/raku/ch-2.p631
5 files changed, 142 insertions, 0 deletions
diff --git a/challenge-066/jaldhar-h-vyas/blog.txt b/challenge-066/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..dafb114ef0
--- /dev/null
+++ b/challenge-066/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2020/06/perl_weekly_challenge_week_66.html
diff --git a/challenge-066/jaldhar-h-vyas/perl/ch-1.pl b/challenge-066/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..9fc7769490
--- /dev/null
+++ b/challenge-066/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+use English qw/ -no_match_vars /;
+
+sub usage {
+ print<<"--USAGE--";
+Usage:
+ $PROGRAM_NAME <M> <N>
+
+ <M> dividend
+ <N> divisor
+--USAGE--
+ exit(1);
+}
+
+if (scalar @ARGV < 2) {
+ usage();
+}
+my ($M, $N) = @ARGV;
+
+my $negative = ($M < 0) ^ ($N < 0);
+my $dividend = abs($M);
+my $divisor = abs($N);
+my $quotient = 0;
+
+while ($dividend >= $divisor) {
+ $dividend -= $divisor;
+ $quotient++;
+}
+
+if ($negative) {
+ $quotient = -$quotient;
+ if ($dividend > 0) {
+ $quotient--;
+ }
+}
+
+say $quotient;
diff --git a/challenge-066/jaldhar-h-vyas/perl/ch-2.pl b/challenge-066/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..3a63b89127
--- /dev/null
+++ b/challenge-066/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,46 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+use English qw/ -no_match_vars /;
+
+sub usage {
+ print<<"-USAGE-";
+Usage:
+ $PROGRAM_NAME <N>
+
+ <N> number to check
+-USAGE-
+ exit(1);
+}
+
+sub isPower {
+ my ($num) = @_;
+ my @results;
+
+ if ($num == 1) {
+ push @results, join q{^}, (1, 1);
+ } else {
+ for my $m (2 .. sqrt($num)) {
+ my $n = 2;
+ my $p = $m ** $n;
+
+ while ($p <= $num && $p > 0) {
+ if ($p == $num) {
+ push @results, join q{^}, ($m, $n);
+ }
+ $n++;
+ $p = $m ** $n;
+ }
+ }
+ }
+
+ return @results;
+}
+
+if (scalar @ARGV < 1) {
+ usage();
+}
+my ($N) = @ARGV;
+
+my @powers = isPower($N);
+say scalar @powers ? (join q{, }, @powers) : 0;
diff --git a/challenge-066/jaldhar-h-vyas/raku/ch-1.p6 b/challenge-066/jaldhar-h-vyas/raku/ch-1.p6
new file mode 100755
index 0000000000..c7bb6c0fcd
--- /dev/null
+++ b/challenge-066/jaldhar-h-vyas/raku/ch-1.p6
@@ -0,0 +1,25 @@
+#!/usr/bin/perl6
+
+multi sub MAIN(
+ Int $M, #= dividend
+ Int $N #= divisor
+) {
+ my $negative = ($M < 0 ^^ $N < 0);
+ my $dividend = abs($M);
+ my $divisor = abs($N);
+ my $quotient = 0;
+
+ while $dividend >= $divisor {
+ $dividend -= $divisor;
+ $quotient++;
+ }
+
+ if $negative {
+ $quotient = -$quotient;
+ if $dividend > 0 {
+ $quotient--;
+ }
+ }
+
+ say $quotient;
+} \ No newline at end of file
diff --git a/challenge-066/jaldhar-h-vyas/raku/ch-2.p6 b/challenge-066/jaldhar-h-vyas/raku/ch-2.p6
new file mode 100755
index 0000000000..8f9098d839
--- /dev/null
+++ b/challenge-066/jaldhar-h-vyas/raku/ch-2.p6
@@ -0,0 +1,31 @@
+#!/usr/bin/perl6
+
+sub isPower($num) {
+ my @results;
+
+ if $num == 1 {
+ @results.push([1, 1].join(q{^}));
+ } else {
+ for 2 .. sqrt($num) -> $m {
+ my $n = 2;
+ my $p = $m ** $n;
+
+ while $p <= $num && $p > 0 {
+ if $p == $num {
+ @results.push([$m, $n].join(q{^}));
+ }
+ $n++;
+ $p = $m ** $n;
+ }
+ }
+ }
+
+ return @results;
+}
+
+multi sub MAIN(
+ Int $N #= number to check
+) {
+ my @powers = isPower($N);
+ say @powers.elems ?? @powers.join(q{, }) !! 0;
+} \ No newline at end of file