diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2019-09-01 15:41:12 -0400 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2019-09-01 15:41:12 -0400 |
| commit | 9cdf79169dec45c2d07df9e4e6aee6c6ca0d848e (patch) | |
| tree | b5fbf601c9c4174efecf8c2860310e43d1267f96 /challenge-023 | |
| parent | e200d09264f1c7218af9e22b007efd77da3e834e (diff) | |
| download | perlweeklychallenge-club-9cdf79169dec45c2d07df9e4e6aee6c6ca0d848e.tar.gz perlweeklychallenge-club-9cdf79169dec45c2d07df9e4e6aee6c6ca0d848e.tar.bz2 perlweeklychallenge-club-9cdf79169dec45c2d07df9e4e6aee6c6ca0d848e.zip | |
Challenge 23 by Jaldhar H. Vyas
Diffstat (limited to 'challenge-023')
| -rw-r--r-- | challenge-023/jaldhar-h-vyas/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-023/jaldhar-h-vyas/perl5/ch-1.pl | 17 | ||||
| -rwxr-xr-x | challenge-023/jaldhar-h-vyas/perl5/ch-2.pl | 69 | ||||
| -rwxr-xr-x | challenge-023/jaldhar-h-vyas/perl6/ch-1.p6 | 10 | ||||
| -rwxr-xr-x | challenge-023/jaldhar-h-vyas/perl6/ch-2.p6 | 32 |
5 files changed, 129 insertions, 0 deletions
diff --git a/challenge-023/jaldhar-h-vyas/blog.txt b/challenge-023/jaldhar-h-vyas/blog.txt new file mode 100644 index 0000000000..3d1f8b54dc --- /dev/null +++ b/challenge-023/jaldhar-h-vyas/blog.txt @@ -0,0 +1 @@ +https://www.braincells.com/perl/2019/09/perl_weekly_challenge_week_23.html diff --git a/challenge-023/jaldhar-h-vyas/perl5/ch-1.pl b/challenge-023/jaldhar-h-vyas/perl5/ch-1.pl new file mode 100755 index 0000000000..00a5e6eb37 --- /dev/null +++ b/challenge-023/jaldhar-h-vyas/perl5/ch-1.pl @@ -0,0 +1,17 @@ +#!/usr/bin/perl +use warnings; +use strict; +use 5.010; +use Getopt::Std; + +my %opts; +getopt('n:', \%opts); + +$opts{'n'} //= 1; + +my @series = @ARGV; +for (0 .. $opts{'n'} - 1) { + @series = map { $series[$_] - $series[$_ - 1] } (1 .. $#series); +} + +say join q{, }, @series;
\ No newline at end of file diff --git a/challenge-023/jaldhar-h-vyas/perl5/ch-2.pl b/challenge-023/jaldhar-h-vyas/perl5/ch-2.pl new file mode 100755 index 0000000000..7eb1d7f57a --- /dev/null +++ b/challenge-023/jaldhar-h-vyas/perl5/ch-2.pl @@ -0,0 +1,69 @@ +#!/usr/bin/perl +use warnings; +use strict; +use 5.010; + +sub isPrime { + my ($n) = @_; + + if ($n < 2) { + return undef; + } + + if ($n == 2) { + return 1; + } + + for my $i (2 .. sqrt($n)) { + if ($n % $i == 0) { + return undef; + } + } + + return 1; +} + +sub nextPrime { + state $i = 1; + if (scalar @_) { + $i = shift; + } + + while ($i++) { + if (isPrime($i)) { + return $i; + } + } +} + +sub factorize { + my ($n, $primeFactors) = @_; + if ($n < 2) { + return; + } + + my $p = nextPrime(1); + while ($p <= $n) { + + if ($n % $p == 0) { + push @{$primeFactors}, $p; + factorize($n / $p, $primeFactors); + } + $p = nextPrime(); + } +} + +my $n = shift; + +if ($n < 4) { + die "Number must be greater than 3.\n"; +} + +my @primeFactors; +if (isPrime($n)) { + push @primeFactors, $n; +} else { + factorize($n, \@primeFactors); +} + +say join q{, }, @primeFactors; diff --git a/challenge-023/jaldhar-h-vyas/perl6/ch-1.p6 b/challenge-023/jaldhar-h-vyas/perl6/ch-1.p6 new file mode 100755 index 0000000000..54a4a88afb --- /dev/null +++ b/challenge-023/jaldhar-h-vyas/perl6/ch-1.p6 @@ -0,0 +1,10 @@ +#!/usr/bin/perl6 + +multi sub MAIN(Int :$n = 1, *@series) { + + for 0 ..^ $n { + @series = (1 ..^ @series.elems).map({ @series[$_] - @series[$_ - 1] }); + } + + @series.join(q{, }).say; +} diff --git a/challenge-023/jaldhar-h-vyas/perl6/ch-2.p6 b/challenge-023/jaldhar-h-vyas/perl6/ch-2.p6 new file mode 100755 index 0000000000..c2052f2eff --- /dev/null +++ b/challenge-023/jaldhar-h-vyas/perl6/ch-2.p6 @@ -0,0 +1,32 @@ +#!/usr/bin/perl6 + +sub factorize(Int $n, @primeFactors) { + if $n < 2 { + return; + } + + my $i = 0; + my @primes = (1 .. ∞).grep({ .is-prime }); + my $p = @primes[$i]; + + while $p <= $n { + + if $n %% $p { + @primeFactors.push($p); + factorize($n div $p, @primeFactors); + return; + } + $p = @primes[$i++]; + } +} + +multi sub MAIN(Int $n where { $_ > 3}) { + my @primeFactors; + if $n.is-prime { + @primeFactors.push($n); + } else { + factorize($n, @primeFactors); + } + + @primeFactors.join(q{, }).say; +} |
