From 9bdcde81cec8051286c3a4a889b87a7f2dcc5338 Mon Sep 17 00:00:00 2001 From: Doomtrain14 Date: Wed, 11 Sep 2019 23:53:24 +0800 Subject: Improvement in perl6 solution --- challenge-025/yet-ebreo/perl5/ch-1.pl | 2 +- challenge-025/yet-ebreo/perl6/ch-1.p6 | 79 +++++++++++++++++++++++------------ challenge-025/yet-ebreo/perl6/ch-2.p6 | 4 ++ 3 files changed, 57 insertions(+), 28 deletions(-) diff --git a/challenge-025/yet-ebreo/perl5/ch-1.pl b/challenge-025/yet-ebreo/perl5/ch-1.pl index 9944338393..547d56b443 100644 --- a/challenge-025/yet-ebreo/perl5/ch-1.pl +++ b/challenge-025/yet-ebreo/perl5/ch-1.pl @@ -60,7 +60,7 @@ sub iter { #Only do computation when name list is empty if (!@m_name_list) { #from what I understand the task was asking for the longest sequence, - #I assumed that it referes to the highes number of names/chain in a valid sequence (not character count) + #I assumed that it refers to the highest number of names/chain in a valid sequence (not character count) my $length = $m_name_arr=~y/>//; if ($length >= $max_length) { push @{$chain[$length]}, $m_name_arr; diff --git a/challenge-025/yet-ebreo/perl6/ch-1.p6 b/challenge-025/yet-ebreo/perl6/ch-1.p6 index 1832bc8cf8..3aaffed364 100644 --- a/challenge-025/yet-ebreo/perl6/ch-1.p6 +++ b/challenge-025/yet-ebreo/perl6/ch-1.p6 @@ -6,24 +6,50 @@ # 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 + +# #Notes/Basically,just me just thinking out loud: +# - I initially used the same approach that I used in my perl5 code: +# - I tried grep-ing @names to get the candidates instead of preparing them using hash of array, it took approx 1 hr to finish +# - Then I went back to use hash, it took the exec time to 5 mins! +# - I used multi threading and exec time went down to 3 mins! +# - 3 mins is still slow compared to perl5 version. +# - I hope somebody can tell me why perl6 is taking a lot longer vs my perl5 version (< 10 sec) +# - I kept on thinking of a better approcah, then an I came up with an idea... +# - ...this time we are going backwards! my Str @names = ; my Array @chain; my %hash = (); my int $max_length = 0; -sub MAIN { - for '0'..'z' -> $n { - %hash{$n} = @names.grep(/^$n/); +sub MAIN { + #We are still using hash but will be looking at the last char instead + for 'a'..'z' -> $n { + %hash{$n} = @names.grep(/$n$/); } - + + #The code below list down the valid last names, + #These are names ending with letter which is NOT + #a starting letter of any name in the list @names + my Str @last_names; for @names -> $name { - my Str $m_name_chain = ""; - iter($name, $m_name_chain, %hash{$name.substr(*-1)}.Seq ); + my $last = $name.substr(*-1); + (!grep {/^$last/}, @names) && @last_names.push($name); + } + + #Use the valid last names as starting point; + #Although, upon checking all longest sequence ended with 'alduino' + await do for @last_names -> $lname { + start { + my Str $m_name_chain = ""; + iter($lname, $m_name_chain, %hash{$lname.substr(0,1)}.Seq ); + } } - + + #Print the longest sequence + #Print all when they are tied say "Sequence:"; for @chain[*-1] -> @r { for @r -> $e { - say "$e\n"; + say ">"~$e.chop~"\n"; } } say "Highest chain count: "~@chain.end; @@ -33,32 +59,31 @@ sub MAIN { sub iter { my (Str $m_name, Str $m_name_chain, Str @m_name_list) = @_; - $m_name_chain ~= "> $m_name "; + $m_name_chain = " $m_name >" ~ $m_name_chain; for @m_name_list -> $name { + #check and skip if the $name is already in the name sequence in string format + #(stored in $m_name_chain) if (!$m_name_chain.contains($name)) { - iter($name, $m_name_chain, %hash{$name.substr(*-1)}.Seq); + iter($name, $m_name_chain, %hash{$name.substr(0,1)}.Seq); } } - if (!@m_name_list.end) { - my int $length = +$m_name_chain.comb: ">"; - if ($length >= $max_length) { - @chain[$length].push($m_name_chain); - $max_length = $length; - } - } -} + my int $length = +$m_name_chain.comb: ">"; + if ($length >= $max_length) { + @chain[$length].push($m_name_chain); + $max_length = $length; + } +} # #Sample output # Sequence: -# > machamp > petilil > landorus > scrafty > yamask > kricketune > emboar > registeel > loudred > darmanitan > nosepass > simisear > relicanth > heatmor > rufflet > trapinch > haxorus > seaking > girafarig > gabite > exeggcute > emolga > audino +# > machamp > petilil > loudred > darmanitan > nosepass > simisear > rufflet > trapinch > heatmor > registeel > landorus > scrafty > yamask > kricketune > emboar > relicanth > haxorus > seaking > girafarig > gabite > exeggcute > emolga > audino # .. -# > machamp > pinsir > rufflet > trapinch > heatmor > remoraid > darmanitan > nosepass > starly > yamask > kricketune > exeggcute > emboar > registeel > landorus > simisear > relicanth > haxorus > seaking > girafarig > gabite > emolga > audino - -# > machamp > pinsir > rufflet > trapinch > heatmor > remoraid > darmanitan > nosepass > starly > yamask > kricketune > exeggcute > emboar > relicanth > haxorus > simisear > registeel > landorus > seaking > girafarig > gabite > emolga > audino +# > machamp > pinsir > rufflet > trapinch > haxorus > seaking > girafarig > gabite > exeggcute > emboar > relicanth > heatmor > registeel > landorus > simisear > remoraid > darmanitan > nosepass > starly > yamask > kricketune > emolga > alduino +# +# > machamp > pinsir > relicanth > haxorus > seaking > girafarig > gabite > exeggcute > emboar > rufflet > trapinch > heatmor > registeel > landorus > simisear > remoraid > darmanitan > nosepass > starly > yamask > kricketune > emolga > alduino# Highest chain count: 23 +# # Highest chain count: 23 # Number of Sequence found: 1248 -# Run Time: 319.97691637 sec - -# #Note(s): -# - It took 320 seconds to complete! -# - I am a perl6 newbie, I hope somebody can tell me why perl6 is taking a lot longer vs my perl5 version (< 10 sec) +# Run Time: 61.6021016 sec +# +# It is still slow compared to my perl5 version, but a big improvement to my previous perl6 solutions \ No newline at end of file diff --git a/challenge-025/yet-ebreo/perl6/ch-2.p6 b/challenge-025/yet-ebreo/perl6/ch-2.p6 index 7328b41800..be64a00a2b 100644 --- a/challenge-025/yet-ebreo/perl6/ch-2.p6 +++ b/challenge-025/yet-ebreo/perl6/ch-2.p6 @@ -1,3 +1,7 @@ +# Create script to implement Chaocipher. Please checkout wiki page for more information +# Visualizing it using rotating disk is a bit difficult, here's a video illustration of the algo +# https://www.youtube.com/watch?v=0tL9A69olRc , that helped me understand it + #It should be okay to modify the zenith/nadir (0 to $wheelsize) constant $ZENITH = 0; constant $NADIR = 13; -- cgit From 7e3aca861fd43a48f1849c4eb7a62cfb2b3e3c6d Mon Sep 17 00:00:00 2001 From: Doomtrain14 Date: Thu, 12 Sep 2019 01:11:54 +0800 Subject: Perl6 Ch#1 runtime is now under a minute --- challenge-025/yet-ebreo/perl6/ch-1.p6 | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/challenge-025/yet-ebreo/perl6/ch-1.p6 b/challenge-025/yet-ebreo/perl6/ch-1.p6 index 3aaffed364..638cd1d445 100644 --- a/challenge-025/yet-ebreo/perl6/ch-1.p6 +++ b/challenge-025/yet-ebreo/perl6/ch-1.p6 @@ -15,7 +15,7 @@ # - 3 mins is still slow compared to perl5 version. # - I hope somebody can tell me why perl6 is taking a lot longer vs my perl5 version (< 10 sec) # - I kept on thinking of a better approcah, then an I came up with an idea... -# - ...this time we are going backwards! +# - ...this time we are going backwards! Run Time is now under a minute my Str @names = ; my Array @chain; my %hash = (); @@ -26,7 +26,7 @@ sub MAIN { %hash{$n} = @names.grep(/$n$/); } - #The code below list down the valid last names, + #The code below list down the candidates for last names, #These are names ending with letter which is NOT #a starting letter of any name in the list @names my Str @last_names; @@ -35,12 +35,23 @@ sub MAIN { (!grep {/^$last/}, @names) && @last_names.push($name); } - #Use the valid last names as starting point; - #Although, upon checking all longest sequence ended with 'alduino' - await do for @last_names -> $lname { - start { + #The code below was added to further filter out @last_names + #and find the best candidate(s) and store it in @best_last + #The name in @last_name with the most number of linkage + #(its first char is same as last char of name in @names) will be used + my @best_last; + for @last_names -> $lname { + my $first = $lname.substr(0,1); + my $count = grep { /$first$/}, @names; + + @best_last[$count].push($lname); + } + + #Use the @best_last as starting point + for @best_last[*-1] -> @last { + for @last -> $e { my Str $m_name_chain = ""; - iter($lname, $m_name_chain, %hash{$lname.substr(0,1)}.Seq ); + iter($e, $m_name_chain, %hash{$e.substr(0,1)}.Seq ); } } @@ -80,10 +91,10 @@ sub iter { # .. # > machamp > pinsir > rufflet > trapinch > haxorus > seaking > girafarig > gabite > exeggcute > emboar > relicanth > heatmor > registeel > landorus > simisear > remoraid > darmanitan > nosepass > starly > yamask > kricketune > emolga > alduino # -# > machamp > pinsir > relicanth > haxorus > seaking > girafarig > gabite > exeggcute > emboar > rufflet > trapinch > heatmor > registeel > landorus > simisear > remoraid > darmanitan > nosepass > starly > yamask > kricketune > emolga > alduino# Highest chain count: 23 +# > machamp > pinsir > relicanth > haxorus > seaking > girafarig > gabite > exeggcute > emboar > rufflet > trapinch > heatmor > registeel > landorus > simisear > remoraid > darmanitan > nosepass > starly > yamask > kricketune > emolga > alduino # # Highest chain count: 23 # Number of Sequence found: 1248 -# Run Time: 61.6021016 sec +# Run Time: 56.786985 sec # # It is still slow compared to my perl5 version, but a big improvement to my previous perl6 solutions \ No newline at end of file -- cgit From fe1630bc693cf0c6536d4572e18cc0759d6a8be7 Mon Sep 17 00:00:00 2001 From: Duane Powell Date: Thu, 12 Sep 2019 08:27:56 -0500 Subject: Commit solutions for perl weekly challenge 025 --- challenge-025/duane-powell/perl5/ch-1.pl | 166 +++++++++++++++++++++++++++ challenge-025/duane-powell/perl5/ch-2.pl | 186 +++++++++++++++++++++++++++++++ 2 files changed, 352 insertions(+) create mode 100755 challenge-025/duane-powell/perl5/ch-1.pl create mode 100755 challenge-025/duane-powell/perl5/ch-2.pl diff --git a/challenge-025/duane-powell/perl5/ch-1.pl b/challenge-025/duane-powell/perl5/ch-1.pl new file mode 100755 index 0000000000..a471c2a363 --- /dev/null +++ b/challenge-025/duane-powell/perl5/ch-1.pl @@ -0,0 +1,166 @@ +#!/usr/bin/perl +use Modern::Perl; + +# Generate a longest sequence of the following English Pokemon names where each name starts with the last letter of previous name. + +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 +); + +my @test = qw( +bad good dog cat fish boy girl tree house lost +); + +# The plan is to build a tree of all possible name combinations. +# While the tree is building note the longest 3 paths: +# +# Code below finds over 5 million unique combinations of names in @pokemon array +# It takes 2 min 30 secs to run on my Intel Next Unit of Computing with 16GB RAM, +# needs to be optimized. + +my %args = @ARGV; +my $verbose = $args{verbose} || 0; +my $test = $args{test} || 0; + +@pokemon = @test if ($test); +@pokemon = (sort @pokemon); + +my $tree = PokemonNameTree->new($verbose,@pokemon); +$tree->grow(); +$tree->announce_top3(); +exit; + +package PokemonNameTree; +sub new { + my ($class,$verbose,@name) = @_; + my $self = { + __root => { + name => "__root_node_of_pokemon_name_tree__", + kids => [], + }, + verbose => $verbose, + top3 => ['','',''], + top3_n => [0,0,0], + }; + bless $self, $class; + + # Init root node of tree with all names nodes + foreach (sort (@name)) { + push( @{ $self->{__root}{kids} }, $self->new_node($_) ); + } + return $self; +} + +sub new_node { + my ($self,$name) = @_; + return { + name => $name, + kids => [], + }; +} +sub grow { + my $self = shift; + # Begin tree growth at ply 1, where we initialized our name nodes + my @parents = qw(); + foreach my $node ( @{ $self->{__root}{kids} } ) { + $self->_grow(1,$node,@parents,$node->{name}); + } +} +sub _grow { + my ($self,$ply,$node,@parents) = @_; + + if ($self->{verbose}) { + # say every sequence found + print "/$_" foreach (@parents); + say " $ply"; + } else { + # otherwise build array 3 longest sequences + if ($ply >= @{$self->{top3_n}}[0]) { + unshift(@{$self->{top3}}, '/'.join('/',@parents)); + unshift(@{$self->{top3_n}}, $ply); + pop(@{$self->{top3}}); + pop(@{$self->{top3_n}}); + } + } + # Get every name node we were initialized with (i.e. all the names in @pokemon) + GROW: foreach ( @{ $self->{__root}{kids} } ) { + my $n = $_->{name}; + foreach my $p (@parents) { + # Don't grow tree by reusing any parent name, otherwise we get circular (infinite long) names + # For example, /exeggcute/exeggcute/exeggcute ... /exeggcute + next GROW if ($n eq $p); + } + my $last_char = substr($node->{name},-1,1); + my $next_char = substr($n, 0,1); + last if ($next_char gt $last_char); # No point in looking further since @pokemon is sorted alphabetically + if ($last_char eq $next_char) { + # Name match, create new node in tree, insert into kids of parent node + my $new_node = $self->new_node($n); + push( @{ $node->{kids} }, $new_node); + # Recurse depth first, note how $n is natrually added to @parents in the param pass + $self->_grow($ply+1,$new_node,@parents,$n); + } + } +} +sub announce_top3 { + my $self = shift; + unless ($self->{verbose}) { + foreach (0..2) { + say @{$self->{top3}}[$_], " ", @{$self->{top3_n}}[$_]; + } + } +} + +1; + +__END__ + +./time ch-1.pl verbose 1 > out.txt <==== verbose mode, lists all 5 million unique sequences +real 2m24.354s +user 2m22.564s +sys 0m1.052s + +grep 23 out.txt | wc -l +1248 <================================== 1,248 name paths tied for first place with 23 names in the sequence + +./ch-1.pl <============================= Quiet mode, just return top 3 longest sequences. Last 3 paths found get reported. +/machamp/pinsir/rufflet/trapinch/heatmor/remoraid/darmanitan/nosepass/starly/yamask/kricketune/exeggcute/emboar/relicanth/haxorus/simisear/registeel/landorus/seaking/girafarig/gabite/emolga/audino 23 +/machamp/pinsir/rufflet/trapinch/heatmor/remoraid/darmanitan/nosepass/starly/yamask/kricketune/exeggcute/emboar/registeel/landorus/simisear/relicanth/haxorus/seaking/girafarig/gabite/emolga/audino 23 +/machamp/pinsir/rufflet/trapinch/heatmor/remoraid/darmanitan/nosepass/starly/yamask/kricketune/emboar/relicanth/haxorus/simisear/registeel/landorus/seaking/girafarig/gabite/exeggcute/emolga/audino 23 + +./ch-1.pl test 1 verbose 1 <============ Lightweight test case +/bad 1 +/bad/dog 2 +/bad/dog/girl 3 +/bad/dog/girl/lost 4 +/bad/dog/girl/lost/tree 5 +/bad/dog/good 3 +/boy 1 +/cat 1 +/cat/tree 2 +/dog 1 +/dog/girl 2 +/dog/girl/lost 3 +/dog/girl/lost/tree 4 +/dog/good 2 +/fish 1 +/fish/house 2 +/girl 1 +/girl/lost 2 +/girl/lost/tree 3 +/good 1 +/good/dog 2 +/good/dog/girl 3 +/good/dog/girl/lost 4 +/good/dog/girl/lost/tree 5 +/house 1 +/lost 1 +/lost/tree 2 +/tree 1 + diff --git a/challenge-025/duane-powell/perl5/ch-2.pl b/challenge-025/duane-powell/perl5/ch-2.pl new file mode 100755 index 0000000000..546221d4d8 --- /dev/null +++ b/challenge-025/duane-powell/perl5/ch-2.pl @@ -0,0 +1,186 @@ +#!/usr/bin/perl +use Modern::Perl; + +# Create script to implement Chaocipher. +# http://www.chaocipher.com/ActualChaocipher/Chaocipher-Revealed-Algorithm.pdf +# I remained true to "The Algorithm Revealed" as described in the above .pdf + +my $p_msg = "WELLDONEISBETTERTHANWELLSAID"; +my $c_msg = "OAHQHCNYNXTSZJRRHJBYHQKSOUJY"; +my @disk_ct = split(//,"HXUCZVAMDSLKPEFJRIGTWOBNYQ"); +my @disk_pt = split(//,"PTLNBQDEOYSFAVZKGJRIHWXUMC"); + +usage() if (@ARGV % 2); +my %args = @ARGV; +my $text = $args{'--text'} || $p_msg; +my $verbose = $args{'--verbose'} || 0; +my $decrypt = $args{'--decrypt'} || 0; +my $key_gen = $args{'--key-gen'} || 0; +my $ct_key = $args{'--ct-key'} || 0; +my $pt_key = $args{'--pt-key'} || 0; + +$text = $c_msg if ($decrypt and $text eq $p_msg); + +@disk_ct = split(//,$ct_key) if ($ct_key); +@disk_pt = split(//,$pt_key) if ($pt_key); + +if ($key_gen) { + @disk_ct = key_gen(); + @disk_pt = key_gen(); + say "keys;"; + say "ct " . join("",@disk_ct); + say "pt " . join("",@disk_pt); + exit; +} + +chaocipher(); +exit; + +sub chaocipher { + my @output; + # Convert text to uppercase and remove all chars not in our alphabet + $text = uc($text); + $text =~ s/[^A-Z]//g; + foreach my $char (split(//,$text)) { + print join("",@disk_ct) . " " . join("",@disk_pt) . "\n" if ($verbose); + + if ($decrypt) { + my $i = char_pos($char, @disk_ct); + permutate_ct($i); + push(@output, permutate_pt($i)); + } else { + my $i = char_pos($char, @disk_pt); + push(@output, permutate_ct($i)); + permutate_pt($i); + } + } + print join("",@disk_ct) . " " . join("",@disk_pt) . "\n" if ($verbose); + say join("",@output); +} + +sub permutate_ct { + my ($c) = @_; + my ($zenith, $nadir, $hole) = (0,13,'.'); + # Steps from Chaocipher-Revealed-Algorithm.pdf + # 1. Rotate char to zenith + rotate(1, $c, \@disk_ct); + # 2. Extract char at $zenith+1 and fill with "hole" + my $extract = $disk_ct[$zenith+1]; + $disk_ct[$zenith+1] = $hole; + # 3-4. Move chars 1 postion left and replace hole with $extract + my @slice = (@disk_ct[$zenith+2 .. $nadir],$extract); + splice(@disk_ct, $zenith+1, $nadir, @slice); + return $disk_ct[0]; +} + +sub permutate_pt { + my ($p) = @_; + my ($zenith, $nadir, $hole) = (0,13,'.'); + # Steps from Chaocipher-Revealed-Algorithm.pdf + # 1-2. Rotate char to zenith + rotate(1, $p+1, \@disk_pt); + # 3. Extract char at $zenith+2 and fill with "hole" + my $extract = $disk_pt[$zenith+2]; + $disk_pt[$zenith+2] = $hole; + # 4-5 Move chars 1 postion left and replace hole with $extract + my @slice = (@disk_pt[$zenith+3 .. $nadir],$extract); + splice(@disk_pt, $zenith+2, $nadir-1, @slice); + return $disk_pt[25]; +} + +sub rotate { + my ($left,$clicks,$array) = @_; + for (1 .. $clicks) { + if ($left) { + push( @{$array}, shift @{$array} ); + } else { + unshift( @{$array}, pop @{$array} ); + } + } +} + +sub char_pos { + my ($char, @array) = @_; + my $p; + foreach my $i (0 .. 25) { + $p = $i; + last if ($array[$i] eq $char); + } + return $p; +} + +sub key_gen { + my @alphabet = ('A'..'Z'); + my @key; + while (@alphabet) { + push(@key, splice(@alphabet, int(rand @alphabet)-1, 1)); + } + return @key; +} + +sub usage { + print < Date: Thu, 12 Sep 2019 14:32:14 +0100 Subject: - Added solutions by Duane Powell. --- stats/pwc-current.json | 109 ++-- stats/pwc-language-breakdown-summary.json | 62 +-- stats/pwc-language-breakdown.json | 402 +++++++------- stats/pwc-leaders.json | 864 +++++++++++++++--------------- stats/pwc-summary-1-30.json | 58 +- stats/pwc-summary-31-60.json | 114 ++-- stats/pwc-summary-61-90.json | 106 ++-- stats/pwc-summary-91-120.json | 104 ++-- stats/pwc-summary.json | 36 +- 9 files changed, 935 insertions(+), 920 deletions(-) diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 5a69167443..07c5df4fb4 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,18 +1,53 @@ { - "tooltip" : { - "pointFormat" : "{point.name}: {point.y:f}
", - "followPointer" : 1, - "headerFormat" : "{series.name}
" + "legend" : { + "enabled" : 0 + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "subtitle" : { + "text" : "[Champions: 5] Last updated at 2019-09-12 13:31:41 GMT" + }, + "chart" : { + "type" : "column" }, "xAxis" : { "type" : "category" }, + "tooltip" : { + "followPointer" : 1, + "pointFormat" : "{point.name}: {point.y:f}
", + "headerFormat" : "{series.name}
" + }, "title" : { "text" : "Perl Weekly Challenge - 025" }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 + } + }, "drilldown" : { "series" : [ { + "id" : "Duane Powell", + "name" : "Duane Powell", + "data" : [ + [ + "Perl 5", + 2 + ] + ] + }, + { + "id" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld", "data" : [ [ "Perl 5", @@ -26,13 +61,9 @@ "Blog", 1 ] - ], - "id" : "Laurent Rosenfeld", - "name" : "Laurent Rosenfeld" + ] }, { - "name" : "Roger Bell West", - "id" : "Roger Bell West", "data" : [ [ "Perl 5", @@ -42,7 +73,9 @@ "Blog", 1 ] - ] + ], + "name" : "Roger Bell West", + "id" : "Roger Bell West" }, { "data" : [ @@ -51,12 +84,10 @@ 1 ] ], - "name" : "Simon Proctor", - "id" : "Simon Proctor" + "id" : "Simon Proctor", + "name" : "Simon Proctor" }, { - "id" : "Yet Ebreo", - "name" : "Yet Ebreo", "data" : [ [ "Perl 5", @@ -66,59 +97,43 @@ "Perl 6", 2 ] - ] + ], + "name" : "Yet Ebreo", + "id" : "Yet Ebreo" } ] }, - "subtitle" : { - "text" : "[Champions: 4] Last updated at 2019-09-11 09:26:47 GMT" - }, "series" : [ { + "colorByPoint" : 1, + "name" : "Perl Weekly Challenge - 025", "data" : [ { - "y" : 5, + "drilldown" : "Duane Powell", + "y" : 2, + "name" : "Duane Powell" + }, + { "drilldown" : "Laurent Rosenfeld", + "y" : 5, "name" : "Laurent Rosenfeld" }, { + "name" : "Roger Bell West", "y" : 3, - "drilldown" : "Roger Bell West", - "name" : "Roger Bell West" + "drilldown" : "Roger Bell West" }, { - "y" : 1, "drilldown" : "Simon Proctor", + "y" : 1, "name" : "Simon Proctor" }, { - "name" : "Yet Ebreo", "drilldown" : "Yet Ebreo", + "name" : "Yet Ebreo", "y" : 4 } - ], - "name" : "Perl Weekly Challenge - 025", - "colorByPoint" : 1 - } - ], - "legend" : { - "enabled" : 0 - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } - } - }, - "chart" : { - "type" : "column" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" + ] } - } + ] } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 1499944cf0..11fea6f0a8 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,25 +1,21 @@ { - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 - }, - "tooltip" : { - "pointFormat" : "{point.y:.0f}" - }, - "legend" : { - "enabled" : "false" - }, - "title" : { - "text" : "Perl Weekly Challenge Contributions - 2019" - }, "chart" : { "type" : "column" }, "series" : [ { - "name" : "Contributions", + "dataLabels" : { + "align" : "right", + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + }, + "y" : 10, + "color" : "#FFFFFF", + "enabled" : "true", + "format" : "{point.y:.0f}", + "rotation" : -90 + }, "data" : [ [ "Blog", @@ -27,37 +23,41 @@ ], [ "Perl 5", - 1010 + 1012 ], [ "Perl 6", 611 ] ], - "dataLabels" : { - "format" : "{point.y:.0f}", - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - }, - "y" : 10, - "color" : "#FFFFFF", - "enabled" : "true", - "align" : "right", - "rotation" : -90 - } + "name" : "Contributions" } ], "xAxis" : { + "type" : "category", "labels" : { "style" : { "fontSize" : "13px", "fontFamily" : "Verdana, sans-serif" } + } + }, + "title" : { + "text" : "Perl Weekly Challenge Contributions - 2019" + }, + "yAxis" : { + "title" : { + "text" : null }, - "type" : "category" + "min" : 0 + }, + "legend" : { + "enabled" : "false" }, "subtitle" : { - "text" : "Last updated at 2019-09-11 09:26:53 GMT" + "text" : "Last updated at 2019-09-12 13:32:06 GMT" + }, + "tooltip" : { + "pointFormat" : "{point.y:.0f}" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 513d086761..49628fc18e 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,172 +1,14 @@ { - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } - } - }, - "legend" : { - "enabled" : "false" - }, - "title" : { - "text" : "Perl Weekly Challenge Language" - }, - "tooltip" : { - "pointFormat" : "Challenge {point.name}: {point.y:f}
", - "followPointer" : "true", - "headerFormat" : "" - }, - "series" : [ - { - "colorByPoint" : "true", - "name" : "Perl Weekly Challenge Languages", - "data" : [ - { - "y" : 132, - "name" : "#001", - "drilldown" : "001" - }, - { - "y" : 104, - "name" : "#002", - "drilldown" : "002" - }, - { - "drilldown" : "003", - "y" : 66, - "name" : "#003" - }, - { - "drilldown" : "004", - "name" : "#004", - "y" : 86 - }, - { - "y" : 66, - "name" : "#005", - "drilldown" : "005" - }, - { - "drilldown" : "006", - "name" : "#006", - "y" : 47 - }, - { - "drilldown" : "007", - "name" : "#007", - "y" : 55 - }, - { - "y" : 68, - "name" : "#008", - "drilldown" : "008" - }, - { - "y" : 66, - "name" : "#009", - "drilldown" : "009" - }, - { - "y" : 60, - "name" : "#010", - "drilldown" : "010" - }, - { - "drilldown" : "011", - "name" : "#011", - "y" : 78 - }, - { - "y" : 83, - "name" : "#012", - "drilldown" : "012" - }, - { - "y" : 76, - "name" : "#013", - "drilldown" : "013" - }, - { - "y" : 95, - "name" : "#014", - "drilldown" : "014" - }, - { - "drilldown" : "015", - "name" : "#015", - "y" : 93 - }, - { - "drilldown" : "016", - "y" : 66, - "name" : "#016" - }, - { - "y" : 79, - "name" : "#017", - "drilldown" : "017" - }, - { - "drilldown" : "018", - "y" : 76, - "name" : "#018" - }, - { - "name" : "#019", - "y" : 95, - "drilldown" : "019" - }, - { - "drilldown" : "020", - "y" : 95, - "name" : "#020" - }, - { - "name" : "#021", - "y" : 67, - "drilldown" : "021" - }, - { - "drilldown" : "022", - "name" : "#022", - "y" : 63 - }, - { - "y" : 91, - "name" : "#023", - "drilldown" : "023" - }, - { - "y" : 66, - "name" : "#024", - "drilldown" : "024" - }, - { - "drilldown" : "025", - "name" : "#025", - "y" : 13 - } - ] - } - ], - "chart" : { - "type" : "column" - }, "yAxis" : { "title" : { "text" : "Total Solutions" } }, - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-09-11 09:26:53 GMT" - }, "drilldown" : { "series" : [ { "name" : "001", + "id" : "001", "data" : [ [ "Perl 5", @@ -180,10 +22,11 @@ "Blog", 11 ] - ], - "id" : "001" + ] }, { + "name" : "002", + "id" : "002", "data" : [ [ "Perl 5", @@ -197,11 +40,11 @@ "Blog", 9 ] - ], - "id" : "002", - "name" : "002" + ] }, { + "name" : "003", + "id" : "003", "data" : [ [ "Perl 5", @@ -215,11 +58,10 @@ "Blog", 8 ] - ], - "id" : "003", - "name" : "003" + ] }, { + "id" : "004", "name" : "004", "data" : [ [ @@ -234,12 +76,11 @@ "Blog", 9 ] - ], - "id" : "004" + ] }, { - "name" : "005", "id" : "005", + "name" : "005", "data" : [ [ "Perl 5", @@ -256,7 +97,6 @@ ] }, { - "id" : "006", "data" : [ [ "Perl 5", @@ -271,10 +111,10 @@ 6 ] ], - "name" : "006" + "name" : "006", + "id" : "006" }, { - "name" : "007", "data" : [ [ "Perl 5", @@ -289,11 +129,12 @@ 9 ] ], - "id" : "007" + "id" : "007", + "name" : "007" }, { - "name" : "008", "id" : "008", + "name" : "008", "data" : [ [ "Perl 5", @@ -310,7 +151,6 @@ ] }, { - "id" : "009", "data" : [ [ "Perl 5", @@ -325,10 +165,12 @@ 12 ] ], + "id" : "009", "name" : "009" }, { "id" : "010", + "name" : "010", "data" : [ [ "Perl 5", @@ -342,10 +184,11 @@ "Blog", 11 ] - ], - "name" : "010" + ] }, { + "name" : "011", + "id" : "011", "data" : [ [ "Perl 5", @@ -359,9 +202,7 @@ "Blog", 9 ] - ], - "id" : "011", - "name" : "011" + ] }, { "data" : [ @@ -382,6 +223,7 @@ "name" : "012" }, { + "name" : "013", "id" : "013", "data" : [ [ @@ -396,10 +238,10 @@ "Blog", 13 ] - ], - "name" : "013" + ] }, { + "id" : "014", "name" : "014", "data" : [ [ @@ -414,11 +256,9 @@ "Blog", 14 ] - ], - "id" : "014" + ] }, { - "id" : "015", "data" : [ [ "Perl 5", @@ -433,9 +273,11 @@ 15 ] ], + "id" : "015", "name" : "015" }, { + "name" : "016", "id" : "016", "data" : [ [ @@ -450,8 +292,7 @@ "Blog", 12 ] - ], - "name" : "016" + ] }, { "data" : [ @@ -473,6 +314,7 @@ }, { "id" : "018", + "name" : "018", "data" : [ [ "Perl 5", @@ -486,11 +328,9 @@ "Blog", 14 ] - ], - "name" : "018" + ] }, { - "id" : "019", "data" : [ [ "Perl 5", @@ -505,11 +345,12 @@ 13 ] ], + "id" : "019", "name" : "019" }, { - "name" : "020", "id" : "020", + "name" : "020", "data" : [ [ "Perl 5", @@ -526,6 +367,8 @@ ] }, { + "name" : "021", + "id" : "021", "data" : [ [ "Perl 5", @@ -539,12 +382,9 @@ "Blog", 10 ] - ], - "id" : "021", - "name" : "021" + ] }, { - "id" : "022", "data" : [ [ "Perl 5", @@ -559,10 +399,10 @@ 10 ] ], + "id" : "022", "name" : "022" }, { - "name" : "023", "data" : [ [ "Perl 5", @@ -577,10 +417,10 @@ 12 ] ], - "id" : "023" + "id" : "023", + "name" : "023" }, { - "id" : "024", "data" : [ [ "Perl 5", @@ -595,14 +435,14 @@ 9 ] ], + "id" : "024", "name" : "024" }, { - "name" : "025", "data" : [ [ "Perl 5", - 6 + 8 ], [ "Perl 6", @@ -613,10 +453,170 @@ 2 ] ], + "name" : "025", "id" : "025" } ] }, + "title" : { + "text" : "Perl Weekly Challenge Language" + }, + "tooltip" : { + "pointFormat" : "Challenge {point.name}: {point.y:f}
", + "followPointer" : "true", + "headerFormat" : "" + }, + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-09-12 13:32:06 GMT" + }, + "legend" : { + "enabled" : "false" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } + }, + "chart" : { + "type" : "column" + }, + "series" : [ + { + "name" : "Perl Weekly Challenge Languages", + "colorByPoint" : "true", + "data" : [ + { + "name" : "#001", + "y" : 132, + "drilldown" : "001" + }, + { + "drilldown" : "002", + "y" : 104, + "name" : "#002" + }, + { + "drilldown" : "003", + "y" : 66, + "name" : "#003" + }, + { + "drilldown" : "004", + "y" : 86, + "name" : "#004" + }, + { + "y" : 66, + "name" : "#005", + "drilldown" : "005" + }, + { + "y" : 47, + "name" : "#006", + "drilldown" : "006" + }, + { + "name" : "#007", + "y" : 55, + "drilldown" : "007" + }, + { + "y" : 68, + "name" : "#008", + "drilldown" : "008" + }, + { + "drilldown" : "009", + "y" : 66, + "name" : "#009" + }, + { + "drilldown" : "010", + "name" : "#010", + "y" : 60 + }, + { + "y" : 78, + "name" : "#011", + "drilldown" : "011" + }, + { + "drilldown" : "012", + "y" : 83, + "name" : "#012" + }, + { + "drilldown" : "013", + "y" : 76, + "name" : "#013" + }, + { + "name" : "#014", + "y" : 95, + "drilldown" : "014" + }, + { + "name" : "#015", + "y" : 93, + "drilldown" : "015" + }, + { + "y" : 66, + "name" : "#016", + "drilldown" : "016" + }, + { + "name" : "#017", + "y" : 79, + "drilldown" : "017" + }, + { + "y" : 76, + "name" : "#018", + "drilldown" : "018" + }, + { + "y" : 95, + "name" : "#019", + "drilldown" : "019" + }, + { + "y" : 95, + "name" : "#020", + "drilldown" : "020" + }, + { + "name" : "#021", + "y" : 67, + "drilldown" : "021" + }, + { + "name" : "#022", + "y" : 63, + "drilldown" : "022" + }, + { + "drilldown" : "023", + "name" : "#023", + "y" : 91 + }, + { + "drilldown" : "024", + "y" : 66, + "name" : "#024" + }, + { + "drilldown" : "025", + "y" : 15, + "name" : "#025" + } + ] + } + ], "xAxis" : { "type" : "category" } diff --git a/stats/pwc-leaders.json b/stats/pwc-leaders.json index 07c984e5a8..40150e3f12 100644 --- a/stats/pwc-leaders.json +++ b/stats/pwc-leaders.json @@ -1,12 +1,270 @@ { - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } + "legend" : { + "enabled" : "false" + }, + "series" : [ + { + "data" : [ + { + "drilldown" : "Laurent Rosenfeld", + "name" : "#1: Laurent Rosenfeld", + "y" : 296 + }, + { + "name" : "#2: Joelle Maslak", + "drilldown" : "Joelle Maslak", + "y" : 258 + }, + { + "y" : 212, + "name" : "#3: Jaldhar H. Vyas", + "drilldown" : "Jaldhar H. Vyas" + }, + { + "y" : 180, + "drilldown" : "Ruben Westerberg", + "name" : "#4: Ruben Westerberg" + }, + { + "y" : 156, + "drilldown" : "Adam Russell", + "name" : "#5: Adam Russell" + }, + { + "name" : "#6: Athanasius", + "drilldown" : "Athanasius", + "y" : 156 + }, + { + "name" : "#7: Arne Sommer", + "drilldown" : "Arne Sommer", + "y" : 150 + }, + { + "y" : 132, + "name" : "#8: Kian-Meng Ang", + "drilldown" : "Kian-Meng Ang" + }, + { + "drilldown" : "E. Choroba", + "name" : "#9: E. Choroba", + "y" : 118 + }, + { + "name" : "#10: Simon Proctor", + "drilldown" : "Simon Proctor", + "y" : 106 + }, + { + "y" : 96, + "name" : "#11: Francis Whittle", + "drilldown" : "Francis Whittle" + }, + { + "drilldown" : "Andrezgz", + "name" : "#12: Andrezgz", + "y" : 92 + }, + { + "name" : "#13: Dave Jacoby", + "drilldown" : "Dave Jacoby", + "y" : 90 + }, + { + "name" : "#14: Roger Bell West", + "drilldown" : "Roger Bell West", + "y" : 84 + }, + { + "y" : 82, + "drilldown" : "Duncan C. White", + "name" : "#15: Duncan C. White" + }, + { + "y" : 80, + "drilldown" : "Feng Chang", + "name" : "#16: Feng Chang" + }, + { + "name" : "#17: Daniel Mantovani", + "drilldown" : "Daniel Mantovani", + "y" : 78 + }, + { + "y" : 74, + "name" : "#18: Steven Wilson", + "drilldown" : "Steven Wilson" + }, + { + "y" : 72, + "drilldown" : "Gustavo Chaves", + "name" : "#19: Gustavo Chaves" + }, + { + "y" : 70, + "name" : "#20: Yozen Hernandez", + "drilldown" : "Yozen Hernandez" + }, + { + "drilldown" : "Guillermo Ramos", + "name" : "#21: Guillermo Ramos", + "y" : 60 + }, + { + "name" : "#22: Mark Senn", + "drilldown" : "Mark Senn", + "y" : 58 + }, + { + "name" : "#23: Jo Christian Oterhals", + "drilldown" : "Jo Christian Oterhals", + "y" : 56 + }, + { + "y" : 54, + "drilldown" : "Yet Ebreo", + "name" : "#24: Yet Ebreo" + }, + { + "drilldown" : "Randy Lauen", + "name" : "#25: Randy Lauen", + "y" : 52 + }, + { + "y" : 50, + "drilldown" : "Kevin Colyer", + "name" : "#26: Kevin Colyer" + }, + { + "name" : "#27: Duane Powell", + "drilldown" : "Duane Powell", + "y" : 46 + }, + { + "drilldown" : "Ozzy", + "name" : "#28: Ozzy", + "y" : 46 + }, + { + "drilldown" : "Dr James A. Smith", + "name" : "#29: Dr James A. Smith", + "y" : 44 + }, + { + "y" : 42, + "name" : "#30: Lubos Kolouch", + "drilldown" : "Lubos Kolouch" + }, + { + "name" : "#31: Veesh Goldman", + "drilldown" : "Veesh Goldman", + "y" : 42 + }, + { + "name" : "#32: Noud", + "drilldown" : "Noud", + "y" : 40 + }, + { + "drilldown" : "Nick Logan", + "name" : "#33: Nick Logan", + "y" : 32 + }, + { + "name" : "#34: Lars Balker", + "drilldown" : "Lars Balker", + "y" : 28 + }, + { + "y" : 24, + "name" : "#35: Jaime Corchado", + "drilldown" : "Jaime Corchado" + }, + { + "drilldown" : "Maxim Nechaev", + "name" : "#36: Maxim Nechaev", + "y" : 24 + }, + { + "name" : "#37: Alicia Bielsa", + "drilldown" : "Alicia Bielsa", + "y" : 22 + }, + { + "drilldown" : "Doug Schrag", + "name" : "#38: Doug Schrag", + "y" : 20 + }, + { + "y" : 18, + "drilldown" : "Dave Cross", + "name" : "#39: Dave Cross" + }, + { + "y" : 18, + "name" : "#40: Neil Bowers", + "drilldown" : "Neil Bowers" + }, + { + "name" : "#41: Walt Mankowski", + "drilldown" : "Walt Mankowski", + "y" : 18 + }, + { + "drilldown" : "Mark Anderson", + "name" : "#42: Mark Anderson", + "y" : 16 + }, + { + "name" : "#43: Pete Houston", + "drilldown" : "Pete Houston", + "y" : 16 + }, + { + "name" : "#44: Robert Gratza", + "drilldown" : "Robert Gratza", + "y" : 16 + }, + { + "y" : 14, + "name" : "#45: John Barrett", + "drilldown" : "John Barrett" + }, + { + "name" : "#46: Khalid", + "drilldown" : "Khalid", + "y" : 14 + }, + { + "name" : "#47: Aaron Sherman", + "drilldown" : "Aaron Sherman", + "y" : 12 + }, + { + "drilldown" : "Donald Hunter", + "name" : "#48: Donald Hunter", + "y" : 12 + }, + { + "name" : "#49: Kivanc Yazan", + "drilldown" : "Kivanc Yazan", + "y" : 12 + }, + { + "y" : 12, + "name" : "#50: Maxim Kolodyazhny", + "drilldown" : "Maxim Kolodyazhny" + } + ], + "name" : "Perl Weekly Challenge Leaders", + "colorByPoint" : "true" } + ], + "xAxis" : { + "type" : "category" + }, + "chart" : { + "type" : "column" }, "yAxis" : { "title" : { @@ -16,16 +274,33 @@ "title" : { "text" : "Perl Weekly Challenge Leaders (TOP 50)" }, + "subtitle" : { + "text" : "Click the columns to drilldown the score breakdown. Last updated at 2019-09-12 13:32:00 GMT" + }, + "tooltip" : { + "pointFormat" : "{point.name}: {point.y:f}
", + "followPointer" : "true", + "headerFormat" : "" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } + }, "drilldown" : { "series" : [ { "data" : [ [ - "Perl 6", + "Blog", 49 ], [ - "Blog", + "Perl 6", 49 ], [ @@ -33,19 +308,19 @@ 50 ] ], - "id" : "Laurent Rosenfeld", - "name" : "Laurent Rosenfeld" + "name" : "Laurent Rosenfeld", + "id" : "Laurent Rosenfeld" }, { "data" : [ - [ - "Perl 6", - 62 - ], [ "Blog", 5 ], + [ + "Perl 6", + 62 + ], [ "Perl 5", 62 @@ -55,7 +330,6 @@ "name" : "Joelle Maslak" }, { - "id" : "Jaldhar H. Vyas", "data" : [ [ "Perl 5", @@ -70,77 +344,79 @@ 47 ] ], - "name" : "Jaldhar H. Vyas" + "name" : "Jaldhar H. Vyas", + "id" : "Jaldhar H. Vyas" }, { + "id" : "Ruben Westerberg", + "name" : "Ruben Westerberg", "data" : [ [ - "Perl 5", + "Perl 6", 45 ], [ - "Perl 6", + "Perl 5", 45 ] - ], - "id" : "Ruben Westerberg", - "name" : "Ruben Westerberg" + ] }, { - "name" : "Adam Russell", "data" : [ [ - "Perl 5", - 49 + "Blog", + 26 ], [ "Perl 6", 3 ], [ - "Blog", - 26 + "Perl 5", + 49 ] ], + "name" : "Adam Russell", "id" : "Adam Russell" }, { - "id" : "Athanasius", "data" : [ [ "Perl 5", 50 ], - [ - "Blog", - 3 - ], [ "Perl 6", 25 + ], + [ + "Blog", + 3 ] ], + "id" : "Athanasius", "name" : "Athanasius" }, { - "name" : "Arne Sommer", "data" : [ [ - "Perl 5", - 3 + "Blog", + 24 ], [ "Perl 6", 48 ], [ - "Blog", - 24 + "Perl 5", + 3 ] ], + "name" : "Arne Sommer", "id" : "Arne Sommer" }, { + "id" : "Kian-Meng Ang", "name" : "Kian-Meng Ang", "data" : [ [ @@ -151,10 +427,11 @@ "Perl 5", 38 ] - ], - "id" : "Kian-Meng Ang" + ] }, { + "name" : "E. Choroba", + "id" : "E. Choroba", "data" : [ [ "Perl 5", @@ -164,31 +441,29 @@ "Blog", 19 ] - ], - "id" : "E. Choroba", - "name" : "E. Choroba" + ] }, { - "id" : "Simon Proctor", "data" : [ [ "Perl 5", 5 ], - [ - "Blog", - 7 - ], [ "Perl 6", 41 + ], + [ + "Blog", + 7 ] ], - "name" : "Simon Proctor" + "name" : "Simon Proctor", + "id" : "Simon Proctor" }, { - "name" : "Francis Whittle", "id" : "Francis Whittle", + "name" : "Francis Whittle", "data" : [ [ "Perl 6", @@ -201,63 +476,64 @@ ] }, { - "id" : "Andrezgz", "data" : [ [ "Perl 5", 46 ] ], + "id" : "Andrezgz", "name" : "Andrezgz" }, { + "name" : "Dave Jacoby", "id" : "Dave Jacoby", "data" : [ [ - "Perl 6", - 1 + "Perl 5", + 26 ], [ "Blog", 18 ], [ - "Perl 5", - 26 + "Perl 6", + 1 ] - ], - "name" : "Dave Jacoby" + ] }, { "data" : [ [ - "Perl 5", - 24 + "Perl 6", + 9 ], [ "Blog", 9 ], [ - "Perl 6", - 9 + "Perl 5", + 24 ] ], - "id" : "Roger Bell West", - "name" : "Roger Bell West" + "name" : "Roger Bell West", + "id" : "Roger Bell West" }, { - "name" : "Duncan C. White", "data" : [ [ "Perl 5", 41 ] ], - "id" : "Duncan C. White" + "id" : "Duncan C. White", + "name" : "Duncan C. White" }, { "id" : "Feng Chang", + "name" : "Feng Chang", "data" : [ [ "Perl 5", @@ -267,46 +543,45 @@ "Perl 6", 21 ] - ], - "name" : "Feng Chang" + ] }, { - "name" : "Daniel Mantovani", "data" : [ [ "Perl 5", 39 ] ], + "name" : "Daniel Mantovani", "id" : "Daniel Mantovani" }, { - "name" : "Steven Wilson", "id" : "Steven Wilson", + "name" : "Steven Wilson", "data" : [ - [ - "Perl 5", - 34 - ], [ "Blog", 3 + ], + [ + "Perl 5", + 34 ] ] }, { "data" : [ - [ - "Blog", - 4 - ], [ "Perl 5", 32 + ], + [ + "Blog", + 4 ] ], - "id" : "Gustavo Chaves", - "name" : "Gustavo Chaves" + "name" : "Gustavo Chaves", + "id" : "Gustavo Chaves" }, { "data" : [ @@ -324,16 +599,15 @@ }, { "id" : "Guillermo Ramos", + "name" : "Guillermo Ramos", "data" : [ [ "Perl 5", 30 ] - ], - "name" : "Guillermo Ramos" + ] }, { - "name" : "Mark Senn", "data" : [ [ "Blog", @@ -344,25 +618,26 @@ 19 ] ], - "id" : "Mark Senn" + "id" : "Mark Senn", + "name" : "Mark Senn" }, { - "name" : "Jo Christian Oterhals", - "id" : "Jo Christian Oterhals", "data" : [ [ - "Perl 5", - 6 + "Perl 6", + 15 ], [ "Blog", 7 ], [ - "Perl 6", - 15 + "Perl 5", + 6 ] - ] + ], + "id" : "Jo Christian Oterhals", + "name" : "Jo Christian Oterhals" }, { "name" : "Yet Ebreo", @@ -372,18 +647,19