diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-07-04 12:04:27 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-07-04 12:04:27 +0100 |
| commit | 99f6b977f6f03f41287a1935a063bac12329c862 (patch) | |
| tree | 33f66a4a0744ec6bb890f6ba79ce1fa4b37e1088 | |
| parent | 3758c6f750d87aa18ee2d8278241bbbda10afa6b (diff) | |
| download | perlweeklychallenge-club-99f6b977f6f03f41287a1935a063bac12329c862.tar.gz perlweeklychallenge-club-99f6b977f6f03f41287a1935a063bac12329c862.tar.bz2 perlweeklychallenge-club-99f6b977f6f03f41287a1935a063bac12329c862.zip | |
- Added solutions by Laurent Rosenfeld.
| -rw-r--r-- | challenge-015/laurent-rosenfeld/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-015/laurent-rosenfeld/perl5/ch-1.pl | 19 | ||||
| -rw-r--r-- | challenge-015/laurent-rosenfeld/perl5/ch-2.pl | 75 | ||||
| -rw-r--r-- | challenge-015/laurent-rosenfeld/perl6/ch-1.p6 | 9 | ||||
| -rw-r--r-- | challenge-015/laurent-rosenfeld/perl6/ch-1a.p6 | 7 | ||||
| -rw-r--r-- | challenge-015/laurent-rosenfeld/perl6/ch-1b.p6 | 12 | ||||
| -rw-r--r-- | challenge-015/laurent-rosenfeld/perl6/ch-2.p6 | 60 | ||||
| -rw-r--r-- | stats/pwc-current.json | 271 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 54 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 266 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 504 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 102 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 30 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 42 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 38 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 56 |
16 files changed, 876 insertions, 670 deletions
diff --git a/challenge-015/laurent-rosenfeld/blog.txt b/challenge-015/laurent-rosenfeld/blog.txt new file mode 100644 index 0000000000..5401950ccc --- /dev/null +++ b/challenge-015/laurent-rosenfeld/blog.txt @@ -0,0 +1 @@ +http://blogs.perl.org/users/laurent_r/2019/07/perl-weekly-challenge-15-strong-and-weak-primes-and-vigenere-encryption.html diff --git a/challenge-015/laurent-rosenfeld/perl5/ch-1.pl b/challenge-015/laurent-rosenfeld/perl5/ch-1.pl new file mode 100644 index 0000000000..975b168713 --- /dev/null +++ b/challenge-015/laurent-rosenfeld/perl5/ch-1.pl @@ -0,0 +1,19 @@ +#!/usr/bin/perl +use strict; +use warnings; +use feature qw/say/; + +sub is_prime{ + my $num = shift; + for my $i (2 .. $num ** .5) { + return 0 if $num % $i == 0; + } + return 1; +} +my @p = grep is_prime($_), 1..105; +my @strong = map $p[$_], + grep { $p[$_] - $p[$_-1] > $p[$_+1] - $p[$_] } 1..25; +my @weak = map $p[$_], + grep { $p[$_] - $p[$_-1] < $p[$_+1] - $p[$_] } 1..25; +say "Strong: @strong[0..9]"; +say "Weak: @weak[0..9]"; diff --git a/challenge-015/laurent-rosenfeld/perl5/ch-2.pl b/challenge-015/laurent-rosenfeld/perl5/ch-2.pl new file mode 100644 index 0000000000..1b6943df2e --- /dev/null +++ b/challenge-015/laurent-rosenfeld/perl5/ch-2.pl @@ -0,0 +1,75 @@ +#!/usr/bin/perl +use strict; +use warnings; +use feature qw/say/; + + +sub create_code { + # Converts password to a list of numeric codes + # where 'a' corresponds to a shift of 1, etc. + my $passwd = shift; + return map { ord($_) - ord('a') + 1 } split //, $passwd; +} +sub rotate_one_letter { + # Converts a single letter and deals with cases where + # applying the shift would get the result out of range + my ($letter, $shift) = @_; + my $max = 255; + my $shifted = $shift + ord $letter; + $shifted = $shifted > $max ? $shifted - $max : + $shifted < 0 ? $shifted + $max : + $shifted; + return chr $shifted; +} +sub rotate_msg { + # calls rotate-one-letter for each letter of the input message + # and passes the right shift value for that letter + my ($msg, @code) = @_; + my $i = 0; + my $result = ""; + for my $letter (split //, $msg) { + my $shift = $code[$i]; + $result .= rotate_one_letter $letter, $shift; + $i++; + $i = 0 if $i >= @code; + } + return $result; +} +sub encode { + my ($message, @key) = @_; + rotate_msg $message, @key; +} +sub decode { + my ($message, @key) = @_; + my @back_key = map {- $_} @key; + rotate_msg $message, @back_key; +} +sub run_tests { + use Test::More; # Minimal tests for providing an example + plan tests => 6; # needed on a separate code line to avoid + # useless output when not running the tests + my $code = join "", create_code("abcde"); + is $code, 12345, "Testing create_code"; + my @c = create_code "password"; + for my $word ( qw/foo bar hello world/) { + is decode( encode($word, @c), @c), $word, + "Round trip for $word"; + } + my $msg = "One small step for man, one giant leap for mankind!"; + my $ciphertext = encode $msg, @c; + is decode($ciphertext, @c), $msg, + "Message with spaces and punctuation"; +} + + +if (@ARGV == 1 and $ARGV[0] eq "test") { + run_tests; +} elsif ( @ARGV == 2) { + my ($message, $password) = @ARGV; + my @code = create_code $password; + my $ciphertext = encode $message, @code; + say "Encoded cyphertext: $ciphertext"; + say "Roundtrip to decoded message: ", decode $ciphertext, @code; +} else { + say "Wrong arguments"; +} diff --git a/challenge-015/laurent-rosenfeld/perl6/ch-1.p6 b/challenge-015/laurent-rosenfeld/perl6/ch-1.p6 new file mode 100644 index 0000000000..ed544b5d08 --- /dev/null +++ b/challenge-015/laurent-rosenfeld/perl6/ch-1.p6 @@ -0,0 +1,9 @@ +use v6; + +my @p = grep { .is-prime }, 1..*; #Lazy infinite list of primes +my @strong = map { @p[$_] }, + grep { @p[$_] > (@p[$_ - 1] + @p[$_ + 1]) / 2 }, 1..*; +my @weak = map { @p[$_] }, + grep { @p[$_] < (@p[$_ - 1] + @p[$_ + 1]) / 2 }, 1..*; +say "Strong primes: @strong[0..9]"; +say "Weak primes: @weak[0..9]"; diff --git a/challenge-015/laurent-rosenfeld/perl6/ch-1a.p6 b/challenge-015/laurent-rosenfeld/perl6/ch-1a.p6 new file mode 100644 index 0000000000..c48fced80b --- /dev/null +++ b/challenge-015/laurent-rosenfeld/perl6/ch-1a.p6 @@ -0,0 +1,7 @@ +use v6; + +my @p = grep { .is-prime }, 1..*; # Lazy infinite list of primes +say "Strong primes: ", (map { @p[$_] }, + grep { @p[$_] > (@p[$_ - 1] + @p[$_ + 1]) / 2 }, 1..*)[0..9]; +say "Weak primes: ", (map { @p[$_] }, + grep { @p[$_] < (@p[$_ - 1] + @p[$_ + 1]) / 2 }, 1..*)[0..9]; diff --git a/challenge-015/laurent-rosenfeld/perl6/ch-1b.p6 b/challenge-015/laurent-rosenfeld/perl6/ch-1b.p6 new file mode 100644 index 0000000000..db2df158b5 --- /dev/null +++ b/challenge-015/laurent-rosenfeld/perl6/ch-1b.p6 @@ -0,0 +1,12 @@ +use v6; + +my @p = grep { .is-prime }, 1..*; # Lazy infinite list of primes +sub mapper(UInt $i) { + @p[$i] > (@p[$i - 1] + @p[$i + 1])/2 ?? 'Strong' !! + @p[$i] < (@p[$i - 1] + @p[$i + 1])/2 ?? 'Weak' !! + 'Balanced'; +} +my %categories = categorize &mapper, 1..120; +for sort keys %categories -> $key { + say "$key primes: ", map {@p[$_]}, %categories{$key}[0..9]; +} diff --git a/challenge-015/laurent-rosenfeld/perl6/ch-2.p6 b/challenge-015/laurent-rosenfeld/perl6/ch-2.p6 new file mode 100644 index 0000000000..e6154360a8 --- /dev/null +++ b/challenge-015/laurent-rosenfeld/perl6/ch-2.p6 @@ -0,0 +1,60 @@ +use v6; + +subset Letter of Str where .chars == 1; + +sub create-code (Str $passwd) { + # Converts password to a list of numeric codes + # where 'a' corresponds to a shift of 1, etc. + return $passwd.comb(1).map: {.ord - 'a'.ord + 1} +} +sub rotate-one-letter (Letter $letter, Int $shift) { + # Converts a single letter and deals with cases + # where applying the shift would get out of range + constant $max = 255; + my $shifted = $letter.ord + $shift; + $shifted = $shifted > $max ?? $shifted - $max !! + $shifted < 0 ?? $shifted + $max !! + $shifted; + return $shifted.chr; +} +sub rotate-msg (Str $msg, @code) { + # calls rotate-one-letter for each letter of the input message + # and passes the right shift value for that letter + my $i = 0; + my $result = ""; + for $msg.comb(1) -> $letter { + my $shift = @code[$i]; + $result ~= rotate-one-letter $letter, $shift; + $i++; + $i = 0 if $i >= @code.elems; + } + return $result; +} +sub encode (Str $message, @key) { + rotate-msg $message, @key; +} +sub decode (Str $message, @key) { + my @back-key = map {- $_}, @key; + rotate-msg $message, @back-key; +} +multi MAIN (Str $message, Str $password) { + my @code = create-code $password; + my $ciphertext = encode $message, @code; + say "Encoded cyphertext: $ciphertext"; + say "Roundtrip to decoded message: {decode $ciphertext, @code}"; +} +multi MAIN ("test") { + use Test; # Minimal tests for providing an example + plan 6; + my $code = join "", create-code("abcde"); + is $code, 12345, "Testing create-code"; + my @c = create-code "password"; + for <foo bar hello world> -> $word { + is decode( encode($word, @c), @c), $word, + "Round trip for $word"; + } + my $msg = "One small step for man, one giant leap for mankind!"; + my $ciphertext = encode $msg, @c; + is decode($ciphertext, @c), $msg, + "Message with spaces and punctuation"; +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index f1fff6c1c6..898d8714f5 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -4,19 +4,121 @@ "text" : "Total Solutions" } }, + "title" : { + "text" : "Perl Weekly Challenge - 015" + }, + "series" : [ + { + "name" : "Perl Weekly Challenge - 015", + "colorByPoint" : 1, + "data" : [ + { + "y" : 2, + "drilldown" : "Andrezgz", + "name" : "Andrezgz" + }, + { + "name" : "Dave Jacoby", + "y" : 4, + "drilldown" : "Dave Jacoby" + }, + { + "drilldown" : "Duane Powell", + "y" : 2, + "name" : "Duane Powell" + }, + { + "name" : "E. Choroba", + "drilldown" : "E. Choroba", + "y" : 2 + }, + { + "name" : "Guillermo Ramos", + "y" : 3, + "drilldown" : "Guillermo Ramos" + }, + { + "name" : "Gustavo Chaves", + "y" : 2, + "drilldown" : "Gustavo Chaves" + }, + { + "name" : "Joelle Maslak", + "y" : 2, + "drilldown" : "Joelle Maslak" + }, + { + "y" : 5, + "drilldown" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld" + }, + { + "drilldown" : "Roger Bell West", + "y" : 2, + "name" : "Roger Bell West" + }, + { + "y" : 4, + "drilldown" : "Ruben Westerberg", + "name" : "Ruben Westerberg" + }, + { + "y" : 1, + "drilldown" : "Simon Miner", + "name" : "Simon Miner" + }, + { + "name" : "Steven Wilson", + "y" : 4, + "drilldown" : "Steven Wilson" + }, + { + "drilldown" : "Veesh Goldman", + "y" : 2, + "name" : "Veesh Goldman" + }, + { + "drilldown" : "Walt Mankowski", + "y" : 2, + "name" : "Walt Mankowski" + } + ] + } + ], + "tooltip" : { + "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/>", + "followPointer" : 1 + }, + "legend" : { + "enabled" : 0 + }, + "chart" : { + "type" : "column" + }, + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + } + } + }, "drilldown" : { "series" : [ { - "id" : "Andrezgz", - "name" : "Andrezgz", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Andrezgz", + "name" : "Andrezgz" }, { + "name" : "Dave Jacoby", "data" : [ [ "Perl 5", @@ -27,50 +129,50 @@ 1 ] ], - "id" : "Dave Jacoby", - "name" : "Dave Jacoby" + "id" : "Dave Jacoby" }, { "name" : "Duane Powell", - "id" : "Duane Powell", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Duane Powell" }, { - "name" : "E. Choroba", - "id" : "E. Choroba", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "E. Choroba", + "name" : "E. Choroba" }, { - "id" : "Guillermo Ramos", - "name" : "Guillermo Ramos", "data" : [ [ "Perl 5", 3 ] - ] + ], + "id" : "Guillermo Ramos", + "name" : "Guillermo Ramos" }, { "name" : "Gustavo Chaves", - "id" : "Gustavo Chaves", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Gustavo Chaves" }, { + "name" : "Joelle Maslak", "data" : [ [ "Perl 5", @@ -81,20 +183,39 @@ 1 ] ], - "name" : "Joelle Maslak", "id" : "Joelle Maslak" }, { + "name" : "Laurent Rosenfeld", + "id" : "Laurent Rosenfeld", "data" : [ [ "Perl 5", 2 + ], + [ + "Perl 6", + 2 + ], + [ + "Blog", + 1 ] - ], + ] + }, + { "id" : "Roger Bell West", + "data" : [ + [ + "Perl 5", + 2 + ] + ], "name" : "Roger Bell West" }, { + "name" : "Ruben Westerberg", + "id" : "Ruben Westerberg", "data" : [ [ "Perl 5", @@ -104,9 +225,7 @@ "Perl 6", 2 ] - ], - "name" : "Ruben Westerberg", - "id" : "Ruben Westerberg" + ] }, { "data" : [ @@ -115,8 +234,8 @@ 1 ] ], - "name" : "Simon Miner", - "id" : "Simon Miner" + "id" : "Simon Miner", + "name" : "Simon Miner" }, { "name" : "Steven Wilson", @@ -134,126 +253,30 @@ }, { "id" : "Veesh Goldman", - "name" : "Veesh Goldman", "data" : [ [ "Perl 5", 2 ] - ] + ], + "name" : "Veesh Goldman" }, { - "id" : "Walt Mankowski", "name" : "Walt Mankowski", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Walt Mankowski" } ] }, - "legend" : { - "enabled" : 0 - }, "xAxis" : { "type" : "category" }, "subtitle" : { - "text" : "[Champions: 13] Last updated at 2019-07-04 10:51:36 GMT" - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } - } - }, - "tooltip" : { - "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>", - "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", - "followPointer" : 1 - }, - "title" : { - "text" : "Perl Weekly Challenge - 015" - }, - "chart" : { - "type" : "column" - }, - "series" : [ - { - "colorByPoint" : 1, - "name" : "Perl Weekly Challenge - 015", - "data" : [ - { - "name" : "Andrezgz", - "drilldown" : "Andrezgz", - "y" : 2 - }, - { - "drilldown" : "Dave Jacoby", - "y" : 4, - "name" : "Dave Jacoby" - }, - { - "name" : "Duane Powell", - "drilldown" : "Duane Powell", - "y" : 2 - }, - { - "name" : "E. Choroba", - "y" : 2, - "drilldown" : "E. Choroba" - }, - { - "drilldown" : "Guillermo Ramos", - "y" : 3, - "name" : "Guillermo Ramos" - }, - { - "drilldown" : "Gustavo Chaves", - "y" : 2, - "name" : "Gustavo Chaves" - }, - { - "name" : "Joelle Maslak", - "drilldown" : "Joelle Maslak", - "y" : 2 - }, - { - "name" : "Roger Bell West", - "drilldown" : "Roger Bell West", - "y" : 2 - }, - { - "y" : 4, - "drilldown" : "Ruben Westerberg", - "name" : "Ruben Westerberg" - }, - { - "name" : "Simon Miner", - "drilldown" : "Simon Miner", - "y" : 1 - }, - { - "y" : 4, - "drilldown" : "Steven Wilson", - "name" : "Steven Wilson" - }, - { - "y" : 2, - "drilldown" : "Veesh Goldman", - "name" : "Veesh Goldman" - }, - { - "y" : 2, - "drilldown" : "Walt Mankowski", - "name" : "Walt Mankowski" - } - ] - } - ] + "text" : "[Champions: 14] Last updated at 2019-07-04 11:03:58 GMT" + } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index ea7de88624..058ad65f0f 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,63 +1,63 @@ { - "title" : { - "text" : "Perl Weekly Challenge Contributions - 2019" + "subtitle" : { + "text" : "Last updated at 2019-07-04 11:04:14 GMT" }, - "legend" : { - "enabled" : "false" + "yAxis" : { + "min" : 0, + "title" : { + "text" : null + } }, - "subtitle" : { - "text" : "Last updated at 2019-07-04 10:51:47 GMT" + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } + } }, "series" : [ { "dataLabels" : { - "color" : "#FFFFFF", - "align" : "right", "enabled" : "true", "format" : "{point.y:.0f}", "rotation" : -90, "y" : 10, + "color" : "#FFFFFF", "style" : { "fontSize" : "13px", "fontFamily" : "Verdana, sans-serif" - } + }, + "align" : "right" }, "data" : [ [ "Blog", - 133 + 134 ], [ "Perl 5", - 617 + 619 ], [ "Perl 6", - 342 + 344 ] ], "name" : "Contributions" } ], - "xAxis" : { - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - } - }, - "type" : "category" - }, "tooltip" : { "pointFormat" : "<b>{point.y:.0f}</b>" }, - "yAxis" : { - "min" : 0, - "title" : { - "text" : null - } - }, "chart" : { "type" : "column" + }, + "legend" : { + "enabled" : "false" + }, + "title" : { + "text" : "Perl Weekly Challenge Contributions - 2019" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 17ba3c16c4..419b9b2df0 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,91 +1,12 @@ { - "series" : [ - { - "colorByPoint" : "true", - "name" : "Perl Weekly Challenge Languages", - "data" : [ - { - "y" : 123, - "name" : "#001", - "drilldown" : "001" - }, - { - "drilldown" : "002", - "name" : "#002", - "y" : 104 - }, - { - "name" : "#003", - "drilldown" : "003", - "y" : 66 - }, - { - "drilldown" : "004", - "name" : "#004", - "y" : 84 - }, - { - "name" : "#005", - "drilldown" : "005", - "y" : 66 - }, - { - "drilldown" : "006", - "name" : "#006", - "y" : 47 - }, - { - "y" : 54, - "drilldown" : "007", - "name" : "#007" - }, - { - "drilldown" : "008", - "name" : "#008", - "y" : 67 - }, - { - "y" : 65, - "drilldown" : "009", - "name" : "#009" - }, - { - "name" : "#010", - "drilldown" : "010", - "y" : 58 - }, - { - "drilldown" : "011", - "name" : "#011", - "y" : 77 - }, - { - "y" : 81, - "name" : "#012", - "drilldown" : "012" - }, - { - "name" : "#013", - "drilldown" : "013", - "y" : 74 - }, - { - "drilldown" : "014", - "name" : "#014", - "y" : 94 - }, - { - "y" : 32, - "drilldown" : "015", - "name" : "#015" - } - ] - } - ], + "xAxis" : { + "type" : "category" + }, "drilldown" : { "series" : [ { "name" : "001", + "id" : "001", "data" : [ [ "Perl 5", @@ -99,8 +20,7 @@ "Blog", 10 ] - ], - "id" : "001" + ] }, { "data" : [ @@ -117,10 +37,12 @@ 9 ] ], - "name" : "002", - "id" : "002" + "id" : "002", + "name" : "002" }, { + "id" : "003", + "name" : "003", "data" : [ [ "Perl 5", @@ -134,9 +56,7 @@ "Blog", 8 ] - ], - "name" : "003", - "id" : "003" + ] }, { "data" : [ @@ -153,11 +73,10 @@ 9 ] ], - "name" : "004", - "id" : "004" + "id" : "004", + "name" : "004" }, { - "name" : "005", "data" : [ [ "Perl 5", @@ -172,9 +91,11 @@ 11 ] ], + "name" : "005", "id" : "005" }, { + "name" : "006", "id" : "006", "data" : [ [ @@ -189,11 +110,9 @@ "Blog", 6 ] - ], - "name" : "006" + ] }, { - "name" : "007", "data" : [ [ "Perl 5", @@ -208,6 +127,7 @@ 8 ] ], + "name" : "007", "id" : "007" }, { @@ -225,11 +145,10 @@ 9 ] ], - "name" : "008", - "id" : "008" + "id" : "008", + "name" : "008" }, { - "id" : "009", "data" : [ [ "Perl 5", @@ -244,11 +163,10 @@ 11 ] ], + "id" : "009", "name" : "009" }, { - "id" : "010", - "name" : "010", "data" : [ [ "Perl 5", @@ -262,10 +180,11 @@ "Blog", 9 ] - ] + ], + "name" : "010", + "id" : "010" }, { - "name" : "011", "data" : [ [ "Perl 5", @@ -280,9 +199,11 @@ 8 ] ], - "id" : "011" + "id" : "011", + "name" : "011" }, { + "id" : "012", "name" : "012", "data" : [ [ @@ -297,12 +218,9 @@ "Blog", 9 ] - ], - "id" : "012" + ] }, { - "id" : "013", - "name" : "013", "data" : [ [ "Perl 5", @@ -316,11 +234,13 @@ "Blog", 11 ] - ] + ], + "name" : "013", + "id" : "013" }, { - "id" : "014", "name" : "014", + "id" : "014", "data" : [ [ "Perl 5", @@ -340,15 +260,15 @@ "data" : [ [ "Perl 5", - 27 + 29 ], [ "Perl 6", - 3 + 5 ], [ "Blog", - 2 + 3 ] ], "name" : "015", @@ -356,38 +276,118 @@ } ] }, - "chart" : { - "type" : "column" - }, "yAxis" : { "title" : { "text" : "Total Solutions" } }, - "xAxis" : { - "type" : "category" + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-07-04 11:04:14 GMT" + }, + "legend" : { + "enabled" : "false" + }, + "title" : { + "text" : "Perl Weekly Challenge Language" + }, + "chart" : { + "type" : "column" }, "tooltip" : { + "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>", "followPointer" : "true", - "headerFormat" : "<span style=\"font-size:11px\"></span>", - "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>" + "headerFormat" : "<span style=\"font-size:11px\"></span>" }, + "series" : [ + { + "name" : "Perl Weekly Challenge Languages", + "data" : [ + { + "name" : "#001", + "drilldown" : "001", + "y" : 123 + }, + { + "name" : "#002", + "drilldown" : "002", + "y" : 104 |
