aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-029/colin-crain/perl5/ch-1.pl91
-rw-r--r--challenge-029/colin-crain/perl5/ch-2.pl154
-rw-r--r--stats/pwc-current.json211
-rw-r--r--stats/pwc-language-breakdown-summary.json50
-rw-r--r--stats/pwc-language-breakdown.json452
-rw-r--r--stats/pwc-leaders.json538
-rw-r--r--stats/pwc-summary-1-30.json120
-rw-r--r--stats/pwc-summary-121-150.json26
-rw-r--r--stats/pwc-summary-31-60.json104
-rw-r--r--stats/pwc-summary-61-90.json88
-rw-r--r--stats/pwc-summary-91-120.json44
-rw-r--r--stats/pwc-summary.json54
12 files changed, 1096 insertions, 836 deletions
diff --git a/challenge-029/colin-crain/perl5/ch-1.pl b/challenge-029/colin-crain/perl5/ch-1.pl
new file mode 100644
index 0000000000..479978c97d
--- /dev/null
+++ b/challenge-029/colin-crain/perl5/ch-1.pl
@@ -0,0 +1,91 @@
+#! /opt/local/bin/perl
+#
+# brace_expansion.pl
+#
+# 29 Task #1:
+# Write a script to demonstrate brace expansion. For example, script would take
+# command line argument Perl {Daily,Weekly,Monthly,Yearly} Challenge and should
+# expand it and print like below:
+#
+# Perl Daily Challenge
+#
+# Perl Weekly Challenge
+#
+# Perl Monthly Challenge
+#
+# Perl Yearly Challenge
+#
+# method: this seems like a job for a regex. Although not specified, let's make
+# it recursive, to accommodate multiple bracketed blocks. Nesting braces,
+# on the other hand, make no sense, won't parse right and need to be
+# escaped to avoid unexpected results. Both inside and outside the block
+# whitespace is preserved. The expanded text is inserted as is without
+# additional spacing. Originally I had allowed whitespace inside the block
+# for readability, which was ignored on rendering, but removed this to
+# maximize flexability in inserting text fragments. Escaped brackets are
+# ignored by the parser and passed through unchanged.
+#
+# results:
+# $ ./brace_expansion.pl "Perl{ista's,esque,ite,escent, One Knit Two} {Daily,Weekly,Monthly,Yearly} Challenge"
+# Perlista's Daily Challenge
+# Perlista's Weekly Challenge
+# Perlista's Monthly Challenge
+# Perlista's Yearly Challenge
+# Perlesque Daily Challenge
+# Perlesque Weekly Challenge
+# Perlesque Monthly Challenge
+# Perlesque Yearly Challenge
+# Perlite Daily Challenge
+# Perlite Weekly Challenge
+# Perlite Monthly Challenge
+# Perlite Yearly Challenge
+# Perlescent Daily Challenge
+# Perlescent Weekly Challenge
+# Perlescent Monthly Challenge
+# Perlescent Yearly Challenge
+# Perl One Knit Two Daily Challenge
+# Perl One Knit Two Weekly Challenge
+# Perl One Knit Two Monthly Challenge
+# Perl One Knit Two Yearly Challenge
+#
+# 2019 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+use warnings;
+use strict;
+use feature ":5.26";
+
+## ## ## ## ## MAIN
+
+my $input = shift @ARGV;
+
+my @output = expand_braces($input);
+
+say (join "\n", @output);
+
+## ## ## ## ## SUBS
+
+sub expand_braces {
+ my $input = shift;
+ my @expanded;
+
+ if ( $input =~ m/ ^(.*?) ## group 1: from the beginning, whatever was before the brackets, minimally matched
+ (?<!\\)\{ ## a left bracket not preceeded by a backslash
+ (.*?) ## group 2: the bracketed text list, minimally matched
+ (?<!\\)\} ## a right bracket not preceeded by a backslash
+ (.*?)$ /x ) { ## group 3: whatever is left until the end, minimally matched
+ my $pre = $1;
+ my $post = $3;
+ my @wordlist = split /,/, $2;
+
+ ## insert the word and recursively build an expanded array
+ for my $word ( @wordlist ){
+ push @expanded, expand_braces("$pre$word$post");
+ }
+ return @expanded;
+ }
+ else {
+ ## if no match pass the input right back out
+ return $input;
+ }
+}
diff --git a/challenge-029/colin-crain/perl5/ch-2.pl b/challenge-029/colin-crain/perl5/ch-2.pl
new file mode 100644
index 0000000000..ee2ba2535a
--- /dev/null
+++ b/challenge-029/colin-crain/perl5/ch-2.pl
@@ -0,0 +1,154 @@
+#! /opt/local/bin/perl
+#
+# c_function.pl
+#
+# 29 Task #2:
+# Write a script to demonstrate calling a C function. It could be any
+# user defined or standard C function.
+#
+# method:
+# The easiest way to go about this is to use the module Inline::C. One still
+# may need some familiarity with perlapi and perhaps perlguts to interact smoothly
+# with Perl, but much less so than grappling directly with XS.
+#
+# make_primes( int num_primes, int quantity_asked )
+# To demonstrate the use of a C function, we will first need
+# something that can really benefit from the added speed, in
+# this case a rewrite of the prime-finding by trial division
+# function last seen in PWC #23. This was rewritten in C with a
+# few more optimizations added, and further modified to return
+# a requested number of values at the end of a generated list
+# of a specified number of primes. So we pass in values for the
+# number of primes to generate and the number from the end of
+# that list to display. To produce this variable-length list of
+# values we will manually place the requested number of items
+# on the Stack to be returned by the function. (Alternately we
+# could insert them in a Perl array and return a reference)
+# Because we do this manually, the function itself returns type
+# void. Inline::C provides macros to perform this magic of
+# directly manipulating the Stack, which we employ in the
+# example. If we request more primes than we generate, rather
+# than return a short list we choose to return no elements at
+# all.
+#
+# In this example we use the perlapi functions newSViv( int )
+# -- which creates a new SV integer value, and sv_2mortal( SV
+# ) which flags a variable for garbage collection when is no
+# longer needed to be around.
+#
+# print_primes( *SV some_prime, ... ):
+# Once we have a list of requested primes, we might wish to examine
+# them in tabular form. This function takes a variable sized list of
+# integers and prints such a table to STDOUT.
+#
+# usage: ./c_function.pl 2000000 10
+# This produces a table of the last 10 primes of a list of 2,000,000
+#
+#
+#
+# 2019 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+use warnings;
+use strict;
+use feature ":5.26";
+
+## ## ## ## ## MAIN
+
+## fetch the number of primes to generate and the number requested to be displayed off the end of that list
+my ($number_of_primes, $number_requested) = @ARGV;
+
+print_primes( make_primes($number_of_primes, $number_requested) );
+
+use Inline C => <<'END_OF_C_CODE';
+void make_primes( int num_primes, int quantity_asked ) {
+/* returns array of Perl SV*s on the Stack,
+ the quantity_asked number of primes from the
+ end of a generated list of primes num_primes long.
+ The unreturned primes are not kept. */
+
+/* the bool type seems to already be defined somewhere in the headers
+ loaded by Inline::C so this does not appear to be strictly required. */
+ #include <stdbool.h>
+
+/* initialize variables associated with accessing the Stack */
+ Inline_Stack_Vars;
+
+/* reset the stack pointer before we push output data to it */
+ Inline_Stack_Reset;
+
+/* if the number of primes requested is greater than the number generated, fail and return (-1) */
+ if ( quantity_asked > num_primes ) {
+ Inline_Stack_Push( sv_2mortal(newSViv( -1 )) );
+
+/* make sure we call this to wrap up the stack */
+ Inline_Stack_Done;
+ return;
+ }
+
+/* we will only push the first prime, 2 on if it will be required in the requested number of values to be returned */
+ if ( quantity_asked == num_primes ) {
+
+/* if yes, to push the integer 2 on the Stack and start the prime list. We first cast it into a
+ Perl SV, then mark it as "mortal", to be collected as once copied to the Stack it is no longer
+ necessary and if allowed to remain will leak memory */
+ Inline_Stack_Push( sv_2mortal(newSViv( 2 )) );
+ }
+
+
+ int candidate;
+ int count = 0;
+ for( candidate = 3; count <= (num_primes - 2); candidate += 2 ) {
+ int sqrt_candidate = sqrt( candidate );
+ bool is_prime = true;
+ int test;
+ for( test = 3; ( test <= sqrt_candidate ) && ( is_prime == 1 ); test += 2 ) {
+ if( candidate % test == 0 ) {
+ is_prime = false;
+ }
+ }
+ if( is_prime == true ) {
+ count++;
+
+ if (count > num_primes - (quantity_asked + 1) ) {
+
+ /* as above, we need to first cast data as a Perl SV* type,
+ then label it mortal for collection after it is copied over to the Stack*/
+ Inline_Stack_Push( sv_2mortal(newSViv( candidate )) );
+ }
+ }
+ }
+
+ /* make sure we call this to wrap up the Stack */
+ Inline_Stack_Done;
+}
+
+void print_primes ( SV* some_prime, ... ){
+/* given a varible length list of primes, prints out a nice little enumerated table of the primes requested */
+
+/* initialize variables associated with accessing the Stack */
+ Inline_Stack_Vars;
+
+ int idx;
+ int count = 1;
+
+ printf("request # | prime\n");
+ printf("-------------+-----------\n");
+
+/* Inline_Stack_Items contains the number of values on the Stack */
+/* Inline_Stack_Item(idx) contains the value at that index */
+/* SvIV coerces an SV* into a integer value */
+ for (idx = 0; idx < Inline_Stack_Items; idx++, count++) {
+ printf("%5d | %7d\n", count, SvIV( Inline_Stack_Item(idx) ));
+ }
+
+ /* null out any data in the Stack */
+ Inline_Stack_Void;
+
+/* make sure we call this to wrap up the Stack */
+ Inline_Stack_Done;
+}
+
+END_OF_C_CODE
diff --git a/stats/pwc-current.json b/stats/pwc-current.json
index 57297d1613..45fb744b93 100644
--- a/stats/pwc-current.json
+++ b/stats/pwc-current.json
@@ -1,39 +1,20 @@
{
"subtitle" : {
- "text" : "[Champions: 22] Last updated at 2019-10-13 15:26:08 GMT"
- },
- "chart" : {
- "type" : "column"
- },
- "tooltip" : {
- "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>",
- "followPointer" : 1,
- "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>"
- },
- "plotOptions" : {
- "series" : {
- "borderWidth" : 0,
- "dataLabels" : {
- "enabled" : 1,
- "format" : "{point.y}"
- }
- }
+ "text" : "[Champions: 23] Last updated at 2019-10-13 20:21:00 GMT"
},
"drilldown" : {
"series" : [
{
"name" : "Andrezgz",
+ "id" : "Andrezgz",
"data" : [
[
"Perl 5",
2
]
- ],
- "id" : "Andrezgz"
+ ]
},
{
- "name" : "Arne Sommer",
- "id" : "Arne Sommer",
"data" : [
[
"Perl 6",
@@ -43,17 +24,29 @@
"Blog",
1
]
- ]
+ ],
+ "id" : "Arne Sommer",
+ "name" : "Arne Sommer"
},
{
+ "name" : "Burkhard Nickels",
"id" : "Burkhard Nickels",
"data" : [
[
"Perl 5",
2
]
+ ]
+ },
+ {
+ "data" : [
+ [
+ "Perl 5",
+ 2
+ ]
],
- "name" : "Burkhard Nickels"
+ "name" : "Colin Crain",
+ "id" : "Colin Crain"
},
{
"data" : [
@@ -66,16 +59,17 @@
"name" : "Daniel Mita"
},
{
+ "name" : "Dave Cross",
"id" : "Dave Cross",
"data" : [
[
"Perl 5",
2
]
- ],
- "name" : "Dave Cross"
+ ]
},
{
+ "name" : "Dave Jacoby",
"id" : "Dave Jacoby",
"data" : [
[
@@ -86,28 +80,27 @@
"Blog",
1
]
- ],
- "name" : "Dave Jacoby"
+ ]
},
{
- "name" : "Duane Powell",
- "id" : "Duane Powell",
"data" : [
[
"Perl 5",
2
]
- ]
+ ],
+ "name" : "Duane Powell",
+ "id" : "Duane Powell"
},
{
"id" : "E. Choroba",
+ "name" : "E. Choroba",
"data" : [
[
"Perl 5",
2
]
- ],
- "name" : "E. Choroba"
+ ]
},
{
"data" : [
@@ -124,13 +117,13 @@
"name" : "Joelle Maslak"
},
{
- "id" : "Kevin Colyer",
"data" : [
[
"Perl 6",
2
]
],
+ "id" : "Kevin Colyer",
"name" : "Kevin Colyer"
},
{
@@ -140,21 +133,20 @@
2
]
],
- "id" : "Kivanc Yazan",
- "name" : "Kivanc Yazan"
+ "name" : "Kivanc Yazan",
+ "id" : "Kivanc Yazan"
},
{
+ "id" : "Lars Thegler",
+ "name" : "Lars Thegler",
"data" : [
[
"Perl 5",
2
]
- ],
- "id" : "Lars Thegler",
- "name" : "Lars Thegler"
+ ]
},
{
- "name" : "Laurent Rosenfeld",
"data" : [
[
"Perl 5",
@@ -169,31 +161,32 @@
1
]
],
- "id" : "Laurent Rosenfeld"
+ "id" : "Laurent Rosenfeld",
+ "name" : "Laurent Rosenfeld"
},
{
- "id" : "Lubos Kolouch",
"data" : [
[
"Perl 5",
2
]
],
- "name" : "Lubos Kolouch"
+ "name" : "Lubos Kolouch",
+ "id" : "Lubos Kolouch"
},
{
- "id" : "Markus Holzer",
"data" : [
[
"Perl 6",
2
]
],
+ "id" : "Markus Holzer",
"name" : "Markus Holzer"
},
{
- "name" : "Noud",
"id" : "Noud",
+ "name" : "Noud",
"data" : [
[
"Perl 6",
@@ -212,13 +205,13 @@
]
},
{
- "id" : "Rage311",
"data" : [
[
"Perl 5",
2
]
],
+ "id" : "Rage311",
"name" : "Rage311"
},
{
@@ -240,8 +233,8 @@
]
},
{
- "name" : "Steven Wilson",
"id" : "Steven Wilson",
+ "name" : "Steven Wilson",
"data" : [
[
"Perl 5",
@@ -260,12 +253,10 @@
2
]
],
- "id" : "Ulrich Rieke",
- "name" : "Ulrich Rieke"
+ "name" : "Ulrich Rieke",
+ "id" : "Ulrich Rieke"
},
{
- "name" : "Yet Ebreo",
- "id" : "Yet Ebreo",
"data" : [
[
"Perl 5",
@@ -279,56 +270,61 @@
"Blog",
2
]
- ]
+ ],
+ "id" : "Yet Ebreo",
+ "name" : "Yet Ebreo"
}
]
},
- "title" : {
- "text" : "Perl Weekly Challenge - 029"
+ "xAxis" : {
+ "type" : "category"
},
"series" : [
{
- "colorByPoint" : 1,
- "name" : "Perl Weekly Challenge - 029",
"data" : [
{
+ "name" : "Andrezgz",
"y" : 2,
- "drilldown" : "Andrezgz",
- "name" : "Andrezgz"
+ "drilldown" : "Andrezgz"
},
{
"y" : 3,
- "drilldown" : "Arne Sommer",
- "name" : "Arne Sommer"
+ "name" : "Arne Sommer",
+ "drilldown" : "Arne Sommer"
},
{
- "name" : "Burkhard Nickels",
+ "drilldown" : "Burkhard Nickels",
"y" : 2,
- "drilldown" : "Burkhard Nickels"
+ "name" : "Burkhard Nickels"
},
{
- "name" : "Daniel Mita",
"y" : 2,
- "drilldown" : "Daniel Mita"
+ "name" : "Colin Crain",
+ "drilldown" : "Colin Crain"
},
{
+ "drilldown" : "Daniel Mita",
"y" : 2,
+ "name" : "Daniel Mita"
+ },
+ {
"drilldown" : "Dave Cross",
- "name" : "Dave Cross"
+ "name" : "Dave Cross",
+ "y" : 2
},
{
"drilldown" : "Dave Jacoby",
- "y" : 3,
- "name" : "Dave Jacoby"
+ "name" : "Dave Jacoby",
+ "y" : 3
},
{
+ "drilldown" : "Duane Powell",
"name" : "Duane Powell",
- "y" : 2,
- "drilldown" : "Duane Powell"
+ "y" : 2
},
{
- "y" : 2,
"drilldown" : "E. Choroba",
+ "y" : 2,
"name" : "E. Choroba"
},
{
@@ -338,81 +334,100 @@
},
{
"name" : "Kevin Colyer",
- "drilldown" : "Kevin Colyer",
- "y" : 2
+ "y" : 2,
+ "drilldown" : "Kevin Colyer"
},
{
+ "y" : 2,
"name" : "Kivanc Yazan",
- "drilldown" : "Kivanc Yazan",
- "y" : 2
+ "drilldown" : "Kivanc Yazan"
},
{
+ "drilldown" : "Lars Thegler",
"name" : "Lars Thegler",
- "y" : 2,
- "drilldown" : "Lars Thegler"
+ "y" : 2
},
{
- "y" : 4,
"drilldown" : "Laurent Rosenfeld",
+ "y" : 4,
"name" : "Laurent Rosenfeld"
},
{
+ "name" : "Lubos Kolouch",
"y" : 2,
- "drilldown" : "Lubos Kolouch",
- "name" : "Lubos Kolouch"
+ "drilldown" : "Lubos Kolouch"
},
{
- "name" : "Markus Holzer",
+ "drilldown" : "Markus Holzer",
"y" : 2,
- "drilldown" : "Markus Holzer"
+ "name" : "Markus Holzer"
},
{
"name" : "Noud",
- "drilldown" : "Noud",
- "y" : 2
+ "y" : 2,
+ "drilldown" : "Noud"
},
{
- "drilldown" : "Prajith P",
"y" : 1,
- "name" : "Prajith P"
+ "name" : "Prajith P",
+ "drilldown" : "Prajith P"
},
{
- "name" : "Rage311",
"drilldown" : "Rage311",
- "y" : 2
+ "y" : 2,
+ "name" : "Rage311"
},
{
+ "y" : 4,
"name" : "Roger Bell West",
- "drilldown" : "Roger Bell West",
- "y" : 4
+ "drilldown" : "Roger Bell West"
},
{
- "drilldown" : "Steven Wilson",
"y" : 1,
- "name" : "Steven Wilson"
+ "name" : "Steven Wilson",
+ "drilldown" : "Steven Wilson"
},
{
- "name" : "Ulrich Rieke",
"drilldown" : "Ulrich Rieke",
+ "name" : "Ulrich Rieke",
"y" : 3
},
{
- "name" : "Yet Ebreo",
"y" : 6,
+ "name" : "Yet Ebreo",
"drilldown" : "Yet Ebreo"
}
- ]
+ ],
+ "colorByPoint" : 1,
+ "name" : "Perl Weekly Challenge - 029"
}
],
- "xAxis" : {
- "type" : "category"
+ "plotOptions" : {
+ "series" : {
+ "borderWidth" : 0,
+ "dataLabels" : {
+ "enabled" : 1,
+ "format" : "{point.y}"
+ }
+ }
},
- "legend" : {
- "enabled" : 0
+ "title" : {
+ "text" : "Perl Weekly Challenge - 029"
+ },
+ "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
},
"yAxis" : {
"title" : {
"text" : "Total Solutions"
}
+ },
+ "legend" : {
+ "enabled" : 0
+ },
+ "chart" : {
+ "type" : "column"
}
}
diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json
index 5a8baa147c..44930a9d52 100644
--- a/stats/pwc-language-breakdown-summary.json
+++ b/stats/pwc-language-breakdown-summary.json
@@ -1,47 +1,44 @@
{
+ "tooltip" : {
+ "pointFormat" : "<b>{point.y:.0f}</b>"
+ },
+ "legend" : {
+ "enabled" : "false"
+ },
+ "subtitle" : {
+ "text" : "Last updated at 2019-10-13 20:21:15 GMT"
+ },
"xAxis" : {
"type" : "category",
"labels" : {
"style" : {
- "fontFamily" : "Verdana, sans-serif",
- "fontSize" : "13px"
+ "fontSize" : "13px",
+ "fontFamily" : "Verdana, sans-serif"
}
}
},
- "subtitle" : {
- "text" : "Last updated at 2019-10-13 15:26:32 GMT"
- },
- "chart" : {
- "type" : "column"
- },
- "title" : {
- "text" : "Perl Weekly Challenge Contributions - 2019"
- },
- "tooltip" : {
- "pointFormat" : "<b>{point.y:.0f}</b>"
- },
"yAxis" : {
"title" : {
"text" : null
},
"min" : 0
},
- "legend" : {
- "enabled" : "false"
+ "chart" : {
+ "type" : "column"
},
"series" : [
{
"dataLabels" : {
- "format" : "{point.y:.0f}",
+ "y" : 10,
"color" : "#FFFFFF",
+ "rotation" : -90,
+ "align" : "right",
"enabled" : "true",
+ "format" : "{point.y:.0f}",
"style" : {
- "fontFamily" : "Verdana, sans-serif",
- "fontSize" : "13px"
- },
- "y" : 10,
- "align" : "right",
- "rotation" : -90
+ "fontSize" : "13px",
+ "fontFamily" : "Verdana, sans-serif"
+ }
},
"data" : [
[
@@ -50,7 +47,7 @@
],
[
"Perl 5",
- 1167
+ 1169
],
[
"Perl 6",
@@ -59,5 +56,8 @@
],
"name" : "Contributions"
}
- ]
+ ],
+ "title" : {
+ "text" : "Perl Weekly Challenge Contributions - 2019"
+ }
}
diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json
index 7cd53ebe72..d85e047581 100644
--- a/stats/pwc-language-breakdown.json
+++ b/stats/pwc-language-breakdown.json
@@ -1,14 +1,186 @@
{
- "subtitle" : {
- "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-10-13 15:26:32 GMT"
+ "chart" : {
+ "type" : "column"
+ },
+ "series" : [
+ {
+ "colorByPoint" : "true",
+ "name" : "Perl Weekly Challenge Languages",
+ "data" : [
+ {
+ "y" : 132,
+ "drilldown" : "001",
+ "name" : "#001"
+ },
+ {
+ "y" : 104,
+ "drilldown" : "002",
+ "name" : "#002"
+ },
+ {
+ "name" : "#003",
+ "drilldown" : "003",
+ "y" : 66
+ },
+ {
+ "name" : "#004",
+ "drilldown" : "004",
+ "y" : 86
+ },
+ {
+ "name" : "#005",
+ "drilldown" : "005",
+ "y" : 66
+ },
+ {
+ "y" : 47,
+ "drilldown" : "006",
+ "name" : "#006"
+ },
+ {
+ "name" : "#007",
+ "y" : 55,
+ "drilldown" : "007"
+ },
+ {
+ "name" : "#008",
+ "drilldown" : "008",
+ "y" : 69
+ },
+ {
+ "drilldown" : "009",
+ "y" : 68,
+ "name" : "#009"
+ },
+ {
+ "name" : "#010",
+ "y" : 60,
+ "drilldown" : "010"
+ },
+ {
+ "name" : "#011",
+ "drilldown" : "011",
+ "y" : 78
+ },
+ {
+ "y" : 83,
+ "drilldown" : "012",
+ "name" : "#012"
+ },
+ {
+ "name" : "#013",
+ "drilldown" : "013",
+ "y" : 76
+ },
+ {
+ "drilldown" : "014",
+ "y" : 95,
+ "name" : "#014"
+ },
+ {
+ "y" : 93,
+ "drilldown" : "015",
+ "name" : "#015"
+ },
+ {
+ "name" : "#016",
+ "y" : 66,
+ "drilldown" : "016"
+ },
+ {
+ "name" : "#017",
+ "drilldown" : "017",
+ "y" : 79
+ },
+ {
+ "name" : "#018",
+ "y" : 76,
+ "drilldown" : "018"
+ },
+ {
+ "y" : 95,
+ "drilldown" : "019",
+ "name" : "#019"
+ },
+ {
+ "y" : 95,
+ "drilldown" : "020",
+ "name" : "#020"
+ },
+ {
+ "drilldown" : "021",
+ "y" : 67,
+ "name" : "#021"
+ },
+ {
+ "name" : "#022",
+ "drilldown" : "022",
+ "y" : 63
+ },
+ {
+ "drilldown" : "023",
+ "y" : 91,
+ "name" : "#023"
+ },
+ {
+ "name" : "#024",
+ "drilldown" : "024",
+ "y" : 70
+ },
+ {
+ "name" : "#025",
+ "drilldown" : "025",
+ "y" : 55
+ },
+ {
+ "name" : "#026",
+ "drilldown" : "026",
+ "y" : 70
+ },
+ {
+ "name" : "#027",
+ "drilldown" : "027",
+ "y" : 53
+ },
+ {
+ "drilldown" : "028",
+ "y" : 72,
+ "name" : "#028"
+ },
+ {
+ "y" : 55,
+ "drilldown" : "029",
+ "name" : "#029"
+ }
+ ]
+ }
+ ],
+ "title" : {
+ "text" : "Perl Weekly Challenge Language"
},
"xAxis" : {
"type" : "category"
},
+ "yAxis" : {
+ "title" : {
+ "text" : "Total Solutions"
+ }
+ },
+ "subtitle" : {
+ "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-10-13 20:21:15 GMT"
+ },
+ "plotOptions" : {
+ "series" : {
+ "borderWidth" : 0,
+ "dataLabels" : {
+ "enabled" : 1,
+ "format" : "{point.y}"
+ }
+ }
+ },
"drilldown" : {
"series" : [
{
- "id" : "001",
"data" : [
[
"Perl 5",
@@ -23,6 +195,7 @@
11
]
],
+ "id" : "001",
"name" : "001"
},
{
@@ -44,6 +217,7 @@
"id" : "002"
},
{
+ "name" : "003",
"id" : "003",
"data" : [
[
@@ -58,11 +232,9 @@
"Blog",
8
]
- ],
- "name" : "003"
+ ]
},
{
- "id" : "004",
"name" : "004",
"data" : [
[
@@ -77,7 +249,8 @@
"Blog",
9
]
- ]
+ ],
+ "id" : "004"
},
{
"data" : [
@@ -94,8 +267,8 @@
11
]
],
- "name" : "005",
- "id" : "005"
+ "id" : "005",
+ "name" : "005"
},
{
"id" : "006",
@@ -116,6 +289,7 @@
"name" : "006"
},
{
+ "id" : "007",
"data" : [
[
"Perl 5",
@@ -130,12 +304,9 @@
9
]
],
- "name" : "007",
- "id" : "007"
+ "name" : "007"
},
{
- "id" : "008",
- "name" : "008",
"data" : [
[
"Perl 5",
@@ -149,10 +320,12 @@
"Blog",
11
]
- ]
+ ],
+ "id" : "008",
+ "name" : "008"
},
<