aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-015/lakpatashi/README1
-rwxr-xr-xchallenge-015/lakpatashi/perl/ch-1.pl35
-rwxr-xr-xchallenge-015/lakpatashi/perl/ch-2.pl42
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;
+}