From 2e5d277c45d57539c366a711dfa675831d7a81f5 Mon Sep 17 00:00:00 2001 From: dcw Date: Fri, 17 May 2019 17:21:15 +0100 Subject: duncan white's challenge 8 solutions --- challenge-008/duncan-c-white/README | 24 ++++++------ challenge-008/duncan-c-white/perl5/ch-1.pl | 55 ++++++++++++++++++++++++++++ challenge-008/duncan-c-white/perl5/ch-2.pl | 59 ++++++++++++++++++++++++++++++ 3 files changed, 127 insertions(+), 11 deletions(-) create mode 100755 challenge-008/duncan-c-white/perl5/ch-1.pl create mode 100755 challenge-008/duncan-c-white/perl5/ch-2.pl diff --git a/challenge-008/duncan-c-white/README b/challenge-008/duncan-c-white/README index fb3a863c80..7adef4a715 100644 --- a/challenge-008/duncan-c-white/README +++ b/challenge-008/duncan-c-white/README @@ -1,14 +1,16 @@ -Challenge 1: "Create a script which takes a list of numbers from -command line and print the same in the compact form. For example, if -you pass 1,2,3,4,9,10,14,15,16 then it should print the compact form -like 1-4,9,10,14-16.." +Challenge 1: "Write a script that computes the first five perfect +numbers. A perfect number is an integer that is the sum of its positive +proper divisors (all divisors except itself). Please check Wiki for +more information. First 4 are 6, 28, 496 and 8128" -Quite simple and dull problem. But ok, let's have a go. +My notes: Cute little problem, let's have a go. -Challenge 2: "Create a script to calculate Ramanujan's constant with at -least 32 digits of precision." -Never heard of this constant, seems to be e^(pi*sqrt(163)), which is -"very nearly an integer", I don't particularly care about abtruse mathematical -formulae. But ok, Perl's built in module biggrat will let you do this anyway, -specifying accuracy 32; see ch-2.sh for the oneliner. +Challenge 2: "Write a function, center, whose argument is a list of +strings, which will be lines of text. The function should insert spaces +at the beginning of the lines of text so that if they were printed, +the text would be centered, and return the modified lines." + +My notes: + +Another well-specified problem:-) diff --git a/challenge-008/duncan-c-white/perl5/ch-1.pl b/challenge-008/duncan-c-white/perl5/ch-1.pl new file mode 100755 index 0000000000..5dcc9cfc12 --- /dev/null +++ b/challenge-008/duncan-c-white/perl5/ch-1.pl @@ -0,0 +1,55 @@ +#!/usr/bin/perl + +# Challenge 1: "Write a script that computes the first five perfect +# numbers. A perfect number is an integer that is the sum of its positive +# proper divisors (all divisors except itself). Please check Wiki for +# more information. First 4 are 6, 28, 496 and 8128" + + +use strict; +use warnings; +use Function::Parameters; +use Data::Dumper; + +die "Usage: ch-1.pl [N|5]]\n" if @ARGV > 1; + + +# +# my $isprime = is_prime( $x ); +# Return true iff the integer $x is prime. +fun is_prime( $x ) +{ + my $limit = int(sqrt($x)); + #print "is_prime($x): limit=$limit\n"; + foreach my $i (2..$limit) + { + return 0 if $x % $i == 0; + } + return 1; +} + + + + +my $limit = shift // 5; + +for( my $p=2, my $found=0; $found<$limit; $p++ ) +{ + if( is_prime( $p ) ) + { + my $twop1 = 2**($p-1); + my $twop = 2*$twop1; + my $twopminus1 = $twop-1; + if( is_prime( $twopminus1 ) ) + { + print "$p is prime and 2^$p-1 ($twopminus1) is prime\n"; + my $perfect = ($twop-1) * $twop1; + print " so $perfect (2^$p-1 * 2^(p-1) is perfect\n"; + $found++; + } + else + { + print "$p is prime but 2^$p-1 ($twopminus1) is not prime\n"; + } + } +} diff --git a/challenge-008/duncan-c-white/perl5/ch-2.pl b/challenge-008/duncan-c-white/perl5/ch-2.pl new file mode 100755 index 0000000000..d813df3174 --- /dev/null +++ b/challenge-008/duncan-c-white/perl5/ch-2.pl @@ -0,0 +1,59 @@ +#!/usr/bin/perl + +# Challenge 2: "Write a function, center, whose argument is a list of +# strings, which will be lines of text. The function should insert spaces +# at the beginning of the lines of text so that if they were printed, +# the text would be centered, and return the modified lines." + +use strict; +use warnings; +use Function::Parameters; +use File::Slurp; +use Data::Dumper; + +die "Usage: ch-2.pl [DATAFILE]\n" if @ARGV > 1; +my $datafilename = shift // $0; + + +# +# my $maxlen = maxlength( @data ); +# Find and return the maximum length of any string +# element of @data. +# +fun maxlength( @data ) +{ + my $maxlen = 0; + foreach my $s (@data) + { + my $l = length($s); + $maxlen = $l if $l>$maxlen; + } + return $maxlen; +} + + +# +# my @centred = center( @data ); +# Center every element of @data, building +# and returning a new @centred array, in +# which every element is the original element +# of @data, padded with leading spaces to centere it. +# +fun center( @data ) +{ + my @result; + my $maxlen = maxlength( @data ); + foreach my $s (@data) + { + my $l = length($s); + my $pad = ($maxlen - $l)/2; + my $centred = (' 'x$pad).$s; + push @result, $centred; + } + return @result; +} + + +my @data = read_file( $datafilename ); +my @centered = center( @data ); +map { print } @centered; -- cgit From fa2ae9a1c4984aba9c6c070ff3a1459f175d72d3 Mon Sep 17 00:00:00 2001 From: dcw Date: Sun, 2 Jun 2019 20:32:02 +0100 Subject: committed my belated challenge 010 solutions --- challenge-010/duncan-c-white/README | 98 ++++++++++++++ challenge-010/duncan-c-white/perl5/ch-1.pl | 116 ++++++++++++++++ challenge-010/duncan-c-white/perl5/ch-2.pl | 204 +++++++++++++++++++++++++++++ 3 files changed, 418 insertions(+) create mode 100644 challenge-010/duncan-c-white/README create mode 100755 challenge-010/duncan-c-white/perl5/ch-1.pl create mode 100755 challenge-010/duncan-c-white/perl5/ch-2.pl diff --git a/challenge-010/duncan-c-white/README b/challenge-010/duncan-c-white/README new file mode 100644 index 0000000000..e277d3b17b --- /dev/null +++ b/challenge-010/duncan-c-white/README @@ -0,0 +1,98 @@ +Challenge 1: "Write a script to encode/decode Roman numerals. For example, +given Roman numeral CCXLVI, it should return 246. Similarly, for decimal +number 39, it should return XXXIX." + +My notes: That's a nice problem, let's have a go. + + +Challenge 2: "Write a to find Jaro-Winkler distance between two strings." + +My notes: + +WTF is Jaro-Winkler, read wikipedia page, well Jaro-Winkler is a simple prefix +adjustment to the Jaro distance, but the wikipedia page explaining Jaro distances +is not very clear - it describes it in terms of matched characters and transposed +characters, but it's description of matching within a range, and of how to count +transposed characters is almost completely unclear. I couldn't write code based +on such a poor description! + +But googling further, Rosetta Stone had various implementations in various +languages (including C and Perl), which clarifies the terribly unclear wikipedia +entry. + +It appears that (confirmed by the code people have actually written) +matching should happen as follows, shown by the Rosetta Stone C implementation: + + // length of the strings + int str1_len = strlen(str1); + int str2_len = strlen(str2); + + // if both strings are empty return 1 + // if only one of the strings is empty return 0 + if (str1_len == 0) return str2_len == 0 ? 1.0 : 0.0; + + // max distance between two chars to be considered matching + int match_distance = (int) max(str1_len, str2_len)/2 - 1; + + // arrays of bools that signify if that char in the matching string has a match + int *str1_matches = calloc(str1_len, sizeof(int)); + int *str2_matches = calloc(str2_len, sizeof(int)); + + // number of matches and transpositions + double matches = 0.0; + + // find the matches + for (int i = 0; i < str1_len; i++) { + // start and end take into account the match distance + int start = max(0, i - match_distance); + int end = min(i + match_distance + 1, str2_len); + + for (int k = start; k < end; k++) { + // if str2 already has a match continue + if (str2_matches[k]) continue; + // if str1 and str2 are not + if (str1[i] != str2[k]) continue; + // otherwise assume there is a match + str1_matches[i] = TRUE; + str2_matches[k] = TRUE; + matches++; + break; + } + } + + // if there are no matches return 0 + if (matches == 0) { + free(str1_matches); + free(str2_matches); + return 0.0; + } + + // count transpositions + double transpositions = 0.0; + int k = 0; + for (int i = 0; i < str1_len; i++) { + // if there are no matches in str1 continue + if (!str1_matches[i]) continue; + // while there is no match in str2 increment k + while (!str2_matches[k]) k++; + // increment transpositions + if (str1[i] != str2[k]) transpositions++; + k++; + } + + // divide the number of transpositions by two as per the algorithm specs + transpositions /= 2.0; + + // free the allocated memory + free(str1_matches); + free(str2_matches); + + // return the Jaro distance + return ((matches / str1_len) + + (matches / str2_len) + + ((matches - transpositions) / matches)) / 3.0; + +Ok, I basically understand it now. Transposed characters are matching characters +that are diferent, eg TH vs HT + +So I'll have a go anyway. diff --git a/challenge-010/duncan-c-white/perl5/ch-1.pl b/challenge-010/duncan-c-white/perl5/ch-1.pl new file mode 100755 index 0000000000..b981956516 --- /dev/null +++ b/challenge-010/duncan-c-white/perl5/ch-1.pl @@ -0,0 +1,116 @@ +#!/usr/bin/perl + +# Challenge 1: "Write a script to encode/decode Roman numerals. For example, +# given Roman numeral CCXLVI, it should return 246. Similarly, for decimal +# number 39, it should return XXXIX." + + +use strict; +use warnings; +use Function::Parameters; +use Data::Dumper; + + +# +# my $roman = oneroman( $digit, $one, $five, $ten ); +# Given a single $digit (0..9), build and return +# the roman-numeral equivalent, using $one, $five and $ten, +# the roman-numeral equivalents of 1, 5 and 10. If those were +# 'I', 'V' and 'X', the roman-numerals equivalents of each digit +# are '', I, II, III, IV, V, VI, VII, VIII, IX +# +fun oneroman( $digit, $one, $five, $ten ) +{ + return $one x $digit if $digit<4; # 0..3 + return "$one$five" if $digit==4; # 4 + return $five.($one x ($digit-5)) if $digit<9; # 5..9 + return "$one$ten"; # 9 +} + + +# +# my $roman = toroman( $n ); +# Given $n, a positive integer from 1..3999, +# convert it to a roman-numeral string, eg 246 => CCXLVI +# +fun toroman( $n ) +{ + die "toroman: $n should be 1..3999\n" if $n<1 || $n>3999; + + my $roman = ''; + + # deal with the thousands.. + my $m = int($n/1000); + $roman = ( 'M' x $m ); + $n %= 1000; + + # deal with the hundreds.. + $roman .= oneroman( int($n/100), 'C', 'D', 'M' ); + $n %= 100; + + # deal with the tens.. + $roman .= oneroman( int($n/10), 'X', 'L', 'C' ); + $n %= 10; + + # deal with the ones.. + $roman .= oneroman( $n, 'I', 'V', 'X' ); + + return $roman; +} + + + +# +# my $n = fromroman( $roman ); +# Given $roman, a well-formed roman-numeral string, +# convert it to an integer. +# +fun fromroman( $roman ) +{ + my $orig = $roman; + my $result = 0; + $result += 1000 while $roman =~ s/^M//; + $result += 900 if $roman =~ s/^CM//; + $result += 500 if $roman =~ s/^D//; + $result += 400 if $roman =~ s/^CD//; + $result += 100 while $roman =~ s/^C//; + $result += 90 if $roman =~ s/^XC//; + $result += 50 if $roman =~ s/^L//; + $result += 40 if $roman =~ s/^XL//; + $result += 10 while $roman =~ s/^X//; + $result += 9 if $roman =~ s/^IX//; + $result += 5 if $roman =~ s/^V//; + $result += 4 if $roman =~ s/^IV//; + $result += 1 while $roman =~ s/^I//; + die "fromroman: roman '$orig' not empty at end, $roman left over\n" + if $roman; + return $result; +} + +die "Usage: ch-1.pl [N|ROMAN|TEST] [N|ROMAN|TEST]...\n" if @ARGV == 0; +foreach my $val (@ARGV) +{ + if( $val =~ /\d/ ) + { + my $roman = toroman( $val ); + print "toroman($val) = $roman\n"; + } + elsif( $val eq "TEST" ) + { + # check it works: try converting every number to roman, and + # then back again, and checking that you end up with... + # "the number you first thought of":-). + foreach my $n (1..3999) + { + my $roman = toroman( $n ); + my $n2 = fromroman( $roman ); + die "error: n=$n, roman=$roman, n2=$n2\n" unless $n==$n2; + print "toroman($n)=$roman, and fromroman($roman)=$n\n"; + } + } + else + { + my $n = fromroman( $val ); + print "fromroman($val) = $n\n"; + } +} diff --git a/challenge-010/duncan-c-white/perl5/ch-2.pl b/challenge-010/duncan-c-white/perl5/ch-2.pl new file mode 100755 index 0000000000..014d2cdf7d --- /dev/null +++ b/challenge-010/duncan-c-white/perl5/ch-2.pl @@ -0,0 +1,204 @@ +#!/usr/bin/perl + +# Challenge 2: "Write a to find Jaro-Winkler distance between two strings." +# +# My notes: +# +# WTF is Jaro-Winkler, read wikipedia page, well Jaro-Winkler is a simple prefix +# adjustment to the Jaro distance, but the wikipedia page explaining Jaro distances +# is not very clear - it describes it in terms of matched characters and transposed +# characters, but it's description of matching within a range, and of how to count +# transposed characters is almost completely unclear. I couldn't write code based +# on such a poor description! +# +# But googling further, Rosetta Stone had various implementations in various languages +# (including C and Perl), which clarifies the terribly unclear wikipedia entry. +# Matching involves the same char at pos i in str1, and somewhere within match_distance +# of pos i in str2. All matched characters are marked. +# +# Transpositions are a second phase, looking at all matched characters - if the next +# pair of matched characters in str1 and str2 are different, that's a transposition. +# +# Ok, I basically understand it now. Transposed characters are matched characters +# in different positions, eg TH vs HT + + +use strict; +use warnings; +use Function::Parameters; +use Data::Dumper; +use List::Util qw(min max); + + +# +# my $m = matches( $w1, $w2, $l1, $l2, $match_distance, $m1, $m2 ); +# Compute $m, the number of exact matches within $w1 and $w2 (of +# lengths $l1 and $l2), within $match_distance positions of each other, +# and build up @$m1 and @$m2, arrays of matched positions in both strings. +# +fun matches( $w1, $w2, $l1, $l2, $match_distance, $m1, $m2 ) +{ + # number of matches + my $m = 0.0; + + # look throughout $w1 at every position $i + for( my $i = 0; $i < $l1; $i++) + { + # start and end take into account the match distance + my $start = max(0, $i - $match_distance); + my $end = min($i + $match_distance + 1, $l2); + + # forevery possible matching pos k in w2 + for( my $k = $start; $k < $end; $k++) + { + # find first str2[k] not matched + next if $m2->[$k]; + + # where w[i] eq w2[k] + if( substr($w1,$i,1) eq substr($w2,$k,1) ) + { + # found a match + $m1->[$i] = 1; + $m2->[$k] = 1; + $m++; + last; + } + } + } + + return $m; +} + + +# +# my $t = transpositions( $w1, $w2, $l1, $l2, $m1, $m2 ); +# Compute $t, the number of matches transpositions within $w1 and $w2 (of +# lengths $l1 and $l2), using @$m1 and @$m2, arrays of matched positions in +# both strings. +# +fun transpositions( $w1, $w2, $l1, $l2, $m1, $m2 ) +{ + my $t = 0.0; + + my $k = 0; + # foreach matched position i in w1 + for( my $i = 0; $i < $l1; $i++) + { + next unless $m1->[$i]; + + # find next matched position in w2 + $k++ while !$m2->[$k]; + + # increment t if chars different + $t++ if substr( $w1,$i,1) ne substr($w2,$k,1); + + $k++; + } + + # divide the number of t by two as per the algorithm specs + return ($t/2); +} + + +# +# my $jsim = jaro_sim($str1, $str2); +# Plain Jaro similarity of $str1 and $str2. +# +fun jaro_sim( $str1, $str2 ) +{ + # matching should happen as follows, building m1[] and m2[] + + my $l1 = length($str1); + my $l2 = length($str2); + + # if both strings are empty return 1 + # if only one of the strings is empty return 0 + if( $l1 == 0 ) + { + return $l2 == 0 ? 1.0 : 0.0; + } + + # max distance between two chars to be considered matching + my $match_distance = int( max($l1, $l2) / 2 ) - 1; + + my @m1; + my @m2; + my $m = matches( $str1, $str2, $l1, $l2, $match_distance, \@m1, \@m2 ); + my $t = transpositions( $str1, $str2, $l1, $l2, \@m1, \@m2 ); + + # return the Jaro similarity + my $s = (($m / $l1) + ($m / $l2) + (($m - $t) / $m)) / 3.0; + #printf( "s1=$str1, s2=$str2, l1=$l1, l2=$l2, match_distance=$match_distance, m=%f, t=%f\n", + # $m, $t ); + return $s; +} + + +# +# my $jdist = jaro_dist($str1, $str2); +# Jaro distance between $str1 and $str2. +# +fun jaro_dist( $str1, $str2 ) +{ + my $jsim = jaro_sim( $str1, $str2 ); + printf( "jsim=%f\n", $jsim ); + return 1.0 - $jsim; +} + + +# +# my $jwsim = jarowinkler_sim($str1, $str2); +# Jaro-Winkler similarity of $str1 and $str2, +# +fun jarowinkler_sim( $str1, $str2 ) +{ + my $jsim = jaro_sim( $str1, $str2 ); + my $prefixlen=0; + my $i=0; + while( substr($str1,$i,1) eq substr($str2,$i,1) ) + { + $prefixlen++; + $i++; + } + $prefixlen = min(4,$prefixlen); + #print "prefixlen=$prefixlen\n"; + my $p = 0.1; + return $jsim - $prefixlen*$p*(1.0-$jsim); +} + + +# +# my $jwdist = jarowinkler_dist($str1, $str2); +# Jaro-Winkler distance between $str1 and $str2. +# +fun jarowinkler_dist( $str1, $str2 ) +{ + my $jwsim = jarowinkler_sim( $str1, $str2 ); + #printf( "jwsim=%f\n", $jwsim ); + return 1.0 - $jwsim; +} + + +die "Usage: jaro-winkler-dist ALL | jaro-winkler-dist WORD1 WORD2\n" + unless (@ARGV==1 && $ARGV[0] eq "ALL") || @ARGV==2; +my $w1 = shift; +if( $w1 ne "ALL" ) +{ + my $w2 = shift; + my $jdist = jarowinkler_dist($w1, $w2); + printf( "jarowinkler-dist($w1,$w2) = %.6f\n", $jdist ); +} +else +{ + my @data = ( + [ "CRATE", "TRACE" ], + [ "MARTHA", "MARHTA" ], + [ "DIXON", "DICKSONX" ], + [ "JELLYFISH", "SMELLYFISH" ], + ); + foreach my $pair (@data) + { + my( $w1, $w2 ) = @$pair; + printf("jdiff($w1,$w2)=%.6f\n", jarowinkler_dist($w1,$w2)); + } +} -- cgit From d42d0edb7569c79d031dcc4a7f95f1a5919e6ffd Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Tue, 4 Jun 2019 16:25:28 +0100 Subject: - Added solution by Steven Wilson. --- challenge-011/steven-wilson/perl5/ch-3.pl | 71 +++++ stats/pwc-current.json | 98 +++--- stats/pwc-language-breakdown-summary.json | 70 ++--- stats/pwc-language-breakdown.json | 234 +++++++------- stats/pwc-leaders.json | 500 +++++++++++++++--------------- stats/pwc-summary-1-30.json | 42 +-- stats/pwc-summary-31-60.json | 52 ++-- stats/pwc-summary-61-90.json | 34 +- stats/pwc-summary.json | 30 +- 9 files changed, 601 insertions(+), 530 deletions(-) create mode 100644 challenge-011/steven-wilson/perl5/ch-3.pl diff --git a/challenge-011/steven-wilson/perl5/ch-3.pl b/challenge-011/steven-wilson/perl5/ch-3.pl new file mode 100644 index 0000000000..69668f68b2 --- /dev/null +++ b/challenge-011/steven-wilson/perl5/ch-3.pl @@ -0,0 +1,71 @@ +#!/usr/bin/env perl +# Author: Steven Wilson +# Date: 2019-06-03 +# Week: 011 +# Challenge: #3 +# +# Using Open Weather Map API, write a script to fetch the current weather for +# an arbitrary city. Note that you will need to sign up for Open Weather Map’s +# free tier and then wait a couple hours before your API key will be valid. +# This challenge was proposed by Joelle Maslak. The API challenge is optional +# but would love to see your solution. +# https://openweathermap.org/current +# usage: $ ./ch-3.pl London +# or: $ ./ch-3.pl "London, US" + +use strict; +use warnings; +use feature qw / say /; +use Switch; +use LWP::Simple; +use JSON::MaybeXS; + +my $API_KEY = "5f1b876baa129252e557f43d029e974b"; +my $city = $ARGV[0]; + +my $api_call_url + = "http://api.openweathermap.org/data/2.5/weather?" + . "q=$city" + . "&APIKEY=$API_KEY"; +my $filename = "weather." . lc($city) . ".json"; +my $content; +my $data_structure; + +if ( -s $filename and -M $filename < 0.0069 ) { + open my $fh, '<', $filename or die "Cannot read '$filename': $!\n"; + $content = <$fh>; + $data_structure = decode_json($content); + close $fh; +} +else { + $content = get($api_call_url); + die "Couldn't get it!" unless defined $content; + $data_structure = decode_json($content); + open my $fh, '>', $filename or die "Cannot write '$filename': $!\n"; + print $fh $content; + close $fh; +} + +my %weather = %{$data_structure}; +my $condition; +my $item; + +switch ( $weather{"weather"}[0]{id} ) { + case [ 200 .. 232 ] { $condition = "thundery"; $item = "golf club" } + case [ 300 .. 321 ] { $condition = "drizzly"; $item = "lemon cake" } + case [ 500 .. 531 ] { $condition = "rainy"; $item = "wellies" } + case [ 600 .. 622 ] { $condition = "snowy"; $item = "sledge" } + case [ 701 .. 781 ] { + $condition = "low visability"; + $item = "flashlight" + } + case [800] { $condition = "clear skies"; $item = "sunscreen" } + case [ 801 .. 804 ] { + $condition = "cloudy"; + $item = "imagination, what shapes can you see?" + } +} + +say "Another $condition day in old " + . $weather{"name"} + . " town, don't forget your $item."; \ No newline at end of file diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 7ecbc208eb..4765649559 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,4 +1,19 @@ { + "subtitle" : { + "text" : "[Champions: 8] Last updated at 2019-06-04 15:24:47 GMT" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } + }, + "xAxis" : { + "type" : "category" + }, "drilldown" : { "series" : [ { @@ -12,17 +27,18 @@ "name" : "Dave Jacoby" }, { - "name" : "E. Choroba", "data" : [ [ "Perl 5", 2 ] ], - "id" : "E. Choroba" + "id" : "E. Choroba", + "name" : "E. Choroba" }, { "name" : "Joelle Maslak", + "id" : "Joelle Maslak", "data" : [ [ "Perl 5", @@ -32,17 +48,16 @@ "Perl 6", 3 ] - ], - "id" : "Joelle Maslak" + ] }, { + "id" : "Khalid", "data" : [ [ "Perl 6", 2 ] ], - "id" : "Khalid", "name" : "Khalid" }, { @@ -56,67 +71,51 @@ "name" : "Kivanc Yazan" }, { - "name" : "Pete Houston", + "id" : "Pete Houston", "data" : [ [ "Perl 5", 1 ] ], - "id" : "Pete Houston" + "name" : "Pete Houston" }, { + "id" : "Simon Proctor", "data" : [ [ "Perl 6", 2 ] ], - "id" : "Simon Proctor", "name" : "Simon Proctor" }, { + "name" : "Steven Wilson", "id" : "Steven Wilson", "data" : [ [ "Perl 5", - 2 + 3 ] - ], - "name" : "Steven Wilson" + ] } ] }, - "xAxis" : { - "type" : "category" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "tooltip" : { - "followPointer" : 1, - "pointerFormat" : "{point.name}: {point.y:f}
", - "headerFormat" : "{series.name}
" - }, - "legend" : { - "enabled" : 0 - }, "series" : [ { - "name" : "Champions", "colorByPoint" : 1, + "name" : "Champions", "data" : [ { - "drilldown" : "Dave Jacoby", + "y" : 2, "name" : "Dave Jacoby", - "y" : 2 + "drilldown" : "Dave Jacoby" }, { "drilldown" : "E. Choroba", - "y" : 2, - "name" : "E. Choroba" + "name" : "E. Choroba", + "y" : 2 }, { "drilldown" : "Joelle Maslak", @@ -125,8 +124,8 @@ }, { "drilldown" : "Khalid", - "y" : 2, - "name" : "Khalid" + "name" : "Khalid", + "y" : 2 }, { "y" : 2, @@ -134,9 +133,9 @@ "drilldown" : "Kivanc Yazan" }, { - "y" : 1, + "drilldown" : "Pete Houston", "name" : "Pete Houston", - "drilldown" : "Pete Houston" + "y" : 1 }, { "drilldown" : "Simon Proctor", @@ -146,27 +145,28 @@ { "drilldown" : "Steven Wilson", "name" : "Steven Wilson", - "y" : 2 + "y" : 3 } ] } ], + "chart" : { + "type" : "column" + }, + "legend" : { + "enabled" : 0 + }, "title" : { "text" : "Perl Weekly Challenge - 011" }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } + "yAxis" : { + "title" : { + "text" : "Total Solutions" } }, - "subtitle" : { - "text" : "[Champions: 8] Last updated at 2019-06-04 04:02:39 GMT" - }, - "chart" : { - "type" : "column" + "tooltip" : { + "followPointer" : 1, + "pointerFormat" : "{point.name}: {point.y:f}
", + "headerFormat" : "{series.name}
" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 48bef2b852..c4db8b6d85 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,42 +1,22 @@ { - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 - }, - "tooltip" : { - "pointFormat" : "{point.y:.0f}" - }, - "title" : { - "text" : "Perl Weekly Challenge Contributions - 2019" - }, - "subtitle" : { - "text" : "Last updated at 2019-06-04 04:02:51 GMT" - }, - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - } - } + "chart" : { + "type" : "column" }, "series" : [ { "dataLabels" : { - "format" : "{point.y:.0f}", - "enabled" : "true", - "color" : "#FFFFFF", - "align" : "right", - "y" : 10, - "rotation" : -90, "style" : { "fontFamily" : "Verdana, sans-serif", "fontSize" : "13px" - } + }, + "rotation" : -90, + "align" : "right", + "color" : "#FFFFFF", + "format" : "{point.y:.0f}", + "y" : 10, + "enabled" : "true" }, + "name" : "Contributions", "data" : [ [ "Blog", @@ -44,20 +24,40 @@ ], [ "Perl 5", - 414 + 415 ], [ "Perl 6", 240 ] - ], - "name" : "Contributions" + ] } ], - "chart" : { - "type" : "column" + "yAxis" : { + "min" : 0, + "title" : { + "text" : null + } + }, + "tooltip" : { + "pointFormat" : "{point.y:.0f}" + }, + "title" : { + "text" : "Perl Weekly Challenge Contributions - 2019" + }, + "subtitle" : { + "text" : "Last updated at 2019-06-04 15:25:00 GMT" }, "legend" : { "enabled" : "false" + }, + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } + } } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 96ebe9fcac..2051c9609b 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,4 +1,101 @@ { + "chart" : { + "type" : "column" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 + } + }, + "series" : [ + { + "colorByPoint" : "true", + "data" : [ + { + "drilldown" : "001", + "y" : 113, + "name" : "#001 [P5=76 P6=37]" + }, + { + "name" : "#002 [P5=63 P6=32]", + "y" : 95, + "drilldown" : "002" + }, + { + "name" : "#003 [P5=32 P6=26]", + "y" : 58, + "drilldown" : "003" + }, + { + "name" : "#004 [P5=46 P6=29]", + "y" : 75, + "drilldown" : "004" + }, + { + "drilldown" : "005", + "y" : 55, + "name" : "#005 [P5=33 P6=22]" + }, + { + "y" : 41, + "drilldown" : "006", + "name" : "#006 [P5=27 P6=14]" + }, + { + "name" : "#007 [P5=26 P6=20]", + "drilldown" : "007", + "y" : 46 + }, + { + "name" : "#008 [P5=36 P6=20]", + "y" : 56, + "drilldown" : "008" + }, + { + "name" : "#009 [P5=33 P6=18]", + "drilldown" : "009", + "y" : 51 + }, + { + "drilldown" : "010", + "y" : 45, + "name" : "#010 [P5=30 P6=15]" + }, + { + "drilldown" : "011", + "y" : 20, + "name" : "#011 [P5=13 P6=7]" + } + ], + "name" : "Perl Weekly Challenge Languages" + } + ], + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "tooltip" : { + "pointFormat" : "{point.name}: {point.y:f}
", + "followPointer" : "true", + "headerFormat" : "" + }, + "title" : { + "text" : "Perl Weekly Challenge Language" + }, + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-06-04 15:25:00 GMT" + }, + "legend" : { + "enabled" : "false" + }, + "xAxis" : { + "type" : "category" + }, "drilldown" : { "series" : [ { @@ -12,10 +109,12 @@ 37 ] ], - "name" : "001", - "id" : "001" + "id" : "001", + "name" : "001" }, { + "name" : "002", + "id" : "002", "data" : [ [ "Perl 5", @@ -25,12 +124,11 @@ "Perl 6", 32 ] - ], - "name" : "002", - "id" : "002" + ] }, { "name" : "003", + "id" : "003", "data" : [ [ "Perl 5", @@ -40,8 +138,7 @@ "Perl 6", 26 ] - ], - "id" : "003" + ] }, { "id" : "004", @@ -59,6 +156,7 @@ }, { "id" : "005", + "name" : "005", "data" : [ [ "Perl 5", @@ -68,11 +166,11 @@ "Perl 6", 22 ] - ], - "name" : "005" + ] }, { "id" : "006", + "name" : "006", "data" : [ [ "Perl 5", @@ -82,11 +180,9 @@ "Perl 6", 14 ] - ], - "name" : "006" + ] }, { - "id" : "007", "data" : [ [ "Perl 5", @@ -97,6 +193,7 @@ 20 ] ], + "id" : "007", "name" : "007" }, { @@ -115,6 +212,7 @@ }, { "id" : "009", + "name" : "009", "data" : [ [ "Perl 5", @@ -124,10 +222,11 @@ "Perl 6", 18 ] - ], - "name" : "009" + ] }, { + "name" : "010", + "id" : "010", "data" : [ [ "Perl 5", @@ -137,121 +236,22 @@ "Perl 6", 15 ] - ], - "name" : "010", - "id" : "010" + ] }, { - "id" : "011", "data" : [ [ "Perl 5", - 12 + 13 ], [ "Perl 6", 7 ] ], - "name" : "011" + "name" : "011", + "id" : "011" } ] - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } - } - }, - "tooltip" : { - "followPointer" : "true", - "pointFormat" : "{point.name}: {point.y:f}
", - "headerFormat" : "" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "legend" : { - "enabled" : "false" - }, - "chart" : { - "type" : "column" - }, - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-06-04 04:02:51 GMT" - }, - "series" : [ - { - "colorByPoint" : "true", - "data" : [ - { - "y" : 113, - "drilldown" : "001", - "name" : "#001 [P5=76 P6=37]" - }, - { - "name" : "#002 [P5=63 P6=32]", - "drilldown" : "002", - "y" : 95 - }, - { - "drilldown" : "003", - "name" : "#003 [P5=32 P6=26]", - "y" : 58 - }, - { - "drilldown" : "004", - "name" : "#004 [P5=46 P6=29]", - "y" : 75 - }, - { - "y" : 55, - "drilldown" : "005", - "name" : "#005 [P5=33 P6=22]" - }, - { - "name" : "#006 [P5=27 P6=14]", - "drilldown" : "006", - "y" : 41 - }, - { - "y" : 46, - "name" : "#007 [P5=26 P6=20]", - "drilldown" : "007" - }, - { - "name" : "#008 [P5=36 P6=20]", - "drilldown" : "008", - "y" : 56 - }, - { - "name" : "#009 [P5=33 P6=18]", - "drilldown" : "009", - "y" : 51 - }, - { - "name" : "#010 [P5=30 P6=15]", - "drilldown" : "010", - "y" : 45 - }, - { - "y" : 19, - "name" : "#011 [P5=12 P6=7]", - "drilldown" : "011" - } - ], - "name" : "Perl Weekly Challenge Languages" - } - ], - "xAxis" : { - "type" : "category" - }, - "title" : { - "text" : "Perl Weekly Challenge Language" } } diff --git a/stats/pwc-leaders.json b/stats/pwc-leaders.json index b161fb907a..d425ded6f2 100644 --- a/stats/pwc-leaders.json +++ b/stats/pwc-leaders.json @@ -1,36 +1,19 @@ { - "chart" : { - "type" : "column" - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } - } - }, - "title" : { - "text" : "Perl Weekly Challenge Leaders (TOP 50)" - }, "legend" : { "enabled" : "false" }, - "tooltip" : { - "headerFormat" : "", - "followPointer" : "true", - "pointFormat" : "{point.name}: {point.y:f}
" + "yAxis" : { + "title" : { + "text" : "Total Score" + } + }, + "subtitle" : { + "text" : "Click the columns to drilldown the score breakdown. Last updated at 2019-06-04 15:24:54 GMT" }, "drilldown" : { "series" : [ { - "name" : "Joelle Maslak", "data" : [ - [ - "Perl 5", - 26 - ], [ "Blog", 3 @@ -38,16 +21,17 @@ [ "Perl 6", 26 + ], + [ + "Perl 5", + 26 ] ], - "id" : "Joelle Maslak" + "id" : "Joelle Maslak", + "name" : "Joelle Maslak" }, { "data" : [ - [ - "Perl 5", - 20 - ], [ "Blog", 12 @@ -55,27 +39,32 @@ [ "Perl 6", 19 + ], + [ + "Perl 5", + 20 ] ], "name" : "Laurent Rosenfeld", "id" : "Laurent Rosenfeld" }, { + "name" : "Jaldhar H. Vyas", "id" : "Jaldhar H. Vyas", "data" : [ [ - "Perl 6", + "Perl 5", 20 ], [ - "Perl 5", + "Perl 6", 20 ] - ], - "name" : "Jaldhar H. Vyas" + ] }, { "name" : "Ruben Westerberg", + "id" : "Ruben Westerberg", "data" : [ [ "Perl 5", @@ -85,54 +74,53 @@ "Perl 6", 17 ] - ], - "id" : "Ruben Westerberg" + ] }, { - "name" : "Adam Russell", "data" : [ - [ - "Blog", - 10 - ], [ "Perl 5", 20 + ], + [ + "Blog", + 10 ] ], - "id" : "Adam Russell" + "id" : "Adam Russell", + "name" : "Adam Russell" }, { + "name" : "Simon Proctor", "id" : "Simon Proctor", "data" : [ [ "Perl 6", 18 ], - [ - "Blog", - 6 - ], [ "Perl 5", 4 + ], + [ + "Blog", + 6 ] - ], - "name" : "Simon Proctor" + ] }, { - "id" : "Arne Sommer", - "name" : "Arne Sommer", "data" : [ - [ - "Blog", - 9 - ], [ "Perl 6", 17 + ], + [ + "Blog", + 9 ] - ] + ], + "name" : "Arne Sommer", + "id" : "Arne Sommer" }, { "data" : [ @@ -150,13 +138,13 @@ }, { "data" : [ - [ - "Perl 6", - 10 - ], [ "Perl 5", 12 + ], + [ + "Perl 6", + 10 ] ], "name" : "Dr James A. Smith", @@ -173,54 +161,54 @@ 4 ] ], - "name" : "Gustavo Chaves", - "id" : "Gustavo Chaves" + "id" : "Gustavo Chaves", + "name" : "Gustavo Chaves" }, { - "name" : "Jo Christian Oterhals", "data" : [ [ "Blog", 5 ], - [ - "Perl 6", - 10 - ], [ "Perl 5", 6 + ], + [ + "Perl 6", + 10 ] ], + "name" : "Jo Christian Oterhals", "id" : "Jo Christian Oterhals" }, { + "name" : "Athanasius", + "id" : "Athanasius", "data" : [ [ "Perl 5", 20 ] - ], - "name" : "Athanasius", - "id" : "Athanasius" + ] }, { "data" : [ - [ - "Blog", - 6 - ], [ "Perl 6", 14 + ], + [ + "Blog", + 6 ] ], "name" : "Francis Whittle", "id" : "Francis Whittle" }, { - "id" : "Andrezgz", "name" : "Andrezgz", + "id" : "Andrezgz", "data" : [ [ "Perl 5", @@ -229,6 +217,7 @@ ] }, { + "name" : "E. Choroba", "id" : "E. Choroba", "data" : [ [ @@ -239,40 +228,39 @@ "Perl 5", 14 ] - ], - "name" : "E. Choroba" + ] }, { + "id" : "Dave Jacoby", "name" : "Dave Jacoby", "data" : [ - [ - "Perl 5", - 9 - ], [ "Blog", 8 + ], + [ + "Perl 5", + 9 ] - ], - "id" : "Dave Jacoby" + ] }, { + "name" : "Nick Logan", + "id" : "Nick Logan", "data" : [ [ - "Perl 6", + "Perl 5", 8 ], [ - "Perl 5", + "Perl 6", 8 ] - ], - "name" : "Nick Logan", - "id" : "Nick Logan" + ] }, { - "id" : "Daniel Mantovani", "name" : "Daniel Mantovani", + "id" : "Daniel Mantovani", "data" : [ [ "Perl 5", @@ -281,7 +269,6 @@ ] }, { - "id" : "Lars Balker", "data" : [ [ "Perl 6", @@ -292,30 +279,31 @@ 10 ] ], - "name" : "Lars Balker" + "name" : "Lars Balker", + "id" : "Lars Balker" }, { "name" : "Mark Senn", + "id" : "Mark Senn", "data" : [ - [ - "Blog", - 3 - ], [ "Perl 6", 10 + ], + [ + "Blog", + 3 ] - ], - "id" : "Mark Senn" + ] }, { - "name" : "Doug Schrag", "data" : [ [ "Perl 6", 10 ] ], + "name" : "Doug Schrag", "id" : "Doug Schrag" }, { @@ -325,46 +313,44 @@ 10 ] ], - "name" : "Duncan C. White", - "id" : "Duncan C. White" + "id" : "Duncan C. White", + "name" : "Duncan C. White" }, { + "id" : "Steven Wilson", + "name" : "Steven Wilson", "data" : [ [ "Perl 5", - 9 + 10 ] - ], - "name" : "Guillermo Ramos", - "id" : "Guillermo Ramos" + ] }, { - "id" : "Steven Wilson", "data" : [ [ "Perl 5", 9 ] ], - "name" : "Steven Wilson" + "name" : "Guillermo Ramos", + "id" : "Guillermo Ramos" }, { - "name" : "Robert Gratza", "data" : [ - [ - "Perl 5", - 2 - ], [ "Perl 6", 6 + ], + [ + "Perl 5", + 2 ] ], - "id" : "Robert Gratza" + "id" : "Robert Gratza", + "name" : "Robert Gratza" }, { - "id" : "Yozen Hernandez", - "name" : "Yozen Hernandez", "data" : [ [ "Perl 5", @@ -374,122 +360,125 @@ "Blog", 2 ] - ] + ], + "id" : "Yozen Hernandez", + "name" : "Yozen Hernandez" }, { - "id" : "Alicia Bielsa", - "name" : "Alicia Bielsa", "data" : [ [ "Perl 5", 7 ] - ] + ], + "name" : "Alicia Bielsa", + "id" : "Alicia Bielsa" }, { - "id" : "John Barrett", "data" : [ [ "Perl 5", 7 ] ], + "id" : "John Barrett", "name" : "John Barrett" }, { + "name" : "Khalid", "id" : "Khalid", "data" : [ [ "Blog", 1 ], - [ - "Perl 6", - 2 - ], [ "Perl 5", 4 + ], + [ + "Perl 6", + 2 ] - ], - "name" : "Khalid" + ] }, { - "id" : "Maxim Nechaev", - "name" : "Maxim Nechaev", "data" : [ [ "Perl 5", 7 ] - ] + ], + "name" : "Maxim Nechaev", + "id" : "Maxim Nechaev" }, { - "name" : "Ozzy", "data" : [ [ "Perl 6", 7 ] ], + "name" : "Ozzy", "id" : "Ozzy" }, { + "name" : "Kivanc Yazan", + "id" : "Kivanc Yazan", "data" : [ [ "Perl 5", 6 ] - ], - "name" : "Kivanc Yazan", - "id" : "Kivanc Yazan" + ] }, { - "id" : "Maxim Kolodyazhny", - "name" : "Maxim Kolodyazhny", "data" : [ [ "Perl 5", 6 ] - ] + ], + "id" : "Maxim Kolodyazhny", + "name" : "Maxim Kolodyazhny" }, { - "id" : "Philippe Bruhat", "name" : "Philippe Bruhat", + "id" : "Philippe Bruhat", "data" : [ - [ - "Perl 5", - 4 - ], [ "Blog", 2 + ], + [ + "Perl 5", + 4 ] ] }, { - "name" : "Sergio Iglesias", "data" : [ [ "Perl 5", 6 ] ], + "name" : "Sergio Iglesias", "id" : "Sergio Iglesias" }, { "id" : "Arpad Toth", + "name" : "Arpad Toth", "data" : [ [ "Perl 5", 5 ] - ], - "name" : "Arpad Toth" + ] }, { "id" : "Steve Rogerson", + "name" : "Steve Rogerson", "data" : [ [ "Perl 5", @@ -499,8 +488,7 @@ "Perl 6", 2 ] - ], - "name" : "Steve Rogerson" + ] }, { "data" : [ @@ -509,42 +497,42 @@ 5 ] ], - "name" : "Veesh Goldman", - "id" : "Veesh Goldman" + "id" : "Veesh Goldman", + "name" : "Veesh Goldman" }, { + "id" : "Alex Daniel", + "name" : "Alex Daniel", "data" : [ [ "Perl 6", 4 ] - ], - "name" : "Alex Daniel", - "id" : "Alex Daniel" + ] }, { - "id" : "Bob Kleemann", - "name" : "Bob Kleemann", "data" : [ [ "Perl 5", 4 ] - ] + ], + "id" : "Bob Kleemann", + "name" : "Bob Kleemann" }, { - "id" : "Chenyf", - "name" : "Chenyf", "data" : [ [ "Perl 6", 4 ] - ] + ], + "id" : "Chenyf", + "name" : "Chenyf" }, { - "id" : "David Kayal", "name" : "David Kayal", + "id" : "David Kayal", "data" : [ [ "Perl 5", @@ -553,90 +541,92 @@ ] }, { - "name" : "Finley", "data" : [ [ "Perl 6", 4 ] ], + "name" : "Finley", "id" : "Finley" }, { - "id" : "Jaime Corchado", "data" : [ [ "Perl 5", 4 ] ], - "name" : "Jaime Corchado" + "name" : "Jaime Corchado", + "id" : "Jaime Corchado" }, { - "id" : "Luis F. Uceta", - "name" : "Luis F. Uceta", "data" : [ [ "Perl 6", 4 ] - ] + ], + "name" : "Luis F. Uceta", + "id" : "Luis F. Uceta" }, { - "name" : "Matt Latusek", "data" : [ [ "Perl 5", 4 ] ], - "id" : "Matt Latusek" + "id" : "Matt Latusek", + "name" : "Matt Latusek" }, { - "name" : "Neil Bowers", "data" : [ [ "Perl 5", 4 ] ], + "name" : "Neil Bowers", "id" : "Neil Bowers" }, { - "id" : "Pete Houston", "data" : [ [ "Perl 5", 4 ] ], + "id" : "Pete Houston", "name" : "Pete Houston" }, { + "name" : "Simon Reinhardt", + "id" : "Simon Reinhardt", "data" : [ [ "Perl 5", 4 ] - ], - "name" : "Simon Reinhardt", - "id" : "Simon Reinhardt" + ] }, { + "id" : "Tim Smith", + "name" : "Tim Smith", "data" : [ [ "Perl 6", 4 ] - ], - "name" : "Tim Smith", - "id" : "Tim Smith" + ] } ] }, + "xAxis" : { + "type" : "category" + }, "series" : [ { - "name" : "Perl Weekly Challenge Leaders", "data" : [ { "name" : "#1: Joelle Maslak", @@ -644,33 +634,33 @@ "y" : 110 }, { - "y" : 102, "drilldown" : "Laurent Rosenfeld", + "y" : 102, "name" : "#2: Laurent Rosenfeld" }, { + "drilldown" : "Jaldhar H. Vyas", "y" : 80, - "name" : "#3: Jaldhar H. Vyas", - "drilldown" : "Jaldhar H. Vyas" + "name" : "#3: Jaldhar H. Vyas" }, { - "y" : 68, "name" : "#4: Ruben Westerberg", + "y" : 68, "drilldown" : "Ruben Westerberg" }, { + "name" : "#5: Adam Russell", "y" : 60, - "drilldown" : "Adam Russell", - "name" : "#5: Adam Russell" + "drilldown" : "Adam Russell" }, { + "name" : "#6: Simon Proctor", "y" : 56, - "drilldown" : "Simon Proctor", - "name" : "#6: Simon Proctor" + "drilldown" : "Simon Proctor" }, { - "drilldown" : "Arne Sommer", "name" : "#7: Arne Sommer", + "drilldown" : "Arne Sommer", "y" : 52 }, { @@ -679,23 +669,23 @@ "name" : "#8: Kian-Meng Ang" }, { - "y" : 44, "drilldown" : "Dr James A. Smith", + "y" : 44, "name" : "#9: Dr James A. Smith" }, { - "y" : 42, "name" : "#10: Gustavo Chaves", - "drilldown" : "Gustavo Chaves" + "drilldown" : "Gustavo Chaves", + "y" : 42 }, { - "name" : "#11: Jo Christian Oterhals", + "y" : 42, "drilldown" : "Jo Christian Oterhals", - "y" : 42 + "name" : "#11: Jo Christian Oterhals" }, { - "y" : 40, "drilldown" : "Athanasius", + "y" : 40, "name" : "#12: Athanasius" }, { @@ -709,29 +699,29 @@ "name" : "#14: Andrezgz" }, { + "drilldown" : "E. Choroba", "y" : 38, - "name" : "#15: E. Choroba", - "drilldown" : "E. Choroba" + "name" : "#15: E. Choroba" }, { - "drilldown" : "Dave Jacoby", "name" : "#16: Dave Jacoby", - "y" : 34 + "y" : 34, + "drilldown" : "Dave Jacoby" }, { + "name" : "#17: Nick Logan", "y" : 32, - "drilldown" : "Nick Logan", - "name" : "#17: Nick Logan" + "drilldown" : "Nick Logan" }, { - "name" : "#18: Daniel Mantovani", + "y" : 30, "drilldown" : "Daniel Mantovani", - "y" : 30 + "name" : "#18: Daniel Mantovani" }, { "drilldown" : "Lars Balker", - "name" : "#19: Lars Balker", - "y" : 28 + "y" : 28, + "name" : "#19: Lars Balker" }, { "name" : "#20: Mark Senn", @@ -739,24 +729,24 @@ "y" : 26 }, { + "name" : "#21: Doug Schrag", "y" : 20, - "drilldown" : "Doug Schrag", - "name" : "#21: Doug Schrag" + "drilldown" : "Doug Schrag" }, { - "y" : 20, "name" : "#22: Duncan C. White", - "drilldown" : "Duncan C. White" + "drilldown" : "Duncan C. White", + "y" : 20 }, { - "y" : 18, - "drilldown" : "Guillermo Ramos", - "name" : "#23: Guillermo Ramos" + "drilldown" : "Steven Wilson", + "y" : 20, + "name" : "#23: Steven Wilson" }, { + "drilldown" : "Guillermo Ramos", "y" : 18, - "name" : "#24: Steven Wilson", - "drilldown" : "Steven Wilson" + "name" : "#24: Guillermo Ramos" }, { "y" : 16, @@ -764,14 +754,14 @@ "name" : "#25: Robert Gratza" }, { - "name" : "#26: Yozen Hernandez", + "y" : 16, "drilldown" : "Yozen Hernandez", - "y" : 16 + "name" : "#26: Yozen Hernandez" }, { "y" : 14, - "name" : "#27: Alicia Bielsa", - "drilldown" : "Alicia Bielsa" + "drilldown" : "Alicia Bielsa", + "name" : "#27: Alicia Bielsa" }, { "name" : "#28: John Barrett", @@ -779,49 +769,49 @@ "y" : 14 }, { - "y" : 14, + "name" : "#29: Khalid", "drilldown" : "Khalid", - "name" : "#29: Khalid" + "y" : 14 }, { - "name" : "#30: Maxim Nechaev", + "y" : 14, "drilldown" : "Maxim Nechaev", - "y" : 14 + "name" : "#30: Maxim Nechaev" }, { - "drilldown" : "Ozzy", "name" : "#31: Ozzy", - "y" : 14 + "y" : 14, + "drilldown" : "Ozzy" }, { "y" : 12, - "name" : "#32: Kivanc Yazan", - "drilldown" : "Kivanc Yazan" + "drilldown" : "Kivanc Yazan", + "name" : "#32: Kivanc Yazan" }, { - "y" : 12, "drilldown" : "Maxim Kolodyazhny", + "y" : 12, "name" : "#33: Maxim Kolodyazhny" }, { - "y" : 12, "name" : "#34: Philippe Bruhat", + "y" : 12, "drilldown" : "Philippe Bruhat" }, { - "y" : 12, "drilldown" : "Sergio Iglesias", + "y" : 12, "name" : "#35: Sergio Iglesias" }, { - "y" : 10, "drilldown" : "Arpad Toth", + "y" : 10, "name" : "#36: Arpad Toth" }, { - "y" : 10, "name" : "#37: Steve Rogerson", - "drilldown" : "Steve Rogerson" + "drilldown" : "Steve Rogerson", + "y" : 10 }, { "y" : 10, @@ -830,77 +820,87 @@ }, { "name" : "#39: Alex Daniel", - "drilldown" : "Alex Daniel", - "y" : 8 + "y" : 8, + "drilldown" : "Alex Daniel" }, { - "drilldown" : "Bob Kleemann", "name" : "#40: Bob Kleemann", + "drilldown" : "Bob Kleemann", "y" : 8 }, { - "drilldown" : "Chenyf", "name" : "#41: Chenyf", + "drilldown" : "Chenyf", "y" : 8 }, { - "y" : 8, "name" : "#42: David Kayal", + "y" : 8, "drilldown" : "David Kayal" }, { "y" : 8, - "name" : "#43: Finley", - "drilldown" : "Finley" + "drilldown" : "Finley", + "name" : "#43: Finley" }, { - "name" : "#44: Jaime Corchado", "drilldown" : "Jaime Corchado", - "y" : 8 + "y" : 8, + "name" : "#44: Jaime Corchado" }, { "y" : 8, - "name" : "#45: Luis F. Uceta", - "drilldown" : "Luis F. Uceta" + "drilldown" : "Luis F. Uceta", + "name" : "#45: Luis F. Uceta" }, { - "name" : "#46: Matt Latusek", "drilldown" : "Matt Latusek", - "y" : 8 + "y" : 8, + "name" : "#46: Matt Latusek" }, { - "y" : 8, "name" : "#47: Neil Bowers", - "drilldown" : "Neil Bowers" + "drilldown" : "Neil Bowers", + "y" : 8 }, { - "drilldown" : "Pete Houston", "name" : "#48: Pete Houston", + "drilldown" : "Pete Houston", "y" : 8 }, { - "y" : 8,