diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-05-10 11:19:40 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-10 11:19:40 +0100 |
| commit | 7a73f040a98fe7423753192e94bac15cb465ff28 (patch) | |
| tree | 45ba5f89153ed48bec25e0c207f3690927a8da9b | |
| parent | 750cdab5c1d62e75f674aa283fd38c5994c62019 (diff) | |
| parent | 20304cf224753f1778563f80cae5dc8be2800fac (diff) | |
| download | perlweeklychallenge-club-7a73f040a98fe7423753192e94bac15cb465ff28.tar.gz perlweeklychallenge-club-7a73f040a98fe7423753192e94bac15cb465ff28.tar.bz2 perlweeklychallenge-club-7a73f040a98fe7423753192e94bac15cb465ff28.zip | |
Merge pull request #4050 from lakpatashi/challenge-020
Finished Challenge-020 with perl
| -rw-r--r-- | challenge-020/lakpatashi/README | 1 | ||||
| -rwxr-xr-x | challenge-020/lakpatashi/perl/ch-1.pl | 22 | ||||
| -rwxr-xr-x | challenge-020/lakpatashi/perl/ch-2.pl | 38 |
3 files changed, 61 insertions, 0 deletions
diff --git a/challenge-020/lakpatashi/README b/challenge-020/lakpatashi/README new file mode 100644 index 0000000000..bc153bd576 --- /dev/null +++ b/challenge-020/lakpatashi/README @@ -0,0 +1 @@ +Solution by lakpatashi diff --git a/challenge-020/lakpatashi/perl/ch-1.pl b/challenge-020/lakpatashi/perl/ch-1.pl new file mode 100755 index 0000000000..3cb4296154 --- /dev/null +++ b/challenge-020/lakpatashi/perl/ch-1.pl @@ -0,0 +1,22 @@ +#!/usr/bin/perl + +use warnings; +use strict; +use Data::Dumper; +use List::Util qw(sum); +use feature qw(switch); + +#part 1 +my ($str) = shift; +my @arr = split //,$str; +my $char = shift @arr; +print $char; +for my $x (@arr){ + if($x ne $char){ + print " "; + $char = $x; + } + print $x; +} + + diff --git a/challenge-020/lakpatashi/perl/ch-2.pl b/challenge-020/lakpatashi/perl/ch-2.pl new file mode 100755 index 0000000000..3e659002f8 --- /dev/null +++ b/challenge-020/lakpatashi/perl/ch-2.pl @@ -0,0 +1,38 @@ +#!/usr/bin/perl + +use warnings; +use strict; +use Data::Dumper; + +# part 2 + +my %hash; + +my $n = 2; +for (;;){ + #print "checking:: $n\n"; + my $val = divisorSum($n); + if( $val > 1 ){ + if( divisorSum($val)==$n and $val != $n){ + print "found min pair:: ($n,$val)\n"; + last; + } + } + #print "$n\n"; + last if $n == 1000; + $n++; +} + +sub divisorSum{ + my ($n)= @_; + my $divisorSum = 1; + for (2..int sqrt $n){ + if ($_**2 == $n){ + $divisorSum += $_; + }else{ + $divisorSum += $_ + int $n/$_ unless $n % $_; # add if divisor + } + } + return $divisorSum; +} + |
