diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-11-04 04:20:40 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-04 04:20:40 +0000 |
| commit | 2da2bf56ef19a0d6fee874e0df8dccd42d434b08 (patch) | |
| tree | b60672004201680a741413dc0344779cd294b025 /challenge-085 | |
| parent | 29885d2064c972c0f9314177f5eb5e265b42ef04 (diff) | |
| parent | 858a6ecf1d83c4fe9f4fb8d531f93ae99ea48f7d (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rw-r--r-- | challenge-085/polettix/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-085/polettix/perl/.gitignore | 1 | ||||
| -rw-r--r-- | challenge-085/polettix/perl/ch-1.pl | 23 | ||||
| -rw-r--r-- | challenge-085/polettix/perl/ch-2.pl | 36 | ||||
| -rw-r--r-- | challenge-085/polettix/perl/cpanfile | 1 | ||||
| -rw-r--r-- | challenge-085/polettix/perl/cpanfile.snapshot | 8 |
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 |
