aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2021-08-01 22:54:09 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2021-08-01 22:54:09 +0100
commited823b76e3a2dd399df5a2cf9ef6434c166f197c (patch)
tree3601feed2c25c1f5ad0fd99776e1699cb6e0edda
parent810002654bad168c16759e4a8e1134b023dac91e (diff)
downloadperlweeklychallenge-club-ed823b76e3a2dd399df5a2cf9ef6434c166f197c.tar.gz
perlweeklychallenge-club-ed823b76e3a2dd399df5a2cf9ef6434c166f197c.tar.bz2
perlweeklychallenge-club-ed823b76e3a2dd399df5a2cf9ef6434c166f197c.zip
- Added solutions by Colin Crain.
-rw-r--r--challenge-123/colin-crain/perl/ch-1.pl147
-rw-r--r--challenge-123/colin-crain/perl/ch-2.pl180
-rw-r--r--challenge-123/colin-crain/raku/ch-2.raku69
-rw-r--r--stats/pwc-current.json476
-rw-r--r--stats/pwc-language-breakdown-summary.json52
-rw-r--r--stats/pwc-language-breakdown.json916
-rw-r--r--stats/pwc-leaders.json736
-rw-r--r--stats/pwc-summary-1-30.json38
-rw-r--r--stats/pwc-summary-121-150.json40
-rw-r--r--stats/pwc-summary-151-180.json108
-rw-r--r--stats/pwc-summary-181-210.json108
-rw-r--r--stats/pwc-summary-211-240.json82
-rw-r--r--stats/pwc-summary-31-60.json46
-rw-r--r--stats/pwc-summary-61-90.json110
-rw-r--r--stats/pwc-summary-91-120.json34
-rw-r--r--stats/pwc-summary.json40
16 files changed, 1793 insertions, 1389 deletions
diff --git a/challenge-123/colin-crain/perl/ch-1.pl b/challenge-123/colin-crain/perl/ch-1.pl
new file mode 100644
index 0000000000..ecae5ba89f
--- /dev/null
+++ b/challenge-123/colin-crain/perl/ch-1.pl
@@ -0,0 +1,147 @@
+#!/Users/colincrain/perl5/perlbrew/perls/perl-5.32.0/bin/perl
+#
+# all-numbers-are-beautiful.pl
+#
+# Ugly Numbers
+# Submitted by: Mohammad S Anwar
+# You are given an integer $n >= 1.
+#
+# Write a script to find the $nth element of Ugly Numbers.
+#
+# Ugly numbers are those number whose prime factors are 2, 3 or 5. For
+# example, the first 10 Ugly Numbers are 1, 2, 3, 4, 5, 6, 8, 9, 10, 12.
+#
+# Example
+# Input: $n = 7
+# Output: 8
+#
+# Input: $n = 10
+# Output: 12
+#
+# notes:
+# I feel the very notion of numbers constructed solely from the
+# factors 2, 3, and 5 being somehow "ugly" would be quite distressing and
+# offensive to proponents of 5-limit just intonation musical tuning systems,
+# and expressing this sentiment in certain rarefied
+# environments is liable to provoke a hostile, even violent, response.
+#
+# These psycho-temporal explorers, remember, have chosen to live with their
+# minds in the nexus between acoustic vibrations and the cosmos itself,
+# and have left an even temperment — apologies for that pun but you must
+# admit it works — far behind.
+#
+# I've been listening to Terry Riley's *The Harp of New Albion* quite a lot
+# since the Black Ships came, and consider it an amazing achievement,
+# among the most beautiful things I've ever heard. And all built from ratios
+# of numbers made from 2, 3 and 5. So there. To those that say ugly I
+# laugh openly and derisively at the raw foolishness of the claim.
+#
+# And besides, the numbers don't care one bit about our collective,
+# infitesimally unimportant opinions. They have so, so many better
+# things to do.
+#
+# In honor of constructing note intervals from factors, I will choose a
+# constructive method to compose our sequence.
+#
+# method:
+#
+# If we start composing numbers using just the products of 2, 3
+# and 5, we can populate a line, order them and find the number at the
+# index requested. This sounds like a sound strategy (I'm going to leave
+# that somewhat awkward phrasing because it reenforces the musical
+# thematic resonance, as does the word "resonance" as well).
+#
+# The question arises, though, is how many values do we need to
+# construct? Well obviously the answer is "enough", but the relative
+# placement of the values constructed from a given number of factors
+# from the pool will be figuratively all over the map. If we are to
+# avoid filtering and factoring scads of values, instead adding the
+# products of (2,2), (2,3), (2,5), (3,3), etc, we need to know when to
+# stop.
+#
+# Ok, perhaps we could stop and check every once in a while, but the
+# problem is that calculating the next sequental value is non-obvious. 5
+# x 5 x 5 = 125, with 3 factors, but earlier than that in the sequence
+# is 2 x 2 x 2 x 2 x 2 x 2 = 64 with 6 factors.
+#
+# Actually I believe that power of 2 example is the key. Our sequence is
+# constructed from numbers found as the product of sets of numbers drawn
+# from our limited pool of three values. These sets will have increasing
+# numbers of elements as our final sequence grows generally larger, but
+# there can be no assumption that a number from a set of *k* elements
+# will necessarily fall after all numbers from the sets with *k*-1
+# elements, and in fact we know this is not true. But what we do know is
+# that for a given number line constructed from all sets of members
+# sized 1 to *k*, that the smallest next number added to the number line
+# will be the smallest value from the set composed of *k*+1 elements.
+# The smallest number that can be created in the set with *k*+1 elements
+# is 2^k+1, so we can therefore conclude that the number line for all
+# sets less than *k* members, for those values less than 2^k+1, is
+# complete and ordered, and can be safely used.
+#
+# method:
+#
+# Because we need to create a very large number of combinations, we will
+# pull out the big guns and use the `combinations_with_repetition()`
+# function from `Algorithm::Combinatorics`. This will give us our
+# required combinations quickly without breaking the bank in memory.
+# Likewise the` List::Util` function `product()` will multiply all the
+# factors to get our result.
+#
+# At each multiset size of factors the new additions to the number line
+# are pushed on and the list sorted, and the number of safe values is
+# computed. If more values are required to produce enough numbers the
+# loop is repeated, adding an additional factor until enough elements
+# have been constructed.
+#
+# The size of the sequence is limited by integer size in the system,
+# S[12691] = 9216000000000000000, the largest number precisely calculable
+# without using the `bigint` pragma.
+
+# © 2021 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+use warnings;
+use strict;
+use utf8;
+use feature ":5.26";
+use feature qw(signatures);
+no warnings 'experimental::signatures';
+
+use Algorithm::Combinatorics qw( combinations_with_repetition );
+use List::Util qw( product );
+
+my $request = shift @ARGV // 12691;
+
+$request--;
+
+my @factors = (2, 3, 5);
+my @inter = ( 1 );
+my @seq;
+my $fcount = 0;
+
+while (++$fcount) {
+
+ for my $iter (combinations_with_repetition( \@factors, $fcount)) {
+ my $p = product $iter->@*;
+ push @inter, $p;
+ }
+ @seq = grep { $_ < 2**$fcount+1 } sort {$a<=>$b} @inter;
+ last if scalar @seq > $request;
+}
+
+say "requested index, 1-based count: ", $request+1;
+say "sequence value: $seq[$request]";
+
+say "sequence computed to ", scalar @seq, " known values";
+say "sequence:";
+say $_ for @seq;
+
+
+
+
+
+
+
diff --git a/challenge-123/colin-crain/perl/ch-2.pl b/challenge-123/colin-crain/perl/ch-2.pl
new file mode 100644
index 0000000000..1cc1555603
--- /dev/null
+++ b/challenge-123/colin-crain/perl/ch-2.pl
@@ -0,0 +1,180 @@
+#!/Users/colincrain/perl5/perlbrew/perls/perl-5.32.0/bin/perl
+#
+# no-room-for-squares.pl
+#
+# Square Points
+# Submitted by: Mohammad S Anwar
+# You are given coordinates of four points i.e.
+# (x1, y1), (x2, y2), (x3, y3) and (x4, y4).
+#
+# Write a script to find out if the given four points form a square.
+#
+# Example
+# Input: x1 = 10, y1 = 20
+# x2 = 20, y2 = 20
+# x3 = 20, y3 = 10
+# x4 = 10, y4 = 10
+# Output: 1 as the given coordinates form a square.
+
+
+#
+# Input: x1 = 12, y1 = 24
+# x2 = 16, y2 = 10
+# x3 = 20, y3 = 12
+# x4 = 18, y4 = 16
+# Output: 0 as the given coordinates doesn't form a square.
+#
+# method:
+#
+# there are two ways to look at this problem that I see: the easy
+# problem and the harder version. The easy problem, as in first
+# example, is to identify a square in orthogonal alignment with the
+# coordinate system. In the more complex version we should consider
+# a square: (1,1), (5,2), (4,6), (0,5) which is canted one unit
+# counterclockwise.
+#
+# So how can we mathematically identify a square? Some properties of
+# squares would be in order. A square has:
+# 1. four vertex angles summing to 360°
+# 2. parallel opposing edges
+# 3. four equal angles at the vertices
+# 4. four sides of equal length
+#
+# The properites correspond to a square being, in increasing constraint:
+# 1. a quadralateral
+# 2. a parallelogram
+# 3. a rectangle
+# 4. a regular rectangle.
+#
+# This last constraint, of equalateral sides, without the previous,
+# equiangular vertices, can also identify a rhombus. If the four
+# equiangular vertices sum to 360°, the individual angles must be
+# right angles, at 90°.
+#
+# What we don't need to prove all of these assertions, only enough
+# to eliminate the poossibilites that the shape is *not* a square.
+# We can do this by showing that in the complete graph described by
+# the four points we have four edges the same length and two edges
+# the same length. We could be more specific and require the two
+# differing edged to hold the relationship 1:√2, but if the two
+# alternate lengths are diagonals, they will need to be equal to
+# form a square, and if they are not both diagonals they cannot be
+# equal. If neither is a diagonal the edges cannot be the same
+# length without multiple sets of points occupying the same
+# position, and we no longer have a quadralateral if a connecting
+# edge has zero length.
+#
+# Unfortunately there does exist one polygon that defeats this
+# analysis (see? I'm brutal about breaking my own algorithms too)
+# and that is most easily described as taking an equilateral
+# triangle, with three edges te same length, and extending a new
+# unit-length edge from one vertex perpendicular to the opposing
+# edge, out away from the triangle. These four edges are two sides
+# and two diagonals of a concave polygon made by conecting the point
+# on the far end of the new line to each of the two other vertices.
+#
+# A
+# | AB, BC, BD and CD are the unit value
+# |
+# | connect AC and AD, and
+# B
+# / \ the polygon is AC -> CB -> BD -> DA
+# / \
+# / \ known as a "flying vee" shape
+# C _ E _ D
+#
+# No one ever said the points needed to describe a *convex* polygon.
+
+# This suggests we need an additional check, but fortunately we can
+# still avoid having to deal directly with the square root of 2, as
+# we can derive the length of the two equal segments AC and AD.
+#
+# The line AE has length
+#
+# 1 + (√3/2)
+#
+# and the length of AE is 1/2. Using Pythagoras' theorem, the length
+# of AC is
+#
+# √(2+√3) ≅ 1.93
+#
+# The square root of 2 plus some positive value will always be
+# greater than √2, so we don't need to directly compare to some
+# irrational number. If we're less than 1.5 the unit value we're
+# good.
+
+
+#
+
+#
+# © 2021 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+use warnings;
+use strict;
+use utf8;
+use feature ":5.26";
+use feature qw(signatures);
+no warnings 'experimental::signatures';
+
+
+sub is_square ($pts) {
+ my @pts = $pts->@*;
+ my @dist;
+
+ ## get distance list for all edges in complete graph of points
+ for my $idx (0..2) {
+ push @dist, map { euclidean( $pts[$idx], $pts[$_] )} ( $idx+1..3 )
+ }
+
+ ## makes sure only 2 values for length
+ my ($v1, $c1, $v2, $c2) = ( shift @dist, 1, undef, 0);
+ for (@dist) {
+ if ( $_ == $v1 ) { $c1++; next }
+ $v2 //= $_;
+ if ( $_ == $v2 ) { $c2++; next }
+ return 0;
+ }
+
+ ## order lengths to "sides" first, fail if not 4
+ if ( $c1 < $c2 ) { ($v1, $c1, $v2, $c2) = ($v2, $c2, $v1, $c1) }
+ return 0 unless $c1 == 4;
+
+ ## fail unless 2 remaining sides are less than 1.5 x short side
+ ## this is the concave polygon case
+ return 0 unless $v2 < 1.5 * $v1;
+
+ return 1;
+}
+
+
+sub euclidean ($pt1, $pt2) {
+ return sqrt( ($pt1->[0] - $pt2->[0])**2 + ($pt1->[1] - $pt2->[1])**2 );
+}
+
+
+
+
+
+use Test::More;
+
+is is_square( [ [10,20], [20,20], [20,10], [10,10] ] ), 1
+ , 'ex-1';
+is is_square( [ [1,1], [5,2], [4,6], [0,5] ] ), 1
+ , 'racked 1 ccw';
+is is_square( [ [12,24], [16,10], [20,12], [18,16] ] ), 0
+ , 'ex-2';
+is is_square( [ [1,5], [5,5], [9,5], [1,1] ] ), 0
+ , 'parallelogram';
+is is_square( [ [1,5], [5,1], [9,5], [5,9] ] ), 1
+ , 'regular diamond';
+is is_square( [ [-5,0], [0,-5], [5,0], [0,5] ] ), 1
+ , 'regular diamond around origin';
+is is_square( [ [-2,-3], [3,-3], [3,2], [-2,2] ] ), 1
+ , 'off-center around origin';
+is is_square( [ [-4,-1], [1,-5], [5,0], [0,4] ] ), 1
+ , 'off-center around origin, rotate 2 cw';
+
+done_testing();
diff --git a/challenge-123/colin-crain/raku/ch-2.raku b/challenge-123/colin-crain/raku/ch-2.raku
new file mode 100644
index 0000000000..f5e50ac497
--- /dev/null
+++ b/challenge-123/colin-crain/raku/ch-2.raku
@@ -0,0 +1,69 @@
+#!/usr/bin/env perl6
+#
+#
+# .raku
+#
+#
+#
+# © 2021 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+unit sub MAIN () ;
+
+use Test;
+plan 8;
+
+is is_square( [ [10,20], [20,20], [20,10], [10,10] ] ), 1
+ , 'ex-1';
+is is_square( [ [1,1], [5,2], [4,6], [0,5] ] ), 1
+ , 'racked 1 ccw';
+is is_square( [ [12,24], [16,10], [20,12], [18,16] ] ), 0
+ , 'ex-2';
+is is_square( [ [1,5], [5,5], [9,5], [1,1] ] ), 0
+ , 'parallelogram';
+is is_square( [ [1,5], [5,1], [9,5], [5,9] ] ), 1
+ , 'regular diamond';
+is is_square( [ [-5,0], [0,-5], [5,0], [0,5] ] ), 1
+ , 'regular diamond around origin';
+is is_square( [ [-2,-3], [3,-3], [3,2], [-2,2] ] ), 1
+ , 'off-center around origin';
+is is_square( [ [-4,-1], [1,-5], [5,0], [0,4] ] ), 1
+ , 'off-center around origin, rotate 2 cw';
+
+
+
+sub is_square ( @pts ) {
+ my @distances;
+
+ for 0..2 -> $idx {
+ @distances.push: |($idx+1..3).map({ euclidean( @pts[$idx], @pts[$_] )})
+ }
+ ## makes sure we have only 2 values for length
+ my ($v1, $c1, $v2, $c2) = @distances.shift, 1, False, 0;
+ for @distances {
+ if $_ == $v1 { $c1++; next }
+ $v2 ||= $_;
+ if $_ == $v2 { $c2++; next }
+ return 0;
+ }
+ ## reorder lengths to edges, fail if $v1 is not 4 equal sides
+ if $c1 < $c2 { ($v1, $c1, $v2, $c2) = ($v2, $c2, $v1, $c1) }
+ return 0 unless $c1 == 4;
+
+ ## fail unless 2 remaining sides are less than 1.5 x short side
+ ## this is the concave polygon case
+ return 0 unless $v2 < 1.5 * $v1;
+
+ return 1;
+}
+
+
+sub euclidean ( @pt1, @pt2 ) {
+ sqrt( (@pt1[0]-@pt2[0])**2 + (@pt1[1]-@pt2[1])**2 );
+}
+
+
+
+
diff --git a/stats/pwc-current.json b/stats/pwc-current.json
index d899adc031..61892ce33e 100644
--- a/stats/pwc-current.json
+++ b/stats/pwc-current.json
@@ -1,170 +1,25 @@
{
- "subtitle" : {
- "text" : "[Champions: 30] Last updated at 2021-08-01 20:27:16 GMT"
- },
- "series" : [
- {
- "data" : [
- {
- "y" : 2,
- "drilldown" : "Abigail",
- "name" : "Abigail"
- },
- {
- "drilldown" : "Adam Russell",
- "y" : 4,
- "name" : "Adam Russell"
- },
- {
- "drilldown" : "Arne Sommer",
- "y" : 5,
- "name" : "Arne Sommer"
- },
- {
- "y" : 4,
- "drilldown" : "Athanasius",
- "name" : "Athanasius"
- },
- {
- "y" : 4,
- "drilldown" : "Bruce Gray",
- "name" : "Bruce Gray"
- },
- {
- "drilldown" : "Cheok-Yin Fung",
- "y" : 3,
- "name" : "Cheok-Yin Fung"
- },
- {
- "drilldown" : "Colin Crain",
- "y" : 1,
- "name" : "Colin Crain"
- },
- {
- "drilldown" : "Dave Jacoby",
- "y" : 4,
- "name" : "Dave Jacoby"
- },
- {
- "drilldown" : "Duncan C. White",
- "y" : 2,
- "name" : "Duncan C. White"
- },
- {
- "name" : "E. Choroba",
- "drilldown" : "E. Choroba",
- "y" : 2
- },
- {
- "name" : "Flavio Poletti",
- "y" : 6,
- "drilldown" : "Flavio Poletti"
- },
- {
- "name" : "James Smith",
- "drilldown" : "James Smith",
- "y" : 3
- },
- {
- "y" : 2,
- "drilldown" : "Jan Krnavek",
- "name" : "Jan Krnavek"
- },
- {
- "name" : "Jorg Sommrey",
- "y" : 2,
- "drilldown" : "Jorg Sommrey"
- },
- {
- "name" : "Laurent Rosenfeld",
- "drilldown" : "Laurent Rosenfeld",
- "y" : 5
- },
- {
- "y" : 1,
- "drilldown" : "Lubos Kolouch",
- "name" : "Lubos Kolouch"
- },
- {
- "drilldown" : "Lucas Ransan",
- "y" : 2,
- "name" : "Lucas Ransan"
- },
- {
- "y" : 2,
- "drilldown" : "Mark Anderson",
- "name" : "Mark Anderson"
- },
- {
- "drilldown" : "Markus Holzer",
- "y" : 2,
- "name" : "Markus Holzer"
- },
- {
- "name" : "Matthew Neleigh",
- "y" : 2,
- "drilldown" : "Matthew Neleigh"
- },
- {
- "y" : 2,
- "drilldown" : "Mohammad S Anwar",
- "name" : "Mohammad S Anwar"
- },
- {
- "drilldown" : "Niels van Dijke",
- "y" : 2,
- "name" : "Niels van Dijke"
- },
- {
- "name" : "Pete Houston",
- "drilldown" : "Pete Houston",
- "y" : 2
- },
- {
- "name" : "Roger Bell_West",
- "y" : 5,
- "drilldown" : "Roger Bell_West"
- },
- {
- "name" : "Simon Green",
- "drilldown" : "Simon Green",
- "y" : 3
- },
- {
- "y" : 2,
- "drilldown" : "Simon Proctor",
- "name" : "Simon Proctor"
- },
- {
- "name" : "Stuart Little",
- "y" : 4,
- "drilldown" : "Stuart Little"
- },
- {
- "y" : 4,
- "drilldown" : "Ulrich Rieke",
- "name" : "Ulrich Rieke"
- },
- {
- "name" : "W. Luis Mochan",
- "y" : 3,
- "drilldown" : "W. Luis Mochan"
- },
- {
- "name" : "Wanderdoc",
- "y" : 2,
- "drilldown" : "Wanderdoc"
- }
- ],
- "name" : "The Weekly Challenge - 123",
- "colorByPoint" : 1
+ "yAxis" : {
+ "title" : {
+ "text" : "Total Solutions"
}
- ],
- "legend" : {
- "enabled" : 0
},
- "xAxis" : {
- "type" : "category"
+ "chart" : {
+ "type" : "column"
+ },
+ "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/>"
+ },
+ "plotOptions" : {
+ "series" : {
+ "borderWidth" : 0,
+ "dataLabels" : {
+ "format" : "{point.y}",
+ "enabled" : 1
+ }
+ }
},
"drilldown" : {
"series" : [
@@ -179,7 +34,6 @@
]
},
{
- "name" : "Adam Russell",
"data" : [
[
"Perl",
@@ -190,6 +44,7 @@
2
]
],
+ "name" : "Adam Russell",
"id" : "Adam Russell"
},
{
@@ -211,8 +66,6 @@
]
},
{
- "id" : "Athanasius",
- "name" : "Athanasius",
"data" : [
[
"Perl",
@@ -222,10 +75,13 @@
"Raku",
2
]
- ]
+ ],
+ "name" : "Athanasius",
+ "id" : "Athanasius"
},
{
"id" : "Bruce Gray",
+ "name" : "Bruce Gray",
"data" : [
[
"Perl",
@@ -235,10 +91,11 @@
"Raku",
2
]
- ],
- "name" : "Bruce Gray"
+ ]
},
{
+ "id" : "Cheok-Yin Fung",
+ "name" : "Cheok-Yin Fung",
"data" : [
[
"Perl",
@@ -248,21 +105,29 @@
"Blog",
1
]
- ],
- "name" : "Cheok-Yin Fung",
- "id" : "Cheok-Yin Fung"
+ ]
},
{
"id" : "Colin Crain",
+ "name" : "Colin Crain",
"data" : [
[
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 1
+ ],
+ [
"Blog",
1
]
- ],
- "name" : "Colin Crain"
+ ]
},
{
+ "name" : "Dave Jacoby",
+ "id" : "Dave Jacoby",
"data" : [
[
"Perl",
@@ -272,33 +137,29 @@
"Blog",
2
]
- ],
- "name" : "Dave Jacoby",
- "id" : "Dave Jacoby"
+ ]
},
{
"id" : "Duncan C. White",
+ "name" : "Duncan C. White",
"data" : [
[
"Perl",
2
]
- ],
- "name" : "Duncan C. White"
+ ]
},
{
- "id" : "E. Choroba",
"data" : [
[
"Perl",
2
]
],
+ "id" : "E. Choroba",
"name" : "E. Choroba"
},
{
- "id" : "Flavio Poletti",
- "name" : "Flavio Poletti",
"data" : [
[
"Perl",
@@ -312,11 +173,13 @@
"Blog",
2
]
- ]
+ ],
+ "name" : "Flavio Poletti",
+ "id" : "Flavio Poletti"
},
{
- "id" : "James Smith",
"name" : "James Smith",
+ "id" : "James Smith",
"data" : [
[
"Perl",
@@ -329,8 +192,8 @@
]
},
{
- "id" : "Jan Krnavek",
"name" : "Jan Krnavek",
+ "id" : "Jan Krnavek",
"data" : [
[
"Raku",
@@ -339,17 +202,18 @@
]
},
{
- "name" : "Jorg Sommrey",
"data" : [
[
"Perl",
2
]
],
+ "name" : "Jorg Sommrey",
"id" : "Jorg Sommrey"
},
{
"id" : "Laurent Rosenfeld",
+ "name" : "Laurent Rosenfeld",
"data" : [
[
"Perl",
@@ -363,8 +227,7 @@
"Blog",
1
]
- ],
- "name" : "Laurent Rosenfeld"
+ ]
},
{
"data" : [
@@ -373,22 +236,22 @@
1
]
],
- "name" : "Lubos Kolouch",
- "id" : "Lubos Kolouch"
+ "id" : "Lubos Kolouch",
+ "name" : "Lubos Kolouch"
},
{
"id" : "Lucas Ransan",
+ "name" : "Lucas Ransan",
"data" : [
[
"Raku",
2
]
- ],
- "name" : "Lucas Ransan"
+ ]
},
{
- "id" : "Mark Anderson",
"name" : "Mark Anderson",
+ "id" : "Mark Anderson",
"data" : [
[
"Raku",
@@ -403,28 +266,28 @@
2
]
],
- "name" : "Markus Holzer",
- "id" : "Markus Holzer"
+ "id" : "Markus Holzer",
+ "name" : "Markus Holzer"
},
{
"name" : "Matthew Neleigh",
+ "id" : "Matthew Neleigh",
"data" : [
[
"Perl",
2
]
- ],
- "id" : "Matthew Neleigh"
+ ]
},
{
- "name" : "Mohammad S Anwar",
"data" : [
[
"Perl",
2
]
],
- "id" : "Mohammad S Anwar"
+ "id" : "Mohammad S Anwar",
+ "name" : "Mohammad S Anwar"
},
{
"data" : [
@@ -433,21 +296,20 @@
2
]
],
- "name" : "Niels van Dijke",
- "id" : "Niels van Dijke"
+ "id" : "Niels van Dijke",
+ "name" : "Niels van Dijke"
},
{
- "id" : "Pete Houston",
"data" : [
[
"Perl",
2
]
],
+ "id" : "Pete Houston",
"name" : "Pete Houston"
},
{
- "id" : "Roger Bell_West",
"data" : [
[
"Perl",
@@ -462,11 +324,10 @@
1
]
],
+ "id" : "Roger Bell_West",
"name" : "Roger Bell_West"
},
{
- "id" : "Simon Green",
- "name" : "Simon Green",
"data" : [
[
"Perl",
@@ -476,19 +337,23 @@
"Blog",
1
]
- ]
+ ],
+ "name" : "Simon Green",
+ "id" : "Simon Green"
},
{
- "name" : "Simon Proctor",
"data" : [
[
"Raku",
2
]
],
+ "name" : "Simon Proctor",
"id" : "Simon Proctor"
},
{
+ "id" : "Stuart Little",
+ "name" : "Stuart Little",
"data" : [
[
"Perl",
@@ -498,12 +363,11 @@
"Raku",
2
]
- ],
- "name" : "Stuart Little",
- "id" : "Stuart Little"
+ ]
},
{
"name" : "Ulrich Rieke",
+ "id" : "Ulrich Rieke",
"data" : [
[
"Perl",
@@ -513,8 +377,7 @@
"Raku",
2
]
- ],
- "id" : "Ulrich Rieke"
+ ]
},
{
"data" : [
@@ -531,40 +394,185 @@
"id" : "W. Luis Mochan"
},
{
+ "id" : "Wanderdoc",
+ "name" : "Wanderdoc",
"data" : [
[
"Perl",
2
]
- ],
- "name" : "Wanderdoc",
- "id" : "Wanderdoc"
+ ]
}
]
},
- "tooltip" : {
- "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>",
- "followPointer" : 1,
- "headerFormat" : "<span style='font-size:11px'&