diff options
| author | drbaggy <js5@sanger.ac.uk> | 2021-12-17 21:31:23 +0000 |
|---|---|---|
| committer | drbaggy <js5@sanger.ac.uk> | 2021-12-17 21:31:23 +0000 |
| commit | df39e7263092169a4bf175cf328110b8151c39e8 (patch) | |
| tree | 752ca27ff2c81745c65f4b06b35fb6b2fa47caed /challenge-143/wlmb/perl/ch-2.pl | |
| parent | c12a27d57313357ebab130cfcff7ae9cf1c058d3 (diff) | |
| parent | 38ed50113d4c688df4e9d15a1a01342d7f5f651b (diff) | |
| download | perlweeklychallenge-club-df39e7263092169a4bf175cf328110b8151c39e8.tar.gz perlweeklychallenge-club-df39e7263092169a4bf175cf328110b8151c39e8.tar.bz2 perlweeklychallenge-club-df39e7263092169a4bf175cf328110b8151c39e8.zip | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-143/wlmb/perl/ch-2.pl')
| -rwxr-xr-x | challenge-143/wlmb/perl/ch-2.pl | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/challenge-143/wlmb/perl/ch-2.pl b/challenge-143/wlmb/perl/ch-2.pl new file mode 100755 index 0000000000..f1deb04daa --- /dev/null +++ b/challenge-143/wlmb/perl/ch-2.pl @@ -0,0 +1,23 @@ +#!/usr/bin/env perl +# Perl weekly challenge 143 +# Task 1: Stealthy number +# +# See https://wlmb.github.io/2021/12/13/PWC143/#task-2-stealthy-number +use v5.12; +use warnings; +use PDL; +use PDL::NiceSlice; +foreach my $N(@ARGV){ + my $Q=sqrt($N); # largest possible small divisor + my $s=(sequence($Q)+1); + my $d=$s->where($N % $s == 0); # list of divisors<=$Q + my $c=$d->cat($d(*)); # cartesian product of divisors + my $mask=$d+$N/$d==($d+$N/$d+1)->(*); + # Get pairs of divisors that obey the stealthy condition + my $d2=$c->whereND(($d+$N/$d)==($d+$N/$d+1)->(*)); + my $out=$d2->nelem?1:0; + say "\nInput: $N Output: ", $out; + say "since ", $_((0)),"+",$N/$_((0)), + "==",$_((1)),"+",$N/$_((1)),"+1" + foreach $d2->transpose->dog; +} |
