diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-07-14 15:19:56 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-07-14 15:19:56 +0100 |
| commit | ab69b13598516fd6ed6fa148f8bd33dbddd82929 (patch) | |
| tree | c08e10a414088a67ff87bf8cb8ae1a2987f87349 | |
| parent | c2f89a8fd799fc47e30ca0a0b6c27a119dfa0e51 (diff) | |
| download | perlweeklychallenge-club-ab69b13598516fd6ed6fa148f8bd33dbddd82929.tar.gz perlweeklychallenge-club-ab69b13598516fd6ed6fa148f8bd33dbddd82929.tar.bz2 perlweeklychallenge-club-ab69b13598516fd6ed6fa148f8bd33dbddd82929.zip | |
- Removed duplicate folder for Michael Hamlin.
| -rw-r--r-- | challenge-015/pyrrhlin/README | 1 | ||||
| -rw-r--r-- | challenge-015/pyrrhlin/perl5/GetPrime.pm | 50 | ||||
| -rw-r--r-- | challenge-015/pyrrhlin/perl5/Vigenere.pm | 67 | ||||
| l--------- | challenge-015/pyrrhlin/perl5/ch-1.pl | 1 | ||||
| l--------- | challenge-015/pyrrhlin/perl5/ch-2.pl | 1 | ||||
| -rw-r--r-- | challenge-015/pyrrhlin/perl5/task1.txt | 15 | ||||
| -rw-r--r-- | challenge-015/pyrrhlin/perl5/task2.txt | 2 |
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 |
