aboutsummaryrefslogtreecommitdiff
path: root/challenge-085
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-11-04 04:20:40 +0000
committerGitHub <noreply@github.com>2020-11-04 04:20:40 +0000
commit2da2bf56ef19a0d6fee874e0df8dccd42d434b08 (patch)
treeb60672004201680a741413dc0344779cd294b025 /challenge-085
parent29885d2064c972c0f9314177f5eb5e265b42ef04 (diff)
parent858a6ecf1d83c4fe9f4fb8d531f93ae99ea48f7d (diff)
downloadperlweeklychallenge-club-2da2bf56ef19a0d6fee874e0df8dccd42d434b08.tar.gz
perlweeklychallenge-club-2da2bf56ef19a0d6fee874e0df8dccd42d434b08.tar.bz2
perlweeklychallenge-club-2da2bf56ef19a0d6fee874e0df8dccd42d434b08.zip
Merge pull request #2698 from polettix/polettix/pwc085
Add polettix's solution to challenge 085
Diffstat (limited to 'challenge-085')
-rw-r--r--challenge-085/polettix/blog.txt1
-rw-r--r--challenge-085/polettix/blog1.txt1
-rw-r--r--challenge-085/polettix/perl/.gitignore1
-rw-r--r--challenge-085/polettix/perl/ch-1.pl23
-rw-r--r--challenge-085/polettix/perl/ch-2.pl36
-rw-r--r--challenge-085/polettix/perl/cpanfile1
-rw-r--r--challenge-085/polettix/perl/cpanfile.snapshot8
7 files changed, 71 insertions, 0 deletions
diff --git a/challenge-085/polettix/blog.txt b/challenge-085/polettix/blog.txt
new file mode 100644
index 0000000000..96890d360f
--- /dev/null
+++ b/challenge-085/polettix/blog.txt
@@ -0,0 +1 @@
+https://github.polettix.it/ETOOBUSY/2020/11/05/pwc085-triplet-sum/
diff --git a/challenge-085/polettix/blog1.txt b/challenge-085/polettix/blog1.txt
new file mode 100644
index 0000000000..0eea5045da
--- /dev/null
+++ b/challenge-085/polettix/blog1.txt
@@ -0,0 +1 @@
+https://github.polettix.it/ETOOBUSY/2020/11/06/pwc085-power-of-two-integer/
diff --git a/challenge-085/polettix/perl/.gitignore b/challenge-085/polettix/perl/.gitignore
new file mode 100644
index 0000000000..2c553cb420
--- /dev/null
+++ b/challenge-085/polettix/perl/.gitignore
@@ -0,0 +1 @@
+/local
diff --git a/challenge-085/polettix/perl/ch-1.pl b/challenge-085/polettix/perl/ch-1.pl
new file mode 100644
index 0000000000..300dad4f20
--- /dev/null
+++ b/challenge-085/polettix/perl/ch-1.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/env perl
+use 5.024;
+use warnings;
+use experimental qw< postderef signatures >;
+no warnings qw< experimental::postderef experimental::signatures >;
+
+use FindBin '$Bin';
+use lib "$Bin/local/lib/perl5";
+
+use Math::Combinatorics ();
+
+sub triplet_sum {
+ my @R = grep { $_ <= 2.0 } @_; # remove cruft
+ my $combiner = Math::Combinatorics->new(count => 3, data => \@R);
+ while (my ($x, $y, $z) = $combiner->next_combination) {
+ $x += $y + $z;
+ return 1 if 1 <= $x && $x <= 2;
+ }
+ return 0;
+};
+
+my @input = scalar @ARGV ? @ARGV : (0.5, 1.1, 0.3, 0.7);
+say triplet_sum(@input);
diff --git a/challenge-085/polettix/perl/ch-2.pl b/challenge-085/polettix/perl/ch-2.pl
new file mode 100644
index 0000000000..90e5644cd2
--- /dev/null
+++ b/challenge-085/polettix/perl/ch-2.pl
@@ -0,0 +1,36 @@
+#!/usr/bin/env perl
+use 5.024;
+use warnings;
+use experimental qw< postderef signatures >;
+no warnings qw< experimental::postderef experimental::signatures >;
+
+sub factor ($N) {
+ my %retval;
+ my @ps = (2, 3);
+ my $k = 1;
+ while ($N > 1) {
+ if (! @ps) {
+ push @ps, 6 * $k - 1, 6 * $k + 1;
+ $k++;
+ }
+ my $p = shift @ps;
+ while ($N % $p == 0) {
+ $retval{$p}++;
+ $N /= $p;
+ }
+ }
+ return \%retval;
+}
+
+sub power_of_two_integers ($N) {
+ my $factors = factor($N);
+ my ($min, @others) = sort {$a <=> $b} values $factors->%*;
+ return 0 if $min == 1;
+ for my $exponent (@others) {
+ return 0 if $exponent % $min;
+ }
+ return 1;
+}
+
+my $N = shift // 8;
+say power_of_two_integers($N);
diff --git a/challenge-085/polettix/perl/cpanfile b/challenge-085/polettix/perl/cpanfile
new file mode 100644
index 0000000000..0b9147b47a
--- /dev/null
+++ b/challenge-085/polettix/perl/cpanfile
@@ -0,0 +1 @@
+requires 'Math::Combinatorics';
diff --git a/challenge-085/polettix/perl/cpanfile.snapshot b/challenge-085/polettix/perl/cpanfile.snapshot
new file mode 100644
index 0000000000..4e08a1bd79
--- /dev/null
+++ b/challenge-085/polettix/perl/cpanfile.snapshot
@@ -0,0 +1,8 @@
+# carton snapshot format: version 1.0
+DISTRIBUTIONS
+ Math-Combinatorics-0.09
+ pathname: A/AL/ALLENDAY/Math-Combinatorics-0.09.tar.gz
+ provides:
+ Math::Combinatorics 0.09
+ requirements:
+ ExtUtils::MakeMaker 0