diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2020-06-28 19:03:34 -0400 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2020-06-28 19:03:34 -0400 |
| commit | 3f93dc240149ec6c0442d6cde2875e4d86b8cc06 (patch) | |
| tree | c26bd5caf53894497487544a1ee0aa2b04148c4b /challenge-066 | |
| parent | 55ae77073cfb187f817d5f68c2ea4d71d912f562 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-066/jaldhar-h-vyas/perl/ch-1.pl | 39 | ||||
| -rwxr-xr-x | challenge-066/jaldhar-h-vyas/perl/ch-2.pl | 46 | ||||
| -rwxr-xr-x | challenge-066/jaldhar-h-vyas/raku/ch-1.p6 | 25 | ||||
| -rwxr-xr-x | challenge-066/jaldhar-h-vyas/raku/ch-2.p6 | 31 |
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 |
