diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-05-02 08:51:36 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-02 08:51:36 +0100 |
| commit | bd78075663a70b5c58e4f9505e56f7040bab1da8 (patch) | |
| tree | 2daa0306dae485fb4b5c6fbdb81caabe2851e216 | |
| parent | 6c7b90877823b2bf266c5f233d04250ae43be162 (diff) | |
| parent | f83e33efd501584122b32ad75121ac4b0cdf0300 (diff) | |
| download | perlweeklychallenge-club-bd78075663a70b5c58e4f9505e56f7040bab1da8.tar.gz perlweeklychallenge-club-bd78075663a70b5c58e4f9505e56f7040bab1da8.tar.bz2 perlweeklychallenge-club-bd78075663a70b5c58e4f9505e56f7040bab1da8.zip | |
Merge pull request #3988 from lakpatashi/branch-015
Finished challenge-015 with perl
| -rw-r--r-- | challenge-015/lakpatashi/README | 1 | ||||
| -rwxr-xr-x | challenge-015/lakpatashi/perl/ch-1.pl | 35 | ||||
| -rwxr-xr-x | challenge-015/lakpatashi/perl/ch-2.pl | 42 |
3 files changed, 78 insertions, 0 deletions
diff --git a/challenge-015/lakpatashi/README b/challenge-015/lakpatashi/README new file mode 100644 index 0000000000..bc153bd576 --- /dev/null +++ b/challenge-015/lakpatashi/README @@ -0,0 +1 @@ +Solution by lakpatashi diff --git a/challenge-015/lakpatashi/perl/ch-1.pl b/challenge-015/lakpatashi/perl/ch-1.pl new file mode 100755 index 0000000000..4cd224db03 --- /dev/null +++ b/challenge-015/lakpatashi/perl/ch-1.pl @@ -0,0 +1,35 @@ +#!/usr/bin/perl +use POSIX; +use strict; +use warnings; +use List::Util qw( min max sum); + + +my $m = 200; # max value for prime list +my @primes = buildPrimes($m); +my ( @strongPrime,@weakPrime ); + +for my $i (1..$#primes-1){ + if ( $primes[$i] > ($primes[$i-1]+$primes[$i+1])/2 ){ + push @strongPrime,$primes[$i]; + }elsif ( $primes[$i] < ($primes[$i-1]+$primes[$i+1])/2 ){ + push @weakPrime,$primes[$i]; + } +} +print "Strong Primes: @strongPrime[0..9]\n"; +print "Weak Primes: @weakPrime[0..9]\n"; +sub buildPrimes{ # building prime list + my $m=shift; + my @prime = (1)x($m+1); + @prime[0,1]=(0)x2; + for (my $p=2; $p*$p <= $m; $p++){ + if($prime[$p]==1){ + for(my $i= $p*$p; $i<= $m; $i+=$p){ + $prime[$i]=0; + } + } + } + @prime = grep{ $prime[$_] } 2..$m; + return @prime; +} + diff --git a/challenge-015/lakpatashi/perl/ch-2.pl b/challenge-015/lakpatashi/perl/ch-2.pl new file mode 100755 index 0000000000..32e30e0f97 --- /dev/null +++ b/challenge-015/lakpatashi/perl/ch-2.pl @@ -0,0 +1,42 @@ +#!/usr/bin/perl +use POSIX; +use strict; +use warnings; +use List::Util qw( min max sum); + +my $message = 'hello World , hello world'; +my $key = 'secret'; # key is all lowercase without space +print "plain message: $message\n"; +my $encMessage = encrypt($message,$key); +print "encrypt message: $encMessage\n"; +my $decMessage = decrypt($encMessage,$key); +print "decrypt message: $decMessage\n"; + + +sub encrypt{ + my ($message,$key) = @_; + $message = lc $message; + $key = $key x ceil((length $message)/ (length $key)); + my @message = split '',$message; + my @key = split '',$key; + for my $i (0..$#message){ + next unless $message[$i] ge 'a' and $message[$i] le 'z'; + my $newChar = (ord($key[$i]) + ord($message[$i]) -2*ord('a') ) % 26; + $message[$i] = chr(ord('a')+$newChar); + } + return join '',@message; +} + +sub decrypt{ + my ($message,$key) = @_; + $message = lc $message; + $key = $key x ceil((length $message)/ (length $key)); + my @message = split '',$message; + my @key = split '',$key; + for my $i (0..$#message){ + next unless $message[$i] ge 'a' and $message[$i] le 'z'; + my $newChar = ( ord($message[$i])-ord($key[$i]) ) % 26; + $message[$i] = chr(ord('a')+$newChar); + } + return join '',@message; +} |
