aboutsummaryrefslogtreecommitdiff
path: root/challenge-015
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2019-07-14 15:19:56 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2019-07-14 15:19:56 +0100
commitab69b13598516fd6ed6fa148f8bd33dbddd82929 (patch)
treec08e10a414088a67ff87bf8cb8ae1a2987f87349 /challenge-015
parentc2f89a8fd799fc47e30ca0a0b6c27a119dfa0e51 (diff)
downloadperlweeklychallenge-club-ab69b13598516fd6ed6fa148f8bd33dbddd82929.tar.gz
perlweeklychallenge-club-ab69b13598516fd6ed6fa148f8bd33dbddd82929.tar.bz2
perlweeklychallenge-club-ab69b13598516fd6ed6fa148f8bd33dbddd82929.zip
- Removed duplicate folder for Michael Hamlin.
Diffstat (limited to 'challenge-015')
-rw-r--r--challenge-015/pyrrhlin/README1
-rw-r--r--challenge-015/pyrrhlin/perl5/GetPrime.pm50
-rw-r--r--challenge-015/pyrrhlin/perl5/Vigenere.pm67
l---------challenge-015/pyrrhlin/perl5/ch-1.pl1
l---------challenge-015/pyrrhlin/perl5/ch-2.pl1
-rw-r--r--challenge-015/pyrrhlin/perl5/task1.txt15
-rw-r--r--challenge-015/pyrrhlin/perl5/task2.txt2
7 files changed, 0 insertions, 137 deletions
diff --git a/challenge-015/pyrrhlin/README b/challenge-015/pyrrhlin/README
deleted file mode 100644
index 1dfcf98362..0000000000
--- a/challenge-015/pyrrhlin/README
+++ /dev/null
@@ -1 +0,0 @@
-solutions by @pyrrhlin
diff --git a/challenge-015/pyrrhlin/perl5/GetPrime.pm b/challenge-015/pyrrhlin/perl5/GetPrime.pm
deleted file mode 100644
index 9812b88ed2..0000000000
--- a/challenge-015/pyrrhlin/perl5/GetPrime.pm
+++ /dev/null
@@ -1,50 +0,0 @@
-#! /usr/bin/env perl
-
-# find primes (sort-of) efficiently (without a sieve)
-# for an exercise without using cpan...
-
-package GetPrime;
-
-use 5.18.0;
-use parent 'Exporter';
-our @EXPORT = qw<getprime>;
-
-use integer;
-
-my @primes = (2, 3, 5);
-sub getprime ($) {
- my $n = shift || die "must give an ordinal integer to getprime";
- push @primes, _nextprime() while @primes < $n;
- return $primes[$n - 1];
-}
-
-sub _nextprime {
- my $n;
- for ($n = $primes[-1] + 2; _hasfactor($n); $n += 2) { }
- return $n;
-}
-sub _hasfactor {
- my ($n) = @_;
- # dont bother testing when ending in 5...
- return 5 if $n =~ /5$/;
- # we only get odds, so we dont need...
- # return 2 if $n =~ /[02468]$/;
-
- my $maxfactor = sqrt($n);
- foreach my $p (@primes) {
- return $p unless $n % $p;
- last if $p >= $maxfactor;
- }
- return 0;
-}
-
-1;
-
-__END__
-
-#foreach (1..20) {
-# printf "%2u: %u\n", $_, getprime($_);
-#}
-
-say 'the hundredth prime is ', getprime(100);
-
diff --git a/challenge-015/pyrrhlin/perl5/Vigenere.pm b/challenge-015/pyrrhlin/perl5/Vigenere.pm
deleted file mode 100644
index bc54f2d23b..0000000000
--- a/challenge-015/pyrrhlin/perl5/Vigenere.pm
+++ /dev/null
@@ -1,67 +0,0 @@
-package Vigenere;
-
-# implement the cipher of the same name.
-
-use 5.18.0;
-use parent 'Exporter';
-our @EXPORT = qw<vencode vdecode>;
-
-use integer;
-use List::SomeUtils qw<pairwise>;
-
-my $basis = join '', 'A' .. 'Z';
-my $blength = length $basis;
-
-our $debug = 0;
-
-sub _normalize {
- return unless my $plaintext = uc(shift);
- $plaintext =~ tr/A-Z//cd;
- return $plaintext;
-}
-sub _ordify {
- return map {ord($_) - 65} split //, shift;
-}
-sub _stringify {
- return join '', map {chr($_ + 65)} @_;
-}
-sub _keyshifts {
- my ($key, $len) = @_;
- my @rots = _ordify($key);
- push @rots, @rots while @rots < $len;
- splice(@rots, $len);
- return @rots;
-}
-
-
-sub vencode ($@) {
- my $msg = _normalize(shift) || die "cipher can only encode ascii letters";
- while (my $key = _normalize(shift)) {
- say "key: [$key]" if $debug;
- my @mchars = _ordify($msg);
- my @rots = _keyshifts($key, length($msg));
- my @res = pairwise {($a + $b) % $blength} @mchars, @rots;
- $msg = _stringify(@res);
- if ($debug) {
- say "msg @mchars";
- say "rot @rots";
- say "res @res";
- }
- }
- return $msg;
-}
-
-sub vdecode ($@) {
- my $msg = shift;
- die "some chars in ciphertext cannot have been encoded" if $msg =~ tr/A-Z/ /c;
- while (my $key = _normalize(shift)) {
- my @mchars = _ordify($msg);
- my @rots = _keyshifts($key, length($msg));
- my @res = pairwise {($blength + $a - $b) % $blength} @mchars, @rots;
- $msg = _stringify(@res);
- }
- return $msg;
-}
-
-1;
-
diff --git a/challenge-015/pyrrhlin/perl5/ch-1.pl b/challenge-015/pyrrhlin/perl5/ch-1.pl
deleted file mode 120000
index 97193b3d16..0000000000
--- a/challenge-015/pyrrhlin/perl5/ch-1.pl
+++ /dev/null
@@ -1 +0,0 @@
-t1-prime-types.pl \ No newline at end of file
diff --git a/challenge-015/pyrrhlin/perl5/ch-2.pl b/challenge-015/pyrrhlin/perl5/ch-2.pl
deleted file mode 120000
index 036430d10c..0000000000
--- a/challenge-015/pyrrhlin/perl5/ch-2.pl
+++ /dev/null
@@ -1 +0,0 @@
-t2-vig-cipher.pl \ No newline at end of file
diff --git a/challenge-015/pyrrhlin/perl5/task1.txt b/challenge-015/pyrrhlin/perl5/task1.txt
deleted file mode 100644
index 50cc038091..0000000000
--- a/challenge-015/pyrrhlin/perl5/task1.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- Write a script to generate first 10 strong and weak prime numbers.
-
- For example, the nth prime number is represented by p(n).
-
- p(1) = 2
- p(2) = 3
- p(3) = 5
- p(4) = 7
- p(5) = 11
-
- Strong Prime number p(n) when p(n) > [ p(n-1) + p(n+1) ] / 2
- Weak Prime number p(n) when p(n) < [ p(n-1) + p(n+1) ] / 2
-
diff --git a/challenge-015/pyrrhlin/perl5/task2.txt b/challenge-015/pyrrhlin/perl5/task2.txt
deleted file mode 100644
index 1c00f90e2b..0000000000
--- a/challenge-015/pyrrhlin/perl5/task2.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Write a script to implement Vigenère cipher. The script should be able encode and decode. Checkout wiki page for more information.
-https://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher