aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-06-20 06:19:20 +0100
committerGitHub <noreply@github.com>2022-06-20 06:19:20 +0100
commit6199c7d2227bddbd5e05ff21ac769e06e651b9ae (patch)
tree159b17c59df1eaafde35fcdb65715bd5d5af4956
parent9d4b35dff4c50b14064c25539968be48ad73e38e (diff)
parent502c7a2dcf607316a4706cb0fffa1e33d5325369 (diff)
downloadperlweeklychallenge-club-6199c7d2227bddbd5e05ff21ac769e06e651b9ae.tar.gz
perlweeklychallenge-club-6199c7d2227bddbd5e05ff21ac769e06e651b9ae.tar.bz2
perlweeklychallenge-club-6199c7d2227bddbd5e05ff21ac769e06e651b9ae.zip
Merge pull request #6299 from jaldhar/challenge-169
Challenge 169 by Jaldhar H. Vyas.
-rw-r--r--challenge-169/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-169/jaldhar-h-vyas/perl/ch-1.pl39
-rwxr-xr-xchallenge-169/jaldhar-h-vyas/perl/ch-2.pl68
-rwxr-xr-xchallenge-169/jaldhar-h-vyas/raku/ch-1.raku40
-rwxr-xr-xchallenge-169/jaldhar-h-vyas/raku/ch-2.raku47
5 files changed, 195 insertions, 0 deletions
diff --git a/challenge-169/jaldhar-h-vyas/blog.txt b/challenge-169/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..57dfcf13e6
--- /dev/null
+++ b/challenge-169/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2022/06/perl_weekly_challenge_week_169.html \ No newline at end of file
diff --git a/challenge-169/jaldhar-h-vyas/perl/ch-1.pl b/challenge-169/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..746fd56a19
--- /dev/null
+++ b/challenge-169/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub factorize {
+ my ($n) = @_;
+ my @primeFactors;
+
+ while ($n % 2 == 0) {
+ push @primeFactors, 2;
+ $n /= 2;
+ }
+
+ for (my $i = 3; $i <= sqrt $n; $i += 2) {
+ while ($n % $i == 0) {
+ push @primeFactors, $i;
+ $n /= $i;
+ }
+ }
+
+ if ($n > 2) {
+ push @primeFactors, $n;
+ }
+
+ return @primeFactors;
+}
+
+my $n = 2;
+my @brilliants;
+
+until (scalar @brilliants == 20) {
+ my @factors = factorize($n);
+ if (scalar @factors == 2 && length $factors[0] == length $factors[1]) {
+ push @brilliants, $n;
+ }
+ $n++;
+}
+
+say join q{, }, @brilliants;
diff --git a/challenge-169/jaldhar-h-vyas/perl/ch-2.pl b/challenge-169/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..74c774defe
--- /dev/null
+++ b/challenge-169/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,68 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+use Math::Round qw/ nearest /;
+
+sub factorize {
+ my ($n) = @_;
+ my @primeFactors;
+
+ while ($n % 2 == 0) {
+ push @primeFactors, 2;
+ $n /= 2;
+ }
+
+ for (my $i = 3; $i <= sqrt $n; $i += 2) {
+ while ($n % $i == 0) {
+ push @primeFactors, $i;
+ $n /= $i;
+ }
+ }
+
+ if ($n > 2) {
+ push @primeFactors, $n;
+ }
+
+ return @primeFactors;
+}
+
+sub isPerfect {
+ my ($n) = @_;
+
+ for my $i (map { nearest(0.001, log($n) / log($_ )) } 2 .. sqrt($n)) {
+ if ($i == int $i) {
+ return 1;
+ }
+ }
+
+ return undef;
+}
+
+sub isPowerful {
+ my ($n) = @_;
+ my %primeFactors;
+
+ for my $factor (factorize($n)) {
+ $primeFactors{$factor}++;
+ }
+
+ for my $factor (keys %primeFactors) {
+ if ($n % ($factor ** 2) != 0) {
+ return undef;
+ }
+ }
+
+ return 1;
+}
+
+my $n = 2;
+my @achilles;
+
+until (scalar @achilles == 20) {
+ if (isPowerful($n) && !isPerfect($n)) {
+ push @achilles, $n;
+ }
+ $n++;
+}
+
+say join q{, }, @achilles;
diff --git a/challenge-169/jaldhar-h-vyas/raku/ch-1.raku b/challenge-169/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..b16cc2d6eb
--- /dev/null
+++ b/challenge-169/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,40 @@
+#!/usr/bin/raku
+
+sub factorize(Int $N) {
+ my $n = $N;
+ my @primeFactors;
+
+ while $n %% 2 {
+ @primeFactors.push(2);
+ $n /= 2;
+ }
+
+ loop (my $i = 3; $i <= $n.sqrt; $i += 2) {
+ while ($n %% $i) {
+ @primeFactors.push($i);
+ $n /= $i;
+ }
+ }
+
+ if $n > 2 {
+ @primeFactors.push($n);
+ }
+
+ return @primeFactors;
+}
+
+sub MAIN(
+) {
+ my $n = 2;
+ my @brilliants;
+
+ until @brilliants.elems == 20 {
+ my @factors = factorize($n);
+ if @factors.elems == 2 && @factors[0].chars == @factors[1].chars {
+ @brilliants.push($n);
+ }
+ $n++;
+ }
+
+ @brilliants.join(q{, }).say;
+}
diff --git a/challenge-169/jaldhar-h-vyas/raku/ch-2.raku b/challenge-169/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..bf7ee658dc
--- /dev/null
+++ b/challenge-169/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,47 @@
+#!/usr/bin/raku
+
+sub factorize(Int $N) {
+ my $n = $N;
+ my @primeFactors;
+
+ while $n %% 2 {
+ @primeFactors.push(2);
+ $n /= 2;;
+ }
+
+ loop (my $i = 3; $i <= $n.sqrt; $i += 2) {
+ while ($n %% $i) {
+ @primeFactors.push($i);
+ $n /= $i;
+ }
+ }
+
+ if $n > 2 {
+ @primeFactors.push($n);
+ }
+
+ return @primeFactors;
+}
+
+sub isPerfect(Int $n) {
+ return so (2 .. $n.sqrt).map({ $n.log($_).round(0.001); }).any %% 1;
+}
+
+sub isPowerful(Int $n) {
+ return so $n %% factorize($n).unique.map({ $_ ** 2; }).all;
+}
+
+sub MAIN(
+) {
+ my $n = 2;
+ my @achilles;
+
+ until @achilles.elems == 20 {
+ if isPowerful($n) && !isPerfect($n) {
+ @achilles.push($n);
+ }
+ $n++;
+ }
+
+ @achilles.join(q{, }).say;
+}