aboutsummaryrefslogtreecommitdiff
path: root/challenge-022
diff options
context:
space:
mode:
authorAdam Russell <ac.russell@live.com>2019-08-25 10:57:05 -0400
committerAdam Russell <ac.russell@live.com>2019-08-25 10:57:05 -0400
commitbccf9cbda68acdc5c264eabb81af1bd8c8a9ecc8 (patch)
tree9d122d6e3e77a36bb4ea513bc7a50cfc76db1341 /challenge-022
parent5b0cf6989aece0ec2da49d6d2e4c2d4d04ba9850 (diff)
downloadperlweeklychallenge-club-bccf9cbda68acdc5c264eabb81af1bd8c8a9ecc8.tar.gz
perlweeklychallenge-club-bccf9cbda68acdc5c264eabb81af1bd8c8a9ecc8.tar.bz2
perlweeklychallenge-club-bccf9cbda68acdc5c264eabb81af1bd8c8a9ecc8.zip
solutions for challenge 022
Diffstat (limited to 'challenge-022')
-rw-r--r--challenge-022/adam-russell/blog.txt1
-rw-r--r--challenge-022/adam-russell/perl5/ch-1.pl41
-rw-r--r--challenge-022/adam-russell/perl5/ch-2.pl71
-rw-r--r--challenge-022/adam-russell/perl6/ch-1.p60
-rw-r--r--challenge-022/adam-russell/perl6/ch-2.p60
5 files changed, 113 insertions, 0 deletions
diff --git a/challenge-022/adam-russell/blog.txt b/challenge-022/adam-russell/blog.txt
index e69de29bb2..6ac9c77e8b 100644
--- a/challenge-022/adam-russell/blog.txt
+++ 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
index e69de29bb2..ecb9a0905d 100644
--- a/challenge-022/adam-russell/perl5/ch-1.pl
+++ 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
index e69de29bb2..066f0834d5 100644
--- a/challenge-022/adam-russell/perl5/ch-2.pl
+++ 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
diff --git a/challenge-022/adam-russell/perl6/ch-1.p6 b/challenge-022/adam-russell/perl6/ch-1.p6
deleted file mode 100644
index e69de29bb2..0000000000
--- a/challenge-022/adam-russell/perl6/ch-1.p6
+++ /dev/null
diff --git a/challenge-022/adam-russell/perl6/ch-2.p6 b/challenge-022/adam-russell/perl6/ch-2.p6
deleted file mode 100644
index e69de29bb2..0000000000
--- a/challenge-022/adam-russell/perl6/ch-2.p6
+++ /dev/null