diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2019-08-25 16:43:52 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-08-25 16:43:52 +0100 |
| commit | 62e316d845faf70b46d7ab981c4a114978472b92 (patch) | |
| tree | 1bf3ae38d657d0ec1e420f52a1b71d77a9893d05 | |
| parent | 4f1bef027332b9127d4e913caf41df53772bc8c8 (diff) | |
| parent | bccf9cbda68acdc5c264eabb81af1bd8c8a9ecc8 (diff) | |
| download | perlweeklychallenge-club-62e316d845faf70b46d7ab981c4a114978472b92.tar.gz perlweeklychallenge-club-62e316d845faf70b46d7ab981c4a114978472b92.tar.bz2 perlweeklychallenge-club-62e316d845faf70b46d7ab981c4a114978472b92.zip | |
Merge pull request #552 from adamcrussell/challenge-022
Challenge 022
| -rw-r--r-- | challenge-022/adam-russell/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-022/adam-russell/perl5/ch-1.pl | 41 | ||||
| -rw-r--r-- | challenge-022/adam-russell/perl5/ch-2.pl | 71 |
3 files changed, 113 insertions, 0 deletions
diff --git a/challenge-022/adam-russell/blog.txt b/challenge-022/adam-russell/blog.txt new file mode 100644 index 0000000000..6ac9c77e8b --- /dev/null +++ b/challenge-022/adam-russell/blog.txt @@ -0,0 +1 @@ +https://adamcrussell.livejournal.com/7521.html diff --git a/challenge-022/adam-russell/perl5/ch-1.pl b/challenge-022/adam-russell/perl5/ch-1.pl new file mode 100644 index 0000000000..ecb9a0905d --- /dev/null +++ b/challenge-022/adam-russell/perl5/ch-1.pl @@ -0,0 +1,41 @@ +use strict; +use warnings; +## +# Write a script to print the first 10 sexy prime numbers. +## +use boolean; +use LWP::UserAgent; +use constant PRIME_URL => "http://primes.utm.edu/lists/small/100000.txt"; + +sub get_primes{ + my @primes; + my $ua = new LWP::UserAgent( + ssl_opts => {verify_hostname => 0} + ); + my $response = $ua->get(PRIME_URL); + my @lines = split(/\n/,$response->decoded_content); + foreach my $line (@lines){ + my @p = split(/\s+/, $line); + unless(@p < 10){ + push @primes, @p[1..(@p - 1)]; + } + } + return @primes; +} + +MAIN:{ + my @sexy; + my @primes = get_primes(); + for my $i (0 .. (@primes - 1)){ + for my $j (($i + 1) .. (@primes - 1)){ + last if($primes[$j] - $primes[$i] > 6); + push @sexy, [$primes[$i], $primes[$j]] if($primes[$j] - $primes[$i] == 6); + last if(@sexy == 10); + } + last if(@sexy == 10); + } + for my $pair (@sexy){ + print "[" . join(", ", @{$pair}) . "]"; + } + print "\n"; +} diff --git a/challenge-022/adam-russell/perl5/ch-2.pl b/challenge-022/adam-russell/perl5/ch-2.pl new file mode 100644 index 0000000000..066f0834d5 --- /dev/null +++ b/challenge-022/adam-russell/perl5/ch-2.pl @@ -0,0 +1,71 @@ +use strict; +use warnings; +## +# Write a script to implement Lempel–Ziv–Welch (LZW) compression algorithm. +## +use constant TABLE_SIZE => 256; + +sub initialize_table{ + my $code = 0; + my %compression_table; + do{ + $compression_table{chr($code)} = $code++; + }while($code < TABLE_SIZE); + return %compression_table; +} + +sub encode{ + my($string) = @_; + my %compression_table = initialize_table(); + my $code = keys %compression_table; + my @encoded; + my @characters = split(//, $string); + my $p = shift @characters; + while(@characters){ + my $c = shift @characters; + if($compression_table{"$p$c"}){ + $p = "$p$c"; + } + else{ + push @encoded, $compression_table{$p}; + $compression_table{"$p$c"} = $code++; + $p = $c; + } + } + push @encoded, $compression_table{$p}; + return @encoded; +} + +sub decode{ + my(@codes) = @_; + my %decoding_table = reverse(initialize_table()); + my $code = keys %decoding_table; + my $string = ""; + my $p = shift @codes; + my $c; + $string = $decoding_table{$p}; + while(@codes){ + $c = shift @codes; + my $entry = $decoding_table{$c}; + $string .= $entry; + my $first_character = substr($entry, 0, 1); + my $string_previous = $decoding_table{$p}; + $decoding_table{$code++} = "$string_previous$first_character"; + $p = $c; + } + return $string; +} + +MAIN:{ + my $text = <DATA>; + chomp($text); + initialize_table(); + print join(" ", encode($text)); + print "\n"; + print decode(encode($text)); + print "\n"; +} + + +__DATA__ +Abra abracadabra |
