diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-04-17 16:55:44 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-17 16:55:44 +0100 |
| commit | 5539ae46d7300c60e1064caef3db713eba4a1031 (patch) | |
| tree | 58743d807f97ea84331c37c66dbf998e9bd08fc4 | |
| parent | 00b0465a8c40b4d6fc85ecfd22aa435abf8b704d (diff) | |
| parent | c8bc68cd3adab0b91a98d88b7abf0feb044d768f (diff) | |
| download | perlweeklychallenge-club-5539ae46d7300c60e1064caef3db713eba4a1031.tar.gz perlweeklychallenge-club-5539ae46d7300c60e1064caef3db713eba4a1031.tar.bz2 perlweeklychallenge-club-5539ae46d7300c60e1064caef3db713eba4a1031.zip | |
Merge pull request #3905 from lakpatashi/branch-008
Finished challenge-008 with perl
| -rw-r--r-- | challenge-008/lakpatashi/README | 1 | ||||
| -rwxr-xr-x | challenge-008/lakpatashi/perl/ch-1.pl | 44 | ||||
| -rwxr-xr-x | challenge-008/lakpatashi/perl/ch-2.pl | 24 |
3 files changed, 69 insertions, 0 deletions
diff --git a/challenge-008/lakpatashi/README b/challenge-008/lakpatashi/README new file mode 100644 index 0000000000..bc153bd576 --- /dev/null +++ b/challenge-008/lakpatashi/README @@ -0,0 +1 @@ +Solution by lakpatashi diff --git a/challenge-008/lakpatashi/perl/ch-1.pl b/challenge-008/lakpatashi/perl/ch-1.pl new file mode 100755 index 0000000000..3f61167468 --- /dev/null +++ b/challenge-008/lakpatashi/perl/ch-1.pl @@ -0,0 +1,44 @@ +#!/usr/bin/perl + +use warnings; +use strict; + +# part 1 +# withIteration takes so much time to produce 5th element +# so I used formula +my @primeList = (2,3,5,7,13,17,19); # 11 does not work +for my $i (@primeList){ + print 2**($i-1)*(2**$i-1),"\n"; +} + +#withIteration(); + +sub withIteration{ # should be called without parameter + my $count = 0; + my $n = 2; + for (;;){ + #print "checking:: $n\n"; + if( isPerfect($n) ){ + print '='x10,"$n\n"; + $count++; + } + last if $count == 5; + $n++; + } +} + +sub isPerfect{ + my ($n)= @_; + my $divisorSum = 1; + for (2..int sqrt $n){ + if ($_**2 == $n){ + $divisorSum += $_; + return 0 if $divisorSum > $n; + }else{ + $divisorSum += $_ + int $n/$_ unless $n % $_; # add if divisor + } + } + return 1 if $divisorSum == $n; + return 0; +} + diff --git a/challenge-008/lakpatashi/perl/ch-2.pl b/challenge-008/lakpatashi/perl/ch-2.pl new file mode 100755 index 0000000000..4a9147d2bf --- /dev/null +++ b/challenge-008/lakpatashi/perl/ch-2.pl @@ -0,0 +1,24 @@ +#!/usr/bin/perl + +use warnings; +use strict; + +# part 2 +print "\n\n"; +use POSIX; +use List::Util qw (max); +my @arr = ("This", "is", "a test of the", "center function"); +my $n = max map {length $_}@arr; +print centreAlign($_, $n)."\n" for @arr; + +sub centreAlign{ + my ($str,$n) = @_; + my $m = ceil $n/2; + my $spaces = $m - mid($str); + return ' 'x$spaces.$str; +} + +sub mid{ + my ($str)= @_; + return ceil (length $str)/2; +} |
