diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-09-15 18:34:37 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-09-15 18:34:37 +0100 |
| commit | 2a10d17c64aa9354d26742792bce6435babad883 (patch) | |
| tree | f409571f34927894fdb2e098904a4f2966127ead | |
| parent | d17340c5b14a63d89895ad9a4ea4c494962722c6 (diff) | |
| download | perlweeklychallenge-club-2a10d17c64aa9354d26742792bce6435babad883.tar.gz perlweeklychallenge-club-2a10d17c64aa9354d26742792bce6435babad883.tar.bz2 perlweeklychallenge-club-2a10d17c64aa9354d26742792bce6435babad883.zip | |
- Added solutions by Guillermo Ramos.
| -rw-r--r-- | challenge-025/guillermo-ramos/perl5/ch-1.pl | 57 | ||||
| -rw-r--r-- | challenge-025/guillermo-ramos/perl5/ch-2.pl | 71 | ||||
| -rw-r--r-- | stats/pwc-current.json | 241 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 38 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 240 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 896 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 98 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 104 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 46 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 84 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 56 |
11 files changed, 1037 insertions, 894 deletions
diff --git a/challenge-025/guillermo-ramos/perl5/ch-1.pl b/challenge-025/guillermo-ramos/perl5/ch-1.pl new file mode 100644 index 0000000000..5bc14b41bb --- /dev/null +++ b/challenge-025/guillermo-ramos/perl5/ch-1.pl @@ -0,0 +1,57 @@ +#!/usr/bin/env perl +# +# Generate a longest sequence of the following “English Pokemon” names where +# each name starts with the last letter of previous name. +# +# audino bagon baltoy banette bidoof braviary bronzor carracosta charmeleon +# cresselia croagunk darmanitan deino emboar emolga exeggcute gabite girafarig +# gulpin haxorus heatmor heatran ivysaur jellicent jumpluff kangaskhan +# kricketune landorus ledyba loudred lumineon lunatone machamp magnezone +# mamoswine nosepass petilil pidgeotto pikachu pinsir poliwrath poochyena +# porygon2 porygonz registeel relicanth remoraid rufflet sableye scolipede +# scrafty seaking sealeo silcoon simisear snivy snorlax spoink starly tirtouga +# trapinch treecko tyrogue vigoroth vulpix wailord wartortle whismur wingull +# yamask +################################################################################ + +use strict; +use warnings; + +use Memoize; + +my @POKEMON = qw<audino bagon baltoy banette bidoof braviary bronzor carracosta + charmeleon cresselia croagunk darmanitan deino emboar emolga exeggcute + gabite girafarig gulpin haxorus heatmor heatran ivysaur jellicent jumpluff + kangaskhan kricketune landorus ledyba loudred lumineon lunatone machamp + magnezone mamoswine nosepass petilil pidgeotto pikachu pinsir poliwrath + poochyena porygon2 porygonz registeel relicanth remoraid rufflet sableye + scolipede scrafty seaking sealeo silcoon simisear snivy snorlax spoink + starly tirtouga trapinch treecko tyrogue vigoroth vulpix wailord wartortle + whismur wingull yamask>; + +memoize('longest_starting_from'); +sub longest_starting_from { + my ($first, @pokemon) = @_; + my @candidates = grep { substr($_, 0, 1) eq $first } @pokemon; + my @longest_path; + foreach my $candidate (@candidates) { + my @path = longest_starting_from(substr($candidate, -1), + grep { $_ ne $candidate} @pokemon); + @longest_path = ($candidate, @path) if @path+1 > @longest_path; + } + return @longest_path; +} + +sub longest { + my @list = @_; + my @longest_path; + foreach my $letter ('a' .. 'z') { + print "Trying letter $letter...\n"; + my @path = longest_starting_from($letter, @list); + @longest_path = @path if @path > @longest_path; + print "Longest so far: @longest_path\n"; + } + return @longest_path; +} + +longest(@POKEMON); diff --git a/challenge-025/guillermo-ramos/perl5/ch-2.pl b/challenge-025/guillermo-ramos/perl5/ch-2.pl new file mode 100644 index 0000000000..3a53a60084 --- /dev/null +++ b/challenge-025/guillermo-ramos/perl5/ch-2.pl @@ -0,0 +1,71 @@ +#!/usr/bin/env perl +# +# Create script to implement Chaocipher. Please checkout wiki page for more +# information. +# +# (https://en.wikipedia.org/wiki/Chaocipher). +# (http://www.mountainvistasoft.com/chaocipher/ActualChaocipher/Chaocipher-Revealed-Algorithm.pdf). +################################################################################ + +use strict; +use warnings; + +sub set_zenith { + my ($alphabet, $character) = @_; + my $idx = index($alphabet, $character); + return substr($alphabet, $idx) . substr($alphabet, 0, $idx); +} + +sub rotate { + my $alphabet = shift; + return substr($alphabet, 1) . substr($alphabet, 0, 1); +} + +sub permute_left { + my ($alphabet, $character) = @_; + $alphabet = set_zenith($alphabet, $character); + my $extracted = substr($alphabet, 1, 1); + substr($alphabet, 1, 13) = rotate(substr($alphabet, 1, 13)); + return $alphabet; +} + +sub permute_right { + my ($alphabet, $character) = @_; + $alphabet = rotate(set_zenith($alphabet, $character)); + my $extracted = substr($alphabet, 1, 1); + substr($alphabet, 2, 12) = rotate(substr($alphabet, 2, 12)); + return $alphabet; +} + +sub encrypt { + my ($text, $left, $right) = @_; + foreach my $index (0 .. length($text)-1) { + my $plain_char = substr($text, $index, 1); + my $cipher_char = substr($left, index($right, $plain_char), 1); + substr($text, $index, 1) = $cipher_char; + $left = permute_left($left, $cipher_char); + $right = permute_right($right, $plain_char); + } + return $text; +} + +sub decrypt { + my ($text, $left, $right) = @_; + foreach my $index (0 .. length($text)-1) { + my $cipher_char = substr($text, $index, 1); + my $plain_char = substr($right, index($left, $cipher_char), 1); + substr($text, $index, 1) = $plain_char; + $left = permute_left($left, $cipher_char); + $right = permute_right($right, $plain_char); + } + return $text; +} + +@ARGV == 3 or die "Usage: $0 <left_alpha> <right_alpha> <text>\n"; +my ($left, $right, $text) = @ARGV; + +my $cipher = encrypt($text, $left, $right); +print "Encrypted: '$cipher'\n"; + +my $plain = decrypt($cipher, $left, $right); +print "Decrypted: '$plain'\n"; diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 799b211812..60630f19a6 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,106 +1,51 @@ { - "title" : { - "text" : "Perl Weekly Challenge - 025" - }, - "tooltip" : { - "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", - "followPointer" : 1, - "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>" - }, - "series" : [ - { - "name" : "Perl Weekly Challenge - 025", - "data" : [ - { - "drilldown" : "Andrezgz", - "name" : "Andrezgz", - "y" : 2 - }, - { - "drilldown" : "Duane Powell", - "name" : "Duane Powell", - "y" : 2 - }, - { - "drilldown" : "E. Choroba", - "y" : 3, - "name" : "E. Choroba" - }, - { - "drilldown" : "Joelle Maslak", - "y" : 4, - "name" : "Joelle Maslak" - }, - { - "name" : "Kevin Colyer", - "y" : 2, - "drilldown" : "Kevin Colyer" - }, - { - "name" : "Laurent Rosenfeld", - "y" : 5, - "drilldown" : "Laurent Rosenfeld" - }, - { - "drilldown" : "Ozzy", - "name" : "Ozzy", - "y" : 1 - }, - { - "drilldown" : "Roger Bell West", - "name" : "Roger Bell West", - "y" : 3 - }, - { - "drilldown" : "Ruben Westerberg", - "name" : "Ruben Westerberg", - "y" : 4 - }, - { - "drilldown" : "Simon Proctor", - "y" : 1, - "name" : "Simon Proctor" - }, - { - "y" : 5, - "name" : "Yet Ebreo", - "drilldown" : "Yet Ebreo" - } - ], - "colorByPoint" : 1 + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } } - ], + }, "subtitle" : { - "text" : "[Champions: 11] Last updated at 2019-09-15 15:13:44 GMT" + "text" : "[Champions: 12] Last updated at 2019-09-15 17:34:09 GMT" }, - "xAxis" : { - "type" : "category" + "chart" : { + "type" : "column" + }, + "legend" : { + "enabled" : 0 + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } }, "drilldown" : { "series" : [ { + "id" : "Andrezgz", "data" : [ [ "Perl 5", 2 ] ], - "id" : "Andrezgz", "name" : "Andrezgz" }, { + "name" : "Duane Powell", + "id" : "Duane Powell", "data" : [ [ "Perl 5", 2 ] - ], - "name" : "Duane Powell", - "id" : "Duane Powell" + ] }, { "name" : "E. Choroba", - "id" : "E. Choroba", "data" : [ [ "Perl 5", @@ -110,7 +55,18 @@ "Blog", 1 ] - ] + ], + "id" : "E. Choroba" + }, + { + "data" : [ + [ + "Perl 5", + 2 + ] + ], + "id" : "Guillermo Ramos", + "name" : "Guillermo Ramos" }, { "data" : [ @@ -123,18 +79,18 @@ 2 ] ], - "name" : "Joelle Maslak", - "id" : "Joelle Maslak" + "id" : "Joelle Maslak", + "name" : "Joelle Maslak" }, { "id" : "Kevin Colyer", - "name" : "Kevin Colyer", "data" : [ [ "Perl 6", 2 ] - ] + ], + "name" : "Kevin Colyer" }, { "data" : [ @@ -151,21 +107,20 @@ 1 ] ], - "name" : "Laurent Rosenfeld", - "id" : "Laurent Rosenfeld" + "id" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld" }, { - "name" : "Ozzy", "id" : "Ozzy", "data" : [ [ "Perl 6", 1 ] - ] + ], + "name" : "Ozzy" }, { - "name" : "Roger Bell West", "id" : "Roger Bell West", "data" : [ [ @@ -176,9 +131,12 @@ "Blog", 1 ] - ] + ], + "name" : "Roger Bell West" }, { + "name" : "Ruben Westerberg", + "id" : "Ruben Westerberg", "data" : [ [ "Perl 5", @@ -188,21 +146,20 @@ "Perl 6", 2 ] - ], - "name" : "Ruben Westerberg", - "id" : "Ruben Westerberg" + ] }, { + "name" : "Simon Proctor", "data" : [ [ "Perl 6", 1 ] ], - "id" : "Simon Proctor", - "name" : "Simon Proctor" + "id" : "Simon Proctor" }, { + "id" : "Yet Ebreo", "data" : [ [ "Perl 5", @@ -217,29 +174,87 @@ 1 ] ], - "name" : "Yet Ebreo", - "id" : "Yet Ebreo" + "name" : "Yet Ebreo" } ] }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } + "tooltip" : { + "followPointer" : 1, + "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", + "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>" }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } - } + "xAxis" : { + "type" : "category" }, - "chart" : { - "type" : "column" + "title" : { + "text" : "Perl Weekly Challenge - 025" }, - "legend" : { - "enabled" : 0 - } + "series" : [ + { + "name" : "Perl Weekly Challenge - 025", + "colorByPoint" : 1, + "data" : [ + { + "drilldown" : "Andrezgz", + "name" : "Andrezgz", + "y" : 2 + }, + { + "drilldown" : "Duane Powell", + "y" : 2, + "name" : "Duane Powell" + }, + { + "y" : 3, + "name" : "E. Choroba", + "drilldown" : "E. Choroba" + }, + { + "y" : 2, + "name" : "Guillermo Ramos", + "drilldown" : "Guillermo Ramos" + }, + { + "y" : 4, + "name" : "Joelle Maslak", + "drilldown" : "Joelle Maslak" + }, + { + "name" : "Kevin Colyer", + "y" : 2, + "drilldown" : "Kevin Colyer" + }, + { + "drilldown" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld", + "y" : 5 + }, + { + "drilldown" : "Ozzy", + "name" : "Ozzy", + "y" : 1 + }, + { + "drilldown" : "Roger Bell West", + "y" : 3, + "name" : "Roger Bell West" + }, + { + "drilldown" : "Ruben Westerberg", + "y" : 4, + "name" : "Ruben Westerberg" + }, + { + "drilldown" : "Simon Proctor", + "y" : 1, + "name" : "Simon Proctor" + }, + { + "drilldown" : "Yet Ebreo", + "y" : 5, + "name" : "Yet Ebreo" + } + ] + } + ] } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index b02cd8f76f..9cfd5c28cb 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,45 +1,46 @@ { + "legend" : { + "enabled" : "false" + }, "xAxis" : { "type" : "category", "labels" : { "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" } } }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" - }, - "legend" : { - "enabled" : "false" - }, "title" : { "text" : "Perl Weekly Challenge Contributions - 2019" }, "subtitle" : { - "text" : "Last updated at 2019-09-15 15:14:04 GMT" + "text" : "Last updated at 2019-09-15 17:34:21 GMT" }, "yAxis" : { - "min" : 0, "title" : { "text" : null - } + }, + "min" : 0 + }, + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" }, "series" : [ { "dataLabels" : { - "color" : "#FFFFFF", - "enabled" : "true", + "align" : "right", "y" : 10, - "rotation" : -90, - "format" : "{point.y:.0f}", + "enabled" : "true", + "color" : "#FFFFFF", "style" : { "fontSize" : "13px", "fontFamily" : "Verdana, sans-serif" }, - "align" : "right" + "rotation" : -90, + "format" : "{point.y:.0f}" }, + "name" : "Contributions", "data" : [ [ "Blog", @@ -47,14 +48,13 @@ ], [ "Perl 5", - 1021 + 1023 ], [ "Perl 6", 618 ] - ], - "name" : "Contributions" + ] } ], "chart" : { diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 7adbfdf56f..d32fa1008c 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,42 +1,17 @@ { - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-09-15 15:14:04 GMT" - }, - "title" : { - "text" : "Perl Weekly Challenge Language" - }, "plotOptions" : { "series" : { + "borderWidth" : 0, "dataLabels" : { "format" : "{point.y}", "enabled" : 1 - }, - "borderWidth" : 0 - } - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" + } } }, - "xAxis" : { - "type" : "category" - }, - "tooltip" : { - "headerFormat" : "<span style=\"font-size:11px\"></span>", - "followPointer" : "true", - "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>" - }, - "legend" : { - "enabled" : "false" - }, - "chart" : { - "type" : "column" - }, "drilldown" : { "series" : [ { - "name" : "001", + "id" : "001", "data" : [ [ "Perl 5", @@ -51,11 +26,10 @@ 11 ] ], - "id" : "001" + "name" : "001" }, { "id" : "002", - "name" : "002", "data" : [ [ "Perl 5", @@ -69,10 +43,11 @@ "Blog", 9 ] - ] + ], + "name" : "002" }, { - "name" : "003", + "id" : "003", "data" : [ [ "Perl 5", @@ -87,7 +62,7 @@ 8 ] ], - "id" : "003" + "name" : "003" }, { "id" : "004", @@ -108,6 +83,7 @@ "name" : "004" }, { + "id" : "005", "data" : [ [ "Perl 5", @@ -122,8 +98,7 @@ 11 ] ], - "name" : "005", - "id" : "005" + "name" : "005" }, { "name" : "006", @@ -145,7 +120,6 @@ }, { "id" : "007", - "name" : "007", "data" : [ [ "Perl 5", @@ -159,11 +133,10 @@ "Blog", 9 ] - ] + ], + "name" : "007" }, { - "id" : "008", - "name" : "008", "data" : [ [ "Perl 5", @@ -177,7 +150,9 @@ "Blog", 10 ] - ] + ], + "name" : "008", + "id" : "008" }, { "id" : "009", @@ -216,7 +191,7 @@ ] }, { - "id" : "011", + "name" : "011", "data" : [ [ "Perl 5", @@ -231,9 +206,10 @@ 9 ] ], - "name" : "011" + "id" : "011" }, { + "name" : "012", "data" : [ [ "Perl 5", @@ -248,12 +224,9 @@ 11 ] ], - "name" : "012", "id" : "012" }, { - "id" : "013", - "name" : "013", "data" : [ [ "Perl 5", @@ -267,10 +240,13 @@ "Blog", 13 ] - ] + ], + "name" : "013", + "id" : "013" }, { "id" : "014", + "name" : "014", "data" : [ [ "Perl 5", @@ -284,11 +260,10 @@ "Blog", 14 ] - ], - "name" : "014" + ] }, { - "id" : "015", + "name" : "015", "data" : [ [ "Perl 5", @@ -303,9 +278,11 @@ 15 ] ], - "name" : "015" + "id" : "015" }, { + "id" : "016", + "name" : "016", "data" : [ [ "Perl 5", @@ -319,11 +296,10 @@ "Blog", 12 ] - ], - "name" : "016", - "id" : "016" + ] }, { + "name" : "017", "data" : [ [ "Perl 5", @@ -338,10 +314,11 @@ 12 ] ], - "name" : "017", "id" : "017" }, { + "id" : "018", + "name" : "018", "data" : [ [ "Perl 5", @@ -355,11 +332,11 @@ "Blog", 14 ] - ], - "name" : "018", - "id" : "018" + ] }, { + "id" : "019", + "name" : "019", "data" : [ [ "Perl 5", @@ -373,13 +350,9 @@ "Blog", 13 ] - ], - "name" : "019", - "id" : "019" + ] }, { - "id" : "020", - "name" : "020", "data" : [ [ "Perl 5", @@ -393,10 +366,13 @@ "Blog", 13 ] - ] + ], + "name" : "020", + "id" : "020" }, { "id" : "021", + "name" : "021", "data" : [ [ "Perl 5", @@ -410,12 +386,9 @@ "Blog", 10 ] - ], - "name" : "021" + ] }, { - "id" : "022", - "name" : "022", "data" : [ [ "Perl 5", @@ -429,9 +402,12 @@ "Blog", 10 ] - ] + ], + "name" : "022", + "id" : "022" }, { + "id" : "023", "name" : "023", "data" : [ [ @@ -446,10 +422,10 @@ "Blog", 12 ] - ], - "id" : "023" + ] }, { + "id" : "024", "data" : [ [ "Perl 5", @@ -464,16 +440,13 @@ 9 ] ], - "name" : "024", - "id" : "024" + "name" : "024" }, { - "id" : "025", - "name" : "025", "data" : [ [ "Perl 5", - 16 + 18 ], [ "Perl 6", @@ -483,53 +456,60 @@ "Blog", 4 ] - ] + ], + "name" : "025", + "id" : "025" } ] }, + "tooltip" : { + "headerFormat" : "<span style=\"font-size:11px\"></span>", + "followPointer" : "true", + "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>" + }, "series" : [ { - "colorByPoint" : "true", + "name" : "Perl Weekly Challenge Languages", "data" : [ { + "name" : "#001", "drilldown" : "001", - "y" : 132, - "name" : "#001" + "y" : 132 }, { - "y" : 104, + "name" : "#002", "drilldown" : "002", - "name" : "#002" + "y" : 104 }, { - "drilldown" : "003", "y" : 66, + "drilldown" : "003", "name" : "#003" }, { - "drilldown" : "004", "y" : 86, - "name" : "#004" + "name" : "#004", + "drilldown" : "004" }, { - "drilldown" : "005", + "y" : 66, "name" : "#005", - "y" : 66 + "drilldown" : "005" }, { - "drilldown" : "006", "y" : 47, + "drilldown" : "006", "name" : "#006" }, { - "y" : 55, "drilldown" : "007", - "name" : "#007" + "name" : "#007", + "y" : 55 }, { "y" : 68, - "drilldown" : "008", - "name" : "#008" + "name" : "#008", + "drilldown" : "008" }, { "drilldown" : "009", @@ -542,82 +522,102 @@ "y" : 60 }, { + "name" : "#011", "drilldown" : "011", - "y" : 78, - "name" : "#011" + "y" : 78 }, { - "drilldown" : "012", "y" : 83, - "name" : "#012" + "name" : "#012", + "drilldown" : "012" }, { + "y" : 76, "name" : "#013", - "drilldown" : "013", - "y" : 76 + "drilldown" : "013" }, { "drilldown" : "014", - "y" : 95, - "name" : "#014" + "name" : "#014", + "y" : 95 }, { - "y" : 93, + "name" : "#015", "drilldown" : "015", - "name" : "#015" + "y" : 93 }, { - "name" : "#016", "drilldown" : "016", + "name" : "#016", "y" : 66 }, { - "y" : 79, "drilldown" : "017", - "name" : "#017" + "name" : "#017", + "y" : 79 }, { - "y" : 76, + "name" : "#018", "drilldown" : "018", - "name" : "#018" + "y" : 76 }, { - "drilldown" : "019", "name" : "#019", + "drilldown" : "019", "y" : 95 }, { "drilldown" : "020", - "y" : 95, - "name" : "#020" + "name" : "#020", + "y" : 95 }, { "drilldown" : "021", - "y" : 67, - "name" : "#021" + "name" : "#021", + "y" : 67 }, { - "name" : "#022", + "y" : 63, "drilldown" : "022", - "y" : 63 + "name" : "#022" }, { - "y" : 91, + "name" : "#023", "drilldown" : "023", - "name" : "#023" + "y" : 91 }, { "y" : 66, - "drilldown" : "024", - "name" : "#024" + "name" : "#024", + "drilldown" : "024" }, { - "y" : 32, + "y" : 34, "drilldown" : "025", "name" : "#025" } ], - "name" : "Perl Weekly Challenge Languages" + "colorByPoint" : "true" + } + ], + "chart" : { + "type" : "column" + }, |
