diff options
| author | Adam Russell <ac.russell@live.com> | 2019-08-25 10:57:05 -0400 |
|---|---|---|
| committer | Adam Russell <ac.russell@live.com> | 2019-08-25 10:57:05 -0400 |
| commit | bccf9cbda68acdc5c264eabb81af1bd8c8a9ecc8 (patch) | |
| tree | 9d122d6e3e77a36bb4ea513bc7a50cfc76db1341 /challenge-022 | |
| parent | 5b0cf6989aece0ec2da49d6d2e4c2d4d04ba9850 (diff) | |
| download | perlweeklychallenge-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.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 | ||||
| -rw-r--r-- | challenge-022/adam-russell/perl6/ch-1.p6 | 0 | ||||
| -rw-r--r-- | challenge-022/adam-russell/perl6/ch-2.p6 | 0 |
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 |
