diff options
| -rw-r--r-- | challenge-021/kevin-colyer/perl6/ch-1.p6 | 69 | ||||
| -rw-r--r-- | challenge-021/kevin-colyer/perl6/ch-2.p6 | 279 | ||||
| -rw-r--r-- | stats/pwc-current.json | 329 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 56 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 182 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 852 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 44 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 40 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 96 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 66 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 254 |
11 files changed, 1315 insertions, 952 deletions
diff --git a/challenge-021/kevin-colyer/perl6/ch-1.p6 b/challenge-021/kevin-colyer/perl6/ch-1.p6 new file mode 100644 index 0000000000..ec9f67143c --- /dev/null +++ b/challenge-021/kevin-colyer/perl6/ch-1.p6 @@ -0,0 +1,69 @@ +#!/usr/bin/perl6 +use v6; + +# 20.1 Write a script to calculate the value of e, also known as Euler’s number and Napier’s constant. + +# Let's do 5 different ways for fun! + +sub e_sum_infinte_series($i) { + my $e=1; + for ^$i { state $j=1; state $n=1; + $j*=1/$n; + $n++; + $e+=$j; + } + return $e; +} + +sub e_sum_infinite_series_limit($n) { + return (1 + 1/$n) ** $n +}; + +sub e_continued_fraction($n) { + # calculated in reverse order to avoid recursion + my $frac=1; + my @seq=lazy gather for 1..Inf -> $a {take 1; take 2*$a; take 1} ; + for (0..^$n).reverse -> $i { + $frac=1/(@seq[$i]+$frac); + } + return $frac+2; +}; + +sub e_continued_fraction_faster($n) { + # calculated in reverse order to avoid recursion + my $frac=1; + # we skip a step in sequence here as we add it at end... + my @seq=6,-> $a { $a+4 } ... * ; + for (0..^$n-1).reverse -> $i { + $frac=1/(@seq[$i]+$frac); + } + # Final (i.e.) first iteration here as it differnt... + return 1+2/(1+$frac); +}; + +sub V() { + my $n=0; + my $sumX=0; + loop { + $sumX+=1.rand; + $n++; + return $n if $sumX>1; + } +}; + +sub E($n) { + return ([+] (V() for ^$n) ) /$n +}; + +# calculate e with 10 iterations of infinite series - sum (1/n!) +say e_sum_infinte_series(10); + +say e_sum_infinite_series_limit(10_000); + +say e_continued_fraction(10); + +# best results with this one +say e_continued_fraction_faster(10); + +# Stochaistic derivation of e; +say E(100_000); diff --git a/challenge-021/kevin-colyer/perl6/ch-2.p6 b/challenge-021/kevin-colyer/perl6/ch-2.p6 new file mode 100644 index 0000000000..476953caff --- /dev/null +++ b/challenge-021/kevin-colyer/perl6/ch-2.p6 @@ -0,0 +1,279 @@ +#!/usr/bin/perl6 +use v6; + +use Test; + +#use Grammar::Tracer; + +# 21.2 Write a script for URL normalization based on (rfc3986)[https://en.wikipedia.org/wiki/URL_normalization] +# Normalization https://tools.ietf.org/html/rfc3986#page-38 + +#| URL normalization +multi MAIN( $url ) { + my $m=urlParse($url); + say $url; + say stringifyURL($m.made); + say stringifyURL(normalise($m.made)); + say normalise_URL($url); +} + +#| Run tests +multi MAIN ( "test" ) { + + ok urlParse("http:/a/path"),"1 scheme and path test"; + ok urlParse("http:/path"),"2 scheme and path test"; + ok urlParse("http:/path/"),"2.1 scheme and path test"; +# ok urlParse("http:/path:/"),"2.2 scheme and path test"; + ok urlParse("http://example.com/"),"2.3 scheme, authority and trailing slash test"; + + ok urlParse("http://localhost/path"),"3 scheme, authority and path test"; + ok urlParse("http://example.com/path"),"4 scheme, authority and path test"; + ok urlParse("http://example.co.uk/path"),"5 scheme, authority and path test"; + ok urlParse("http://example.co.uk/path/"),"5.1 scheme, authority and path test training slash"; + ok urlParse("http://example.co.uk:1234/path"),"6 scheme, authority and path test"; + ok urlParse("http://1.1.1.1/path"),"7 scheme, authority and path test"; + ok urlParse('http://kevin@example.co.uk/path'),"8 scheme, authority and path test"; + ok urlParse('http://kevin:mypasword@example.co.uk/path'),"9 scheme, authority and path test"; + ok urlParse('http://kevin:mypasword@example.co.uk:1234/path'),"10 scheme, authority and path test"; + ok urlParse('http://kevin:mypasword@example.co.uk:1234/a'),"10.1 scheme, authority and path test"; + ok urlParse('http://kevin:mypasword@example.co.uk:1234/a/'),"10.1 scheme, authority and path test"; + ok urlParse('http://kevin:mypasword@example.co.uk:1234/a/path'),"11 scheme, authority and path test"; + todo "can't get trailing slashes to work yet"; +# ok urlParse('http://kevin:mypasword@example.co.uk:1234/a/path/'),"11.1 scheme, authority and path test (trailing slash)"; +# ok urlParse('http://kevin:mypasword@example.co.uk:1234/a/long/very/path/'),"11.1 scheme, authority and path test (trailing slash)"; + + ok urlParse('http://kevin:mypasword@example.co.uk:1234/a/path?profile=true'),"12 s,a,p, and query test"; + ok urlParse('http://kevin:mypasword@example.co.uk:1234/a/path?profile=true;black=white;up=down'),"13 s,a,p, multi q test"; + ok urlParse('http://kevin:mypasword@example.co.uk:1234/a/path?profile=true&black=white&up=down'),"14 s,a,p, multi q test"; + + todo "can't get trailing delims to work yet"; + #ok urlParse('http://kevin:mypasword@example.co.uk:1234/a/path?profile=true&black=white&up=down&'),"14 s,a,p, multi q test with trailing delim"; + + ok urlParse('http://kevin:mypasword@example.co.uk:1234/a/path#m1'),"15 s,a,p, and fragment test"; + ok urlParse('http://kevin:mypasword@example.co.uk:1234/a/path?profile=true#m1'),"16 s,a,p,q and fragment test"; + ok urlParse('http://kevin:mypasword@example.co.uk:1234/a/path?profile=true;black=white;up=down#m1'),"17 s,a,p, multi q and fragment test"; + + ok urlParse("jdbc:mysql://1.1.1.1/path"),"7.1 double scheme, authority and path test"; + + my $url='jdbc:mysql://user:password@localhost:3306/pwc?profile=true#h1'; + ok urlParse($url), "$url parses ok"; + + my $m=urlParse($url); + is ~$m.made<scheme> , 'jdbc:mysql' ,'testing <scheme> is made correctly'; + is ~$m.made<userinfo> , 'user:password','testing <userinfo> is made correctly'; + is ~$m.made<host> , 'localhost' ,'testing <host> is made correctly'; + is ~$m.made<port> , '3306' ,'testing <port> is made correctly'; + is ~$m.made<path> , '/pwc' ,'testing <path> is made correctly'; + is ~$m.made<query> , 'profile=true' ,'testing <query> is made correctly'; + is ~$m.made<fragment> , 'h1' ,'testing <fragment> is made correctly'; + + $m=urlParse("hTTp://eXample.com:80/path/"); + my $s=stringifyURL(normalise($m.made)); + is $s, "http://example.com/path/", "normalise case and port ok"; + + $m=urlParse("hTTp://127.0.0.1:80/path/"); + $s=stringifyURL(normalise($m.made)); + is $s, "http://localhost/path/", "normalise dotted quad localhost"; + + $s=stringifyURL(normalise(urlParse("hTTp://127.0.0.1:80/path/").made)); + is $s, "http://localhost/path/", "normalise dotted quad localhost"; + + is normalise_dotted_quad({host => "127.0.0.1"})<host>,"localhost","normalise d q localhost"; + is normalise_dotted_quad({host => "not dotted quad"})<host>,"not dotted quad","normalise d q not dotted quad"; + is normalise_dotted_quad({host => "8.8.8.8.8"})<host>,"8.8.8.8.8","normalise d q not dotted quad 2"; + is normalise_dotted_quad({host => "8.8.8.8"})<host>,"dns.google","normalise d q not nslookup ok"; + + $s=stringifyURL(normalise(urlParse("hTTp://8.8.8.8:80/path/").made)); + is $s, "http://dns.google/path/", "normalise dotted quad localhost"; + is normalise_percent_encoding("abc%3aabc"),"abc%3Aabc","percent encoding - uppercasing"; + + is normalise_percent_encoding("%41"),"A","unreserved words reduced"; + is normalise_percent_encoding("%63"),"c","unreserved words reduced"; + is normalise_percent_encoding("%7b"),'%7B',"reserved words ignored"; + + + is normalise_path_segment(normalise_percent_encoding("//a/./b/../b/%63/%7bfoo%7d")),"//a/b/c/%7Bfoo%7D", "normalise path segment"; + is normalise_path_segment(normalise_percent_encoding("/../c/d/../../a/b/../b/c")),"/a/b/c", "normalise path segment"; + + # WIKIPEDIA TESTS - NORMALIZATIONS THAT PRESERVE SEMANTICS + is normalise_URL("HTTP://www.Example.com/"),"http://www.example.com/","Converting the scheme and host to lower case."; + + is normalise_URL("http://www.example.com/a%c2%b1b"),"http://www.example.com/a%C2%B1b", "Capitalizing letters in escape sequences."; + # All letters within a percent-encoding triplet (e.g., "%3A") are case-insensitive, and should be capitalized. + + is normalise_URL("http://www.example.com/%7Eusername/"),"http://www.example.com/~username/", "Decoding percent-encoded octets of unreserved characters."; + # For consistency, percent-encoded octets in the ranges of ALPHA (%41–%5A and %61–%7A), DIGIT (%30–%39), hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E) should not be created by URI producers and, when found in a URI, should be decoded to their corresponding unreserved characters by URI normalizers.[2] Example: + + is normalise_URL("http://www.example.com:80/bar.html"),"http://www.example.com/bar.html","Removing the default port."; + # The default port (port 80 for the “http” scheme) may be removed from (or added to) a URL. Example: + + # WIKIPEDIA TESTS - NORMALIZATIONS THAT **USUALLY** PRESERVE SEMANTICS + is normalise_URL("http://www.example.com/../a/b/../c/./d.html"),"http://www.example.com/a/c/d.html", "Removing dot-segments. The segments"; + # “..” and “.” can be removed from a URL according to the algorithm described in RFC 3986 (or a similar algorithm). Example: + + done-testing; +} + +my regex unreserved { <[ A..Z a..z 0..9 _ \- \. ~]> }; + +grammar URL { + token TOP { + <scheme> + <authority>? + <path>? + <query>? + <fragment>? + } + # A non-empty scheme component followed by a colon (:), consisting of a sequence of characters beginning with a letter and followed by any combination of letters, digits, plus (+), period (.), or hyphen (-) + token allowedchars { + <alnum> | '+' | '.' | '-' # does alpha include _? does Alnum? + } + token scheme_text { + <alpha> <allowedchars>* + } + token scheme { + #| <scheme_text> + [ <scheme_text> ':' ] ** 1..2 + #| <scheme_text> ':' <scheme_text> + } + #A path component, consisting of a sequence of path segments separated by a slash (/). A path is always defined for a URI, though the defined path may be empty (zero length). A segment may also be empty, resulting in two consecutive slashes (//) in the path component. A path component may resemble or map exactly to a file system path, but does not always imply a relation to one. If an authority component is present, then the path component must either be empty or begin with a slash (/). If an authority component is absent, then the path cannot begin with an empty segment, that is with two slashes (//), as the following characters would be interpreted as an authority component.[18] The final segment of the path may be referred to as a 'slug'. + token authority { + '//' + <userinfo>? + <host> + [':' <port>]? + } + token slug { + <alnum> | '_' | '-' | '.' | '~' | '%' + } + token slash { + '/' + } + token userinfo { + | <alnum>+ '@' + | <alnum>+ ':' <alnum>+ '@' + } + token host { + <alnum>+ ['.' <alnum>+]* + } + token port { + <digit>+ + } + token path { + | <slash> [ <slug>+ <slash> ]* <slug>+ <slash>? + | <slash> <slug>+ <slash>? + | <slash> + } + # An optional query component preceded by a question mark (?), containing a query string of non-hierarchical data. Its syntax is not well defined, but by convention is most often a sequence of attribute–value pairs separated by a delimiter. (& or ;) + token query { + '?' [<attrib-value> <delim>]* <attrib-value> <delim>? + } + token attrib-value { + <slug>+ '=' <slug>+ + } + token delim { + ';' | '&' + } + token fragment { + '#' <slug>+ + } +} + +class URL-actions { + method TOP ($/) { + make { + scheme => $<scheme>.subst(/\: $$/,""), + userinfo => $<authority><userinfo>.subst(/\@/,""), + host => $<authority><host>.Str, + port => $<authority><port>.Str, + path => $<path>.Str, + query => $<query>.subst(/^^ '?' /,""), + fragment => $<fragment>.subst(/^^ '#' /,""), + } + } +} + +sub urlParse($url) { + my $m=quietly URL.parse($url, actions => URL-actions.new); + die "parse failed on [$url]" unless $m; + return $m; +} + +sub normalise ($m) { + my %url = $m.kv;# normalise case + %url<scheme> = $m<scheme>.lc; + %url<host> = $m<host>.lc; + + %url = normalise_default_port(%url); + + %url = normalise_dotted_quad(%url); + + %url<path> = normalise_percent_encoding(%url<path>); + %url<query> = normalise_percent_encoding(%url<query>); + %url<fragment>= normalise_percent_encoding(%url<fragment>); + + %url<path> = normalise_path_segment(%url<path>); + return %url; +} + +sub normalise_default_port(%url) { + my %sp = "http" => 80, + "ipp" => 631, + "ssh" => 22, + "ftp" => 23, + "https" => 443, + ; + %url<port> = "" if %sp{%url<scheme>}==%url<port>; + return %url; +}; + +sub normalise_dotted_quad(%url) { + %url<host> = "localhost" if %url<host> eq "127.0.0.1"; + return %url unless %url<host> ~~ /^ \d+ \. \d+ \. \d+ \. \d+ $/; + my $shell = qq:x/nslookup %url<host>/.lines[0]; #: + $shell ~~ m/^ .* 'name' \s '=' \s (.*) \. $/; + %url<host> = $0; + return %url; +}; + +sub normalise_percent_encoding($s is copy) { + # reserved = ! ALPHA / DIGIT / "-" / "." / "_" / "~" + $s ~~ s:g/ (\% \w \w) /&percent_encoding_unreserve($0)/; # + return $s; +} + +sub normalise_path_segment($p is copy) { + # regex remove /./ => / + $p ~~ s:g! \/ \. \/ !/!; + + # regex remove /c/../b/ => /b/ - repeat this to remove /../../ + while $p ~~ s:g! \/ \w+ \/ \. \. \/ !/! {} ; + + # remove any leading double dots + $p ~~ s:g! ^ \/ \. \. \/ !/!; + + return $p +} + +sub percent_encoding_unreserve($s) { + my $per = $s.uc; + # decode + my $c = chr(:16($per.substr(1,2))); + $c = $per if $c !~~ m/<unreserved>/ ; + return $c; +} + +sub stringifyURL($m) { + my $s= $m<scheme> ~"://"; + $s~= $m<userinfo> ~ "@" if $m<userinfo>; + $s~= $m<host>; + $s~= ":" ~ $m<port> if $m<port>; + $s~= $m<path>; + $s~= "?" ~ $m<query> if $m<query>; + $s~= "#" ~ $m<fragment> if $m<fragment>; + return $s; +} + +sub normalise_URL($url) { + return stringifyURL(normalise(urlParse($url).made)); +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index ea2e1af9a6..fdb2b01cc3 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,157 +1,40 @@ { + "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/>" + }, "title" : { "text" : "Perl Weekly Challenge - 021" }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } - } - }, - "subtitle" : { - "text" : "[Champions: 20] Last updated at 2019-08-18 21:29:54 GMT" - }, - "xAxis" : { - "type" : "category" - }, "chart" : { "type" : "column" }, - "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 - }, "yAxis" : { "title" : { "text" : "Total Solutions" } }, - "series" : [ - { - "name" : "Perl Weekly Challenge - 021", - "data" : [ - { - "name" : "Andrezgz", - "y" : 2, - "drilldown" : "Andrezgz" - }, - { - "name" : "Arne Sommer", - "drilldown" : "Arne Sommer", - "y" : 3 - }, - { - "drilldown" : "Athanasius", - "y" : 2, - "name" : "Athanasius" - }, - { - "name" : "Daniel Mantovani", - "y" : 2, - "drilldown" : "Daniel Mantovani" - }, - { - "name" : "Dave Cross", - "drilldown" : "Dave Cross", - "y" : 2 - }, - { - "name" : "Dave Jacoby", - "y" : 2, - "drilldown" : "Dave Jacoby" - }, - { - "name" : "Duane Powell", - "drilldown" : "Duane Powell", - "y" : 2 - }, - { - "name" : "E. Choroba", - "y" : 2, - "drilldown" : "E. Choroba" - }, - { - "name" : "Guillermo Ramos", - "drilldown" : "Guillermo Ramos", - "y" : 2 - }, - { - "name" : "Joelle Maslak", - "y" : 4, - "drilldown" : "Joelle Maslak" - }, - { - "y" : 1, - "drilldown" : "Kian-Meng Ang", - "name" : "Kian-Meng Ang" - }, - { - "name" : "Laurent Rosenfeld", - "drilldown" : "Laurent Rosenfeld", - "y" : 5 - }, - { - "y" : 2, - "drilldown" : "Lubos Kolouch", - "name" : "Lubos Kolouch" - }, - { - "name" : "Noud", - "drilldown" : "Noud", - "y" : 2 - }, - { - "name" : "Ozzy", - "drilldown" : "Ozzy", - "y" : 1 - }, - { - "drilldown" : "Randy Lauen", - "y" : 4, - "name" : "Randy Lauen" - }, - { - "name" : "Roger Bell West", - "y" : 4, - "drilldown" : "Roger Bell West" - }, - { - "drilldown" : "Ruben Westerberg", - "y" : 4, - "name" : "Ruben Westerberg" - }, - { - "y" : 1, - "drilldown" : "Simon Proctor", - "name" : "Simon Proctor" - }, - { - "drilldown" : "Steven Wilson", - "y" : 1, - "name" : "Steven Wilson" - } - ], - "colorByPoint" : 1 + "plotOptions" : { + "series" : { + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 } - ], + }, "drilldown" : { "series" : [ { + "name" : "Andrezgz", "data" : [ [ "Perl 5", 2 ] ], - "id" : "Andrezgz", - "name" : "Andrezgz" + "id" : "Andrezgz" }, { "data" : [ @@ -183,27 +66,26 @@ }, { "name" : "Daniel Mantovani", + "id" : "Daniel Mantovani", "data" : [ [ "Perl 5", 2 ] - ], - "id" : "Daniel Mantovani" + ] }, { - "name" : "Dave Cross", "id" : "Dave Cross", "data" : [ [ "Perl 5", 2 ] - ] + ], + "name" : "Dave Cross" }, { "name" : "Dave Jacoby", - "id" : "Dave Jacoby", "data" : [ [ "Perl 5", @@ -213,39 +95,41 @@ "Blog", 1 ] - ] + ], + "id" : "Dave Jacoby" }, { - "name" : "Duane Powell", - "id" : "Duane Powell", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Duane Powell", + "name" : "Duane Powell" }, { + "id" : "E. Choroba", "data" : [ [ "Perl 5", 2 ] ], - "id" : "E. Choroba", "name" : "E. Choroba" }, { "name" : "Guillermo Ramos", - "id" : "Guillermo Ramos", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Guillermo Ramos" }, { + "name" : "Joelle Maslak", "id" : "Joelle Maslak", "data" : [ [ @@ -256,20 +140,30 @@ "Perl 6", 2 ] + ] + }, + { + "id" : "Kevin Colyer", + "data" : [ + [ + "Perl 6", + 2 + ] ], - "name" : "Joelle Maslak" + "name" : "Kevin Colyer" }, { - "id" : "Kian-Meng Ang", "data" : [ [ "Perl 5", 1 ] ], + "id" : "Kian-Meng Ang", "name" : "Kian-Meng Ang" }, { + "id" : "Laurent Rosenfeld", "data" : [ [ "Perl 5", @@ -284,7 +178,6 @@ 1 ] ], - "id" : "Laurent Rosenfeld", "name" : "Laurent Rosenfeld" }, { @@ -299,23 +192,23 @@ }, { "name" : "Noud", - "id" : "Noud", "data" : [ [ "Perl 6", 2 ] - ] + ], + "id" : "Noud" }, { - "name" : "Ozzy", "data" : [ [ "Perl 6", 1 ] ], - "id" : "Ozzy" + "id" : "Ozzy", + "name" : "Ozzy" }, { "id" : "Randy Lauen", @@ -332,7 +225,7 @@ "name" : "Randy Lauen" }, { - "name" : "Roger Bell West", + "id" : "Roger Bell West", "data" : [ [ "Perl 5", @@ -347,7 +240,7 @@ 1 ] ], - "id" : "Roger Bell West" + "name" : "Roger Bell West" }, { "data" : [ @@ -364,25 +257,147 @@ "name" : "Ruben Westerberg" }, { - "id" : "Simon Proctor", "data" : [ [ "Perl 6", 1 ] ], + "id" : "Simon Proctor", "name" : "Simon Proctor" }, { - "name" : "Steven Wilson", "id" : "Steven Wilson", "data" : [ [ "Perl 5", 1 ] - ] + ], + "name" : "Steven Wilson" } ] - } + }, + "legend" : { + "enabled" : 0 + }, + "xAxis" : { + "type" : "category" + }, + "subtitle" : { + "text" : "[Champions: 21] Last updated at 2019-08-18 22:00:32 GMT" + }, + "series" : [ + { + "data" : [ + { + "drilldown" : "Andrezgz", + "y" : 2, + "name" : "Andrezgz" + }, + { + "y" : 3, + "drilldown" : "Arne Sommer", + "name" : "Arne Sommer" + }, + { + "drilldown" : "Athanasius", + "y" : 2, + "name" : "Athanasius" + }, + { + "y" : 2, + "drilldown" : "Daniel Mantovani", + "name" : "Daniel Mantovani" + }, + { + "name" : "Dave Cross", + "drilldown" : "Dave Cross", + "y" : 2 + }, + { + "drilldown" : "Dave Jacoby", + "y" : 2, + "name" : "Dave Jacoby" + }, + { + "y" : 2, + "drilldown" : "Duane Powell", + "name" : "Duane Powell" + }, + { + "name" : "E. Choroba", + "y" : 2, + "drilldown" : "E. Choroba" + }, + { + "drilldown" : "Guillermo Ramos", + "y" : 2, + "name" : "Guillermo Ramos" + }, + { + "y" : 4, + "drilldown" : "Joelle Maslak", + "name" : "Joelle Maslak" + }, + { + "name" : "Kevin Colyer", + "y" : 2, + "drilldown" : "Kevin Colyer" + }, + { + "name" : "Kian-Meng Ang", + "drilldown" : "Kian-Meng Ang", + "y" : 1 + }, + { + "name" : "Laurent Rosenfeld", + "drilldown" : "Laurent Rosenfeld", + "y" : 5 + }, + { + "name" : "Lubos Kolouch", + "drilldown" : "Lubos Kolouch", + "y" : 2 + }, + { + "y" : 2, + "drilldown" : "Noud", + "name" : "Noud" + }, + { + "name" : "Ozzy", + "drilldown" : "Ozzy", + "y" : 1 + }, + { + "drilldown" : "Randy Lauen", + "y" : 4, + "name" : "Randy Lauen" + }, + { + "y" : 4, + "drilldown" : "Roger Bell West", + "name" : "Roger Bell West" + }, + { + "drilldown" : "Ruben Westerberg", + "y" : 4, + "name" : "Ruben Westerberg" + }, + { + "drilldown" : "Simon Proctor", + "y" : 1, + "name" : "Simon Proctor" + }, + { + "y" : 1, + "drilldown" : "Steven Wilson", + "name" : "Steven Wilson" + } + ], + "colorByPoint" : 1, + "name" : "Perl Weekly Challenge - 021" + } + ] } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index d2545280df..cb4d0be860 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,22 +1,4 @@ { - "xAxis" : { - "labels" : { - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - } - }, - "type" : "category" - }, - "chart" : { - "type" : "column" - }, - "legend" : { - "enabled" : "false" - }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" - }, "series" : [ { "data" : [ @@ -30,34 +12,52 @@ ], [ "Perl 6", - 520 + 522 ] ], "dataLabels" : { - "color" : "#FFFFFF", - "rotation" : -90, + "align" : "right", + "y" : 10, "format" : "{point.y:.0f}", + "enabled" : "true", + "color" : "#FFFFFF", "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" }, - "align" : "right", - "enabled" : "true", - "y" : 10 + "rotation" : -90 }, "name" : "Contributions" } ], + "chart" : { + "type" : "column" + }, + "legend" : { + "enabled" : "false" + }, + "subtitle" : { + "text" : "Last updated at 2019-08-18 22:00:48 GMT" + }, "yAxis" : { "min" : 0, "title" : { "text" : null } }, - "subtitle" : { - "text" : "Last updated at 2019-08-18 21:30:33 GMT" + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" }, "title" : { "text" : "Perl Weekly Challenge Contributions - 2019" + }, + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + } + } } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 4a6eeef9ad..8d64c2ce97 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,14 +1,16 @@ { - "title" : { - "text" : "Perl Weekly Challenge Language" - }, "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-08-18 21:30:33 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-08-18 22:00:48 GMT" + }, + "legend" : { + "enabled" : "false" + }, + "chart" : { + "type" : "column" }, "drilldown" : { "series" : [ { - "id" : "001", "name" : "001", "data" : [ [ @@ -23,9 +25,12 @@ "Blog", 10 ] - ] + ], + "id" : "001" }, { + "id" : "002", + "name" : "002", "data" : [ [ "Perl 5", @@ -39,13 +44,9 @@ "Blog", 9 ] - ], - "name" : "002", - "id" : "002" + ] }, { - "id" : "003", - "name" : "003", "data" : [ [ "Perl 5", @@ -59,7 +60,9 @@ "Blog", 8 ] - ] + ], + "name" : "003", + "id" : "003" }, { "data" : [ @@ -81,7 +84,6 @@ }, { "name" : "005", - "id" : "005", "data" : [ [ "Perl 5", @@ -95,10 +97,10 @@ "Blog", 11 ] - ] + ], + "id" : "005" }, { - "name" : "006", "id" : "006", "data" : [ [ @@ -113,11 +115,10 @@ "Blog", 6 ] - ] + ], + "name" : "006" }, { - "id" : "007", - "name" : "007", |
