aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2021-03-07 23:12:08 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2021-03-07 23:12:08 +0000
commitdb6e266767957e5d14fb5c6e50fa501bf0854470 (patch)
tree7e1663abd5aa9416ae5a36c7173c4b74c139d0f8
parent87095753aa7035a33cbbda345f93396c6b7cc0e3 (diff)
downloadperlweeklychallenge-club-db6e266767957e5d14fb5c6e50fa501bf0854470.tar.gz
perlweeklychallenge-club-db6e266767957e5d14fb5c6e50fa501bf0854470.tar.bz2
perlweeklychallenge-club-db6e266767957e5d14fb5c6e50fa501bf0854470.zip
- Added solutions by Colin Crain.
-rw-r--r--challenge-102/colin-crain/perl/ch-1.pl255
-rw-r--r--challenge-102/colin-crain/perl/ch-2.pl132
-rw-r--r--stats/pwc-current.json457
-rw-r--r--stats/pwc-language-breakdown-summary.json62
-rw-r--r--stats/pwc-language-breakdown.json1386
-rw-r--r--stats/pwc-leaders.json368
-rw-r--r--stats/pwc-summary-1-30.json114
-rw-r--r--stats/pwc-summary-121-150.json110
-rw-r--r--stats/pwc-summary-151-180.json122
-rw-r--r--stats/pwc-summary-181-210.json40
-rw-r--r--stats/pwc-summary-211-240.json54
-rw-r--r--stats/pwc-summary-31-60.json128
-rw-r--r--stats/pwc-summary-61-90.json104
-rw-r--r--stats/pwc-summary-91-120.json118
-rw-r--r--stats/pwc-summary.json504
15 files changed, 2178 insertions, 1776 deletions
diff --git a/challenge-102/colin-crain/perl/ch-1.pl b/challenge-102/colin-crain/perl/ch-1.pl
new file mode 100644
index 0000000000..7b3c6eb6ea
--- /dev/null
+++ b/challenge-102/colin-crain/perl/ch-1.pl
@@ -0,0 +1,255 @@
+#!/Users/colincrain/perl5/perlbrew/perls/perl-5.32.0/bin/perl
+#
+# rare-numbers.pl
+#
+# TASK #1 › Rare Numbers
+# Submitted by: Mohammad S Anwar
+# You are given a positive integer $N.
+#
+# Write a script to generate all Rare numbers of size $N if exists.
+# Please checkout the page for more information about it.
+#
+# Examples
+# (a) 2 digits: 65
+# (b) 6 digits: 621770
+# (c) 9 digits: 281089082
+#
+#
+#
+# method:
+# Let's start by making the broad statement that fast as Perl may be,
+# using an interpreted language for this sort of massive raw computation
+# is just foolish. There is a reason Mr. Gupta chose FORTRAN I assume, for
+# same reason it persists to this day among certain scientific
+# data-crunching adherents: it's fast — very, very fast — at numerical
+# processing.
+#
+# Perl, in all the joy of expressiveness it brings to the table, is just
+# ill-suited. Of course it can be used to attack the problem, but will
+# always run up against certain walls when processing 10 billion numbers.
+#
+# The biggest optimization is limiting the first digit to 2,4,6, or 8, and
+# advancing the iterator one at the outer order of magnitude rather than a
+# simple `next`. This cuts the number of iterations 55% immediately at the
+# cost of the performing one `substr` on the test value.
+#
+# After this, however, it becomes a trade-off on doing more expensive
+# `substr` operations, poking about at extracting individual digits, and
+# the associated conditionals to determine whether to jump to the next
+# iteation, against the rather expensivve `sqrt` operation to check for
+# perfect squares.
+#
+# Needless to say the gains in jumping over a hundred million values are
+# quite a bit more obvious than short-circuiting out to the next
+# incremental candidate.
+
+# Unfortunately the further "optimizations" given are not as effective,
+# ultimately becoming a tradeoff between the iterations and expesive
+# computation saved versus the added ovverhead of implementation,
+# leading to diminishing returns.
+#
+# The next set though, of examining the relationships between the first
+# and last digits, yielded quite good results, reducing the number of
+# squareroot operations about 5 times further. At this point the
+# iterations for a 4-digit value have been reduced from 8999 to start
+# (numbers between 1000 and 9999), to 4399 after filtering for even lead
+# digits, to about 800 after skipping impossible combinations of first
+# and last digits.
+
+# Simply short-circuiting out of an invalid combination of digits did
+# not, however, produce much gain in computation time. Using `next` did
+# not change the actual number of iterations, only avoiding further
+# intensive computation within a given loop. The `substr` operations to
+# gather the relevant digits and the the added complexity ate in to any
+# effort saved, resulting in only a samll tim ereduction.
+#
+# The potential gains were not truly realized until I managed to not
+# just short-circut the loop but reconfigure things entirely to skip
+# whole blocks of values in the incrementation phase, essentially
+# unrolling the large pattern of allowed values over each set of
+# permissable combinations. This required a new counter for the tens
+# place that allowed proper rollovers between the sets.
+#
+# This was pretty tedious work, but paid off in a nearly fourfold
+# increase in execution speed.
+#
+# Further implementation of the second and second-to-last digits was not
+# nearly as effective. In the end the reduction was minimal and all the
+# unrolled incrementation was, well tedious no longer covered it.
+#
+# It felt a lot like assembler, to be honest, so rather than attempt to
+# refine it further it was clear there would be no more orders of
+# magnitude available to trim ahead of us. I threw in the towel at
+# 10-digit numbers, taking 509 seconds to find the 2 rare numbers there.
+#
+#
+#
+#
+# The abandoned next level of complexity. Unrolling these loops could
+# be done, but would be maddening, and the only way to see any gains.
+#
+# If A == 8 then Z == 2, 3, 7 or 8:
+# if Z = 2 then:
+# B + tens == 9,
+# if Z = 3 then:
+# B - tens == 7 when B > tens
+# B - tens == -3 when B < tens
+# B can never be equal to tens,
+# if Z == 7 then:
+# B + tens == 11 when B > 1
+# B + tens == 1 when B < 1,
+# if Z == 8 then B == tens.
+#
+#
+#
+# © 2021 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+use warnings;
+use strict;
+use feature ":5.26";
+
+my $then = time;
+
+my $order = shift @ARGV || 9;
+
+my $test = 10**($order-1);
+my $end = 10**$order;
+my @out;
+
+my $tens = 0;
+
+while ($test < $end) {
+
+ my $A = substr $test, 0, 1;
+ if ($A % 2 == 1) {
+ $test += 10**($order-1);
+ next;
+ }
+
+ my $Z = substr $test, -1, 1;
+
+ ## 2s
+ if ($A == 2 and $Z == 0) {
+ $test += 2;
+ }
+ elsif ($A == 2 and $Z > 2) {
+ if ($tens == 9) {
+ $test += 7;
+ $tens = 0;
+ next;
+ }
+ $test += 9;
+ $tens++;
+ }
+
+ ## 4s
+ if ($A == 4 and $Z > 0) {
+ if ($tens == 9) {
+ $test += 9;
+ $tens = 0;
+ next;
+ }
+ $test += 9;
+ $tens++;
+ }
+
+ ## 6s
+ if ($A == 6 and $Z == 1) {
+ $test += 4;
+ }
+ elsif ($A == 6 and $Z == 6) {
+ if ($tens == 9) {
+ $test += 4;
+ $tens = 0;
+ next;
+ }
+ $test += 4;
+ $tens++;
+ }
+
+ ## 8s
+ if ($A == 8 and $Z == 0) {
+ $test += 2;
+ }
+ elsif ($A == 8 and $Z == 4) {
+ $test += 3;
+ }
+ elsif ($A == 8 and $Z == 9) {
+ if ($tens == 9) {
+ $test += 1;
+ $tens = 0;
+ next;
+ }
+ $test +=3;
+ $tens++;
+ }
+
+
+## the second and second-to-last optimizations, not yet unrolled:
+## 333 seconds for order == 9
+#
+# my $A = substr $test, 0, 1;
+# $A % 2 == 1 and $test += 10**($order-1);
+#
+# my $B = substr $test, 1, 1;
+# my $P = substr $test, -2, 1;
+# my $Q = substr $test, -1, 1;
+#
+# if ($A == 2) {
+# next if $Q != 2;
+# next unless ($B - $P) % 2 == 0;
+# }
+# elsif ($A == 4) {
+# next if $Q != 0;
+# next unless abs(($B - $P) % 2) == 1;
+# }
+# elsif ($A == 6) {
+# next unless ($Q == 0 or $Q == 5);
+# }
+# else { ## $A == 8
+# if ($Q == 2) {
+# next unless $B + $P == 9;
+# }
+# elsif ($Q == 3) {
+# next if $B == $P;
+# if ( $B > $P ) {
+# next unless $B - $P == 7;
+# }
+# next unless $B - $P == -3;
+# }
+# elsif ($Q == 7) {
+# if ($B > 1) {
+# next unless $B + $P == 11;
+# }
+# if ($B == 0) {
+# next unless $P == 1;
+# }
+# }
+# elsif ($Q == 8) {
+# next unless $B == $P;
+# }
+# else {
+# next;
+# }
+# }
+
+ my $rev = reverse $test;
+ if ( $test == $rev
+ or $test - $rev < 0
+ or int(sqrt($test-$rev))**2 != ($test-$rev)
+ or int(sqrt($test+$rev))**2 != ($test+$rev) ) {
+ $test++;
+ next;
+ }
+
+ push @out, $test;
+ $test++;
+}
+
+say $_ for @out;
+
+say "time: ", time - $then;
+
diff --git a/challenge-102/colin-crain/perl/ch-2.pl b/challenge-102/colin-crain/perl/ch-2.pl
new file mode 100644
index 0000000000..9a6e63c9eb
--- /dev/null
+++ b/challenge-102/colin-crain/perl/ch-2.pl
@@ -0,0 +1,132 @@
+#! /opt/local/bin/perl
+#
+# puzzlehash.pl
+#
+# TASK #2 › Hash-counting String
+# Submitted by: Stuart Little
+# You are given a positive integer $N.
+#
+# Write a script to produce Hash-counting string of that length.
+#
+# The definition of a hash-counting string is as follows:
+#
+# - the string consists only of digits 0-9 and hashes, ‘#’
+# - there are no two consecutive hashes: ‘##’ does not appear in your
+# string
+# - the last character is a hash
+# - the number immediately preceding each hash (if it exists) is the
+# position of that hash in the string, with the position being counted
+# up from 1
+#
+# It can be shown that for every positive integer N there is exactly one such length-N string.
+#
+# Examples:
+# (a) "#" is the counting string of length 1
+# (b) "2#" is the counting string of length 2
+# (c) "#3#" is the string of length 3
+# (d) "#3#5#7#10#" is the string of length 10
+# (e) "2#4#6#8#11#14#" is the string of length 14
+
+# method:
+#
+# ok this one is outright weird. It seems to be simply an analytical
+# puzzle rather than having any practical significance. So rather than
+# research a solution I think I'll just attack it logically and see
+# what happens.
+#
+# 1. The last character is a hash, and no two hashes can be placed
+# successively, thus the character before the final hash is a digit,
+# indicating the position of that hash.
+#
+# 2. The length of the string is the quantity being "counted" here. I
+# think they kind of buried the lede on that one. No matter, it's
+# still all there in the description.
+#
+# 3. Thus the last hash will be in position N, and the number
+# preceeding will be N.
+#
+# 4. The character preceeding the number N can be any digit or a hash,
+# but should it be a digit, it would have no significance. As such any
+# digit would do, leading to the ability to construct 10 such stings
+# with the various digits in this place. As we are told the string is
+# unique, this is a contradiction, and thus the next character must be
+# a hash.
+
+# 4.1 It is not explicitly defined as to whether all of the digits
+# perceeding a given hash compose the number defining its position,
+# for example a string starting with 104#, with only the 4
+# referencing the hash in the 4th position. In any case this case is
+# moot considering the previous logic. Alternately should this be
+# defined as true, that the number should be composed of all possible
+# digits, then the other argument becomes moot, as the string must by
+# necessity alternate numbers and hash marks functioning as
+# separators.
+#
+# 4.2. I believe this line of reasoning is required to deduce the
+# uniqueness of one string per length quality
+#
+# 5. Generalizing, the string is composed solely of alternating hashes
+# and numbers, with the number preceeding each hash indicating the
+# position of that hash.
+#
+# 6. The positions are 1-based, rather than 0-based indexes.
+#
+# So the algorithm is to start at the end of the string, placing a
+# hash in the N-th position, counted starting at 1. We then
+# concatenate the position of that hash to the string and count our
+# length. If it is less than N, add a hash. If it was N-1 we are done,
+# else we need to loop and add the numerical poistion of the
+# last-placed hash to the front of the string. As we approach the
+# front of our string, we are guarenteed that the position indicating
+# numbers will become single-digit, so our last-placed character will
+# either be a hash or a single digit 2 indicating the position of hash
+# following in the second place.
+#
+# What a weird, fun little puzzle.
+
+#
+# © 2021 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+use warnings;
+use strict;
+use feature ":5.26";
+use feature qw(signatures);
+no warnings 'experimental::signatures';
+
+for (1..32) {
+ say sprintf "%2d -> %s", $_, get_hash_string( $_ );
+}
+
+sub get_hash_string ( $num ) {
+ my $str = '';
+
+ while ( my $pos = $num - length $str ) {
+ $str = '#' . $str;
+ return $str if $pos == 1;
+ $str = $pos . $str;
+ }
+
+ return $str;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# use Test::More;
+#
+# is
+#
+# done_testing();
diff --git a/stats/pwc-current.json b/stats/pwc-current.json
index c7bdbcd4a6..86f7fd79c7 100644
--- a/stats/pwc-current.json
+++ b/stats/pwc-current.json
@@ -1,174 +1,8 @@
{
- "legend" : {
- "enabled" : 0
- },
- "series" : [
- {
- "name" : "Perl Weekly Challenge - 102",
- "data" : [
- {
- "drilldown" : "Aaron Smith",
- "y" : 3,
- "name" : "Aaron Smith"
- },
- {
- "name" : "Abigail",
- "y" : 4,
- "drilldown" : "Abigail"
- },
- {
- "name" : "Adam Russell",
- "y" : 4,
- "drilldown" : "Adam Russell"
- },
- {
- "y" : 1,
- "name" : "Alexander Karelas",
- "drilldown" : "Alexander Karelas"
- },
- {
- "y" : 5,
- "name" : "Arne Sommer",
- "drilldown" : "Arne Sommer"
- },
- {
- "y" : 4,
- "name" : "Athanasius",
- "drilldown" : "Athanasius"
- },
- {
- "name" : "Bob Lied",
- "y" : 1,
- "drilldown" : "Bob Lied"
- },
- {
- "drilldown" : "Cheok-Yin Fung",
- "name" : "Cheok-Yin Fung",
- "y" : 2
- },
- {
- "y" : 1,
- "name" : "Cristina Heredia",
- "drilldown" : "Cristina Heredia"
- },
- {
- "y" : 3,
- "name" : "Dave Jacoby",
- "drilldown" : "Dave Jacoby"
- },
- {
- "drilldown" : "E. Choroba",
- "y" : 2,
- "name" : "E. Choroba"
- },
- {
- "drilldown" : "Flavio Poletti",
- "y" : 4,
- "name" : "Flavio Poletti"
- },
- {
- "name" : "Gustavo Chaves",
- "y" : 2,
- "drilldown" : "Gustavo Chaves"
- },
- {
- "drilldown" : "James Smith",
- "y" : 3,
- "name" : "James Smith"
- },
- {
- "drilldown" : "Jan Krnavek",
- "name" : "Jan Krnavek",
- "y" : 2
- },
- {
- "name" : "Joan Mimosinnet",
- "y" : 2,
- "drilldown" : "Joan Mimosinnet"
- },
- {
- "drilldown" : "Jorg Sommrey",
- "y" : 2,
- "name" : "Jorg Sommrey"
- },
- {
- "drilldown" : "Lubos Kolouch",
- "name" : "Lubos Kolouch",
- "y" : 2
- },
- {
- "y" : 1,
- "name" : "Mark Anderson",
- "drilldown" : "Mark Anderson"
- },
- {
- "drilldown" : "Maxim Kolodyazhny",
- "y" : 1,
- "name" : "Maxim Kolodyazhny"
- },
- {
- "name" : "Niels van Dijke",
- "y" : 2,
- "drilldown" : "Niels van Dijke"
- },
- {
- "y" : 2,
- "name" : "Paulo Custodio",
- "drilldown" : "Paulo Custodio"
- },
- {
- "drilldown" : "Roger Bell_West",
- "y" : 5,
- "name" : "Roger Bell_West"
- },
- {
- "y" : 3,
- "name" : "Simon Green",
- "drilldown" : "Simon Green"
- },
- {
- "drilldown" : "Simon Proctor",
- "y" : 2,
- "name" : "Simon Proctor"
- },
- {
- "drilldown" : "Stuart Little",
- "y" : 4,
- "name" : "Stuart Little"
- },
- {
- "drilldown" : "Ulrich Rieke",
- "y" : 4,
- "name" : "Ulrich Rieke"
- },
- {
- "name" : "W. Luis Mochan",
- "y" : 3,
- "drilldown" : "W. Luis Mochan"
- },
- {
- "drilldown" : "Wanderdoc",
- "y" : 1,
- "name" : "Wanderdoc"
- },
- {
- "name" : "Yet Ebreo",
- "y" : 1,
- "drilldown" : "Yet Ebreo"
- }
- ],
- "colorByPoint" : 1
- }
- ],
- "subtitle" : {
- "text" : "[Champions: 30] Last updated at 2021-03-07 22:06:23 GMT"
- },
- "xAxis" : {
- "type" : "category"
- },
"drilldown" : {
"series" : [
{
+ "name" : "Aaron Smith",
"id" : "Aaron Smith",
"data" : [
[
@@ -179,12 +13,10 @@
"Blog",
1
]
- ],
- "name" : "Aaron Smith"
+ ]
},
{
"id" : "Abigail",
- "name" : "Abigail",
"data" : [
[
"Perl",
@@ -194,7 +26,8 @@
"Blog",
2
]
- ]
+ ],
+ "name" : "Abigail"
},
{
"name" : "Adam Russell",
@@ -211,17 +44,17 @@
"id" : "Adam Russell"
},
{
- "id" : "Alexander Karelas",
- "name" : "Alexander Karelas",
"data" : [
[
"Perl",
1
]
- ]
+ ],
+ "id" : "Alexander Karelas",
+ "name" : "Alexander Karelas"
},
{
- "id" : "Arne Sommer",
+ "name" : "Arne Sommer",
"data" : [
[
"Perl",
@@ -236,11 +69,10 @@
1
]
],
- "name" : "Arne Sommer"
+ "id" : "Arne Sommer"
},
{
"id" : "Athanasius",
- "name" : "Athanasius",
"data" : [
[
"Perl",
@@ -250,37 +82,48 @@
"Raku",
2
]
- ]
+ ],
+ "name" : "Athanasius"
},
{
- "id" : "Bob Lied",
"data" : [
[
"Perl",
1
]
],
+ "id" : "Bob Lied",
"name" : "Bob Lied"
},
{
- "name" : "Cheok-Yin Fung",
+ "id" : "Cheok-Yin Fung",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "name" : "Cheok-Yin Fung"
+ },
+ {
+ "id" : "Colin Crain",
"data" : [
[
"Perl",
2
]
],
- "id" : "Cheok-Yin Fung"
+ "name" : "Colin Crain"
},
{
- "id" : "Cristina Heredia",
"name" : "Cristina Heredia",
"data" : [
[
"Perl",
1
]
- ]
+ ],
+ "id" : "Cristina Heredia"
},
{
"id" : "Dave Jacoby",
@@ -307,7 +150,6 @@
"name" : "E. Choroba"
},
{
- "name" : "Flavio Poletti",
"data" : [
[
"Perl",
@@ -318,7 +160,8 @@
2
]
],
- "id" : "Flavio Poletti"
+ "id" : "Flavio Poletti",
+ "name" : "Flavio Poletti"
},
{
"id" : "Gustavo Chaves",
@@ -341,58 +184,58 @@
1
]
],
- "name" : "James Smith",
- "id" : "James Smith"
+ "id" : "James Smith",
+ "name" : "James Smith"
},
{
- "id" : "Jan Krnavek",
"name" : "Jan Krnavek",
"data" : [
[
"Raku",
2
]
- ]
+ ],
+ "id" : "Jan Krnavek"
},
{
+ "name" : "Joan Mimosinnet",
"id" : "Joan Mimosinnet",
"data" : [
[
"Raku",
2
]
- ],
- "name" : "Joan Mimosinnet"
+ ]
},
{
- "id" : "Jorg Sommrey",
"name" : "Jorg Sommrey",
"data" : [
[
"Perl",
2
]
- ]
+ ],
+ "id" : "Jorg Sommrey"
},
{
- "id" : "Lubos Kolouch",
"data" : [
[
"Perl",
2
]
],
+ "id" : "Lubos Kolouch",
"name" : "Lubos Kolouch"
},
{
"id" : "Mark Anderson",
- "name" : "Mark Anderson",
"data" : [
[
"Raku",
1
]
- ]
+ ],
+ "name" : "Mark Anderson"
},
{
"id" : "Maxim Kolodyazhny",
@@ -405,14 +248,14 @@
"name" : "Maxim Kolodyazhny"
},
{
- "id" : "Niels van Dijke",
- "name" : "Niels van Dijke",
"data" : [
[
"Perl",
2
]
- ]
+ ],
+ "id" : "Niels van Dijke",
+ "name" : "Niels van Dijke"
},
{
"id" : "Paulo Custodio",
@@ -426,6 +269,7 @@
},
{
"name" : "Roger Bell_West",
+ "id" : "Roger Bell_West",
"data" : [
[
"Perl",
@@ -439,11 +283,9 @@
"Blog",
1
]
- ],
- "id" : "Roger Bell_West"
+ ]
},
{
- "name" : "Simon Green",
"data" : [
[
"Perl",
@@ -454,17 +296,18 @@
1
]
],
- "id" : "Simon Green"
+ "id" : "Simon Green",
+ "name" : "Simon Green"
},
{
"id" : "Simon Proctor",
- "name" : "Simon Proctor",
"data" : [
[
"Raku",
2
]
- ]
+ ],
+ "name" : "Simon Proctor"
},
{
"data" : [
@@ -477,10 +320,12 @@
2
]
],
- "name" : "Stuart Little",
- "id" : "Stuart Little"
+ "id" : "Stuart Little",
+ "name" : "Stuart Little"
},
{
+ "name" : "Ulrich Rieke",
+ "id" : "Ulrich Rieke",
"data" : [
[
"Perl",
@@ -490,12 +335,10 @@
"Raku",
2
]
- ],
- "name" : "Ulrich Rieke",
- "id" : "Ulrich Rieke"
+ ]
},
{
- "name" : "W. Luis Mochan",
+ "id" : "W. Luis Mochan",
"data" : [
[
"Perl",
@@ -506,34 +349,32 @@
1
]
],
- "id" : "W. Luis Mochan"
+ "name" : "W. Luis Mochan"
},
{
- "id" : "Wanderdoc",
"data" : [
[
"Perl",
1
]
],
+ "id" : "Wanderdoc",
"name" : "Wanderdoc"
},
{
- "name" : "Yet Ebreo",
"data" : [
[
"Perl",
1
]
],
- "id" : "Yet Ebreo"
+ "id" : "Yet Ebreo",
+ "name" : "Yet Ebreo"
}
]
},
- "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/>"
+ "xAxis" : {
+ "type" : "category"
},
"chart" : {
"type" : "column"
@@ -543,14 +384,188 @@
"text" : "Total Solutions"
}
},
+ "legend" : {
+ "enabled" : 0
+ },
+ "subtitle" : {
+ "text" : "[Champions: 31] Last updated at 2021-03-07 23:11:51 GMT"
+ },
+ "tooltip" : {
+ "followPointer" : 1,
+ "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/>"
+ },
"title" : {
"text" : "Perl Weekly Challenge - 102"
},
+ "series" : [
+ {
+ "name" : "Perl Weekly Challenge - 102",
+ "data" : [
+ {
+ "y" : 3,
+ "drilldown" : "Aaron Smith",
+ "name" : "Aaron Smith"
+ },
+ {
+ "y" : 4,
+ "name" : "Abigail",
+ "drilldown" : "Abigail"
+ },
+ {
+ "y" : 4,
+ "name" : "Adam Russell",
+ "drilldown" : "Adam Russell"
+ },
+ {
+ "name" : "Alexander Karelas",
+ "drilldown" : "Alexander Karelas",
+ "y" : 1
+ },
+ {
+ "drilldown" : "Arne Sommer",
+ "name" : "Arne Sommer",
+ "y" : 5
+ },
+ {
+ "drilldown" : "Athanasius",
+ "name" : "Athanasius",
+ "y" : 4
+ },
+ {
+ "drilldown" : "Bob Lied",
+ "name" : "Bob Lied",
+ "y" : 1
+ },
+ {
+ "y" : 2,
+ "drilldown" : "Cheok-Yin Fung",
+ "name" : "Cheok-Yin Fung"
+ },
+ {
+ "drilldown" : "Colin Crain",
+ "name" : "Colin Crain",
+ "y" : 2
+ },
+ {
+ "drilldown" : "Cristina Heredia",
+ "name" : "Cristina Heredia",
+ "y" : 1
+ },
+ {
+ "drilldown" : "Dave Jacoby",
+ "name" : "Dave Jacoby",
+ "y" : 3
+ },
+ {
+ "y" : 2,
+ "name" : "E. Choroba",
+ "drilldown" : "E. Choroba"
+ },
+ {
+ "y" : 4,
+ "drilldown" : "Flavio Poletti",
+ "name" : "Flavio Poletti"
+ },
+ {
+ "name" : "Gustavo Chaves",
+ "drilldown" : "Gustavo Chaves",
+ "y" : 2
+ },
+ {
+ "drilldown" : "James Smith",</