aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-12-27 15:50:39 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-12-27 15:50:39 +0000
commit792fa135becdb0a534969af549cea5a846ee9fa1 (patch)
treecaeab6f1b70ac254849ca86c0b91ffca1faa7cfb
parent82534984de8058903af007fb76e8b1dbd7647fea (diff)
downloadperlweeklychallenge-club-792fa135becdb0a534969af549cea5a846ee9fa1.tar.gz
perlweeklychallenge-club-792fa135becdb0a534969af549cea5a846ee9fa1.tar.bz2
perlweeklychallenge-club-792fa135becdb0a534969af549cea5a846ee9fa1.zip
- Added solutions by Athanasius.
-rw-r--r--challenge-092/athanasius/perl/Interval.pm89
-rw-r--r--challenge-092/athanasius/perl/ch-1.pl110
-rw-r--r--challenge-092/athanasius/perl/ch-2.pl197
-rw-r--r--challenge-092/athanasius/raku/ch-1.raku106
-rw-r--r--stats/pwc-current.json227
-rw-r--r--stats/pwc-language-breakdown-summary.json54
-rw-r--r--stats/pwc-language-breakdown.json1302
-rw-r--r--stats/pwc-leaders.json374
-rw-r--r--stats/pwc-summary-1-30.json40
-rw-r--r--stats/pwc-summary-121-150.json90
-rw-r--r--stats/pwc-summary-151-180.json110
-rw-r--r--stats/pwc-summary-181-210.json32
-rw-r--r--stats/pwc-summary-211-240.json50
-rw-r--r--stats/pwc-summary-31-60.json38
-rw-r--r--stats/pwc-summary-61-90.json24
-rw-r--r--stats/pwc-summary-91-120.json38
-rw-r--r--stats/pwc-summary.json468
17 files changed, 1935 insertions, 1414 deletions
diff --git a/challenge-092/athanasius/perl/Interval.pm b/challenge-092/athanasius/perl/Interval.pm
new file mode 100644
index 0000000000..aed117cd96
--- /dev/null
+++ b/challenge-092/athanasius/perl/Interval.pm
@@ -0,0 +1,89 @@
+#!perl
+
+###############################################################################
+##
+## Perl Weekly Challenge 092, Task #2: Insert Interval
+##
+###############################################################################
+
+#--------------------------------------#
+# Copyright © 2020 PerlMonk Athanasius #
+#--------------------------------------#
+
+package Interval;
+
+use strict;
+use warnings;
+use Moo;
+use Regexp::Common qw( number );
+
+#------------------------------------------------------------------------------
+has start =>
+#------------------------------------------------------------------------------
+(
+ is => 'ro',
+ isa => sub
+ {
+ $_[0] =~ / \A $RE{num}{int} \z /x
+ or die qq[ERROR: "$_[0]" is not an integer];
+ },
+ required => 1,
+);
+
+#------------------------------------------------------------------------------
+has end =>
+#------------------------------------------------------------------------------
+(
+ is => 'ro',
+ isa => sub
+ {
+ $_[0] =~ / \A $RE{num}{int} \z /x
+ or die qq[ERROR: "$_[0]" is not an integer];
+ },
+ required => 1,
+);
+
+#------------------------------------------------------------------------------
+sub BUILD
+#------------------------------------------------------------------------------
+{
+ my ($self) = @_;
+
+ die sprintf qq[ERROR: Start "%d" is greater than end "%d"\n],
+ $self->start, $self->end
+ unless $self->start <= $self->end;
+}
+
+#------------------------------------------------------------------------------
+sub display
+#------------------------------------------------------------------------------
+{
+ my ($self) = @_;
+
+ return sprintf '(%d,%d)', $self->start, $self->end;
+}
+
+#------------------------------------------------------------------------------
+sub precedes
+#------------------------------------------------------------------------------
+{
+ my ($self, $rhs) = @_;
+
+ return $self->end < $rhs->start;
+}
+
+#------------------------------------------------------------------------------
+sub merge
+#------------------------------------------------------------------------------
+{
+ my ($self, $rhs) = @_;
+
+ my $minimum = $self->start <= $rhs->start ? $self->start : $rhs->start;
+ my $maximum = $self->end >= $rhs->end ? $self->end : $rhs->end;
+
+ return Interval->new( start => $minimum, end => $maximum );
+}
+
+###############################################################################
+1;
+###############################################################################
diff --git a/challenge-092/athanasius/perl/ch-1.pl b/challenge-092/athanasius/perl/ch-1.pl
new file mode 100644
index 0000000000..b3231dee6b
--- /dev/null
+++ b/challenge-092/athanasius/perl/ch-1.pl
@@ -0,0 +1,110 @@
+#!perl
+
+###############################################################################
+=comment
+
+Perl Weekly Challenge 092
+=========================
+
+Task #1
+-------
+*Isomorphic Strings*
+
+Submitted by: Mohammad S Anwar
+
+You are given two strings $A and $B.
+
+Write a script to check if the given strings are *Isomorphic*
+(https://www.educative.io/edpresso/how-to-check-if-two-strings-are-isomorphic).
+Print 1 if they are otherwise 0.
+
+Example 1:
+
+ Input: $A = "abc"; $B = "xyz"
+ Output: 1
+
+Example 2:
+
+ Input: $A = "abb"; $B = "xyy";
+ Output: 1
+
+Example 3:
+
+ Input: $A = "sum"; $B = "add"
+ Output: 0
+
+=cut
+###############################################################################
+
+#--------------------------------------#
+# Copyright © 2020 PerlMonk Athanasius #
+#--------------------------------------#
+
+use strict;
+use warnings;
+use Const::Fast;
+use Set::Scalar;
+
+const my $USAGE =>
+"Usage:
+ perl $0 <A> <B>
+
+ <A> First string
+ <B> Second string\n";
+
+#------------------------------------------------------------------------------
+BEGIN
+#------------------------------------------------------------------------------
+{
+ $| = 1;
+ print "\nChallenge 092, Task #1: Isomorphic Strings (Perl)\n\n";
+}
+
+#==============================================================================
+MAIN:
+#==============================================================================
+{
+ scalar @ARGV == 2 or die $USAGE;
+
+ my ($A, $B) = @ARGV;
+
+ print qq[Input: \$A = "$A"; \$B = "$B"\n];
+
+ printf "Output: %d\n", strings_are_isomorphic($A, $B);
+}
+
+#------------------------------------------------------------------------------
+sub strings_are_isomorphic
+#------------------------------------------------------------------------------
+{
+ my ($A, $B) = @ARGV;
+ my @A = split //, $A;
+ my @B = split //, $B;
+
+ return 0 if scalar @A != scalar @B;
+
+ my %map;
+ my $set = Set::Scalar->new;
+
+ for my $i (0 .. $#A)
+ {
+ my $c1 = $A[$i];
+ my $c2 = $B[$i];
+
+ if (exists $map{$c1})
+ {
+ return 0 if $map{$c1} ne $c2;
+ }
+ else
+ {
+ return 0 if $set->has($c2);
+
+ $map{$c1} = $c2;
+ $set->insert($c2);
+ }
+ }
+
+ return 1;
+}
+
+###############################################################################
diff --git a/challenge-092/athanasius/perl/ch-2.pl b/challenge-092/athanasius/perl/ch-2.pl
new file mode 100644
index 0000000000..4ed5ce2f2b
--- /dev/null
+++ b/challenge-092/athanasius/perl/ch-2.pl
@@ -0,0 +1,197 @@
+#!perl
+
+###############################################################################
+=comment
+
+Perl Weekly Challenge 092
+=========================
+
+Task #2
+-------
+*Insert Interval*
+
+Submitted by: Mohammad S Anwar
+
+You are given a set of sorted non-overlapping intervals and a new interval.
+
+Write a script to merge the new interval to the given set of intervals.
+
+Example 1:
+
+ Input $S = (1,4), (8,10); $N = (2,6)
+ Output: (1,6), (8,10)
+
+Example 2:
+
+ Input $S = (1,2), (3,7), (8,10); $N = (5,8)
+ Output: (1,2), (3,10)
+
+Example 3:
+
+ Input $S = (1,5), (7,9); $N = (10,11)
+ Output: (1,5), (7,9), (10,11)
+
+=cut
+###############################################################################
+
+#--------------------------------------#
+# Copyright © 2020 PerlMonk Athanasius #
+#--------------------------------------#
+
+#==============================================================================
+=comment
+
+Assumptions:
+-- All intervals are either integer intervals, or they at least have only
+ integer end-points
+-- From the examples, it appears that intervals should be merged if, and only
+ if, they share one or more elements
+
+Algorithm:
+-- All intervals in $S that share one or more elements with $N are merged with
+ $N and with each other to form a single, merged interval that replaces them
+ all in the output
+-- All other intervals in $S remain unchanged in the output sequence
+
+Testing:
+-- Set $TEST to a true value to compare actual with expected output
+
+=cut
+#==============================================================================
+
+use strict;
+use warnings;
+use Const::Fast;
+use Test::More;
+use lib qw( . );
+use Interval;
+
+const my $TEST => 0;
+
+const my @INPUT =>
+(
+ [ 'Example 1', [ [1,4], [8,10] ], [ 2, 6] ],
+ [ 'Example 2', [ [1,2], [3, 7], [ 8,10] ], [ 5, 8] ],
+ [ 'Example 3', [ [1,5], [7, 9] ], [10,11] ],
+ [ 'N precedes S', [ [1,5], [7, 9] ], [-1, 0] ],
+ [ 'N follows S', [ [1,4], [8,10] ], [12,14] ],
+ [ 'Multi-merge', [ [0,2], [4,11], [11,11], [11,13], [15,17] ], [ 9,14] ],
+ [ 'N matches 1', [ [0,1], [2, 3], [ 4, 5] ], [ 2, 3] ],
+ [ 'Merge start', [ [0,3], [5, 7] ], [-4, 2] ],
+ [ 'Merge end', [ [3,5], [7,10] ], [ 9,12] ],
+);
+
+const my @OUTPUT =>
+(
+ [ 'Example 1', [ { start => 1, end => 6 },
+ { start => 8, end => 10 } ] ],
+ [ 'Example 2', [ { start => 1, end => 2 },
+ { start => 3, end => 10 } ] ],
+ [ 'Example 3', [ { start => 1, end => 5 },
+ { start => 7, end => 9 },
+ { start => 10, end => 11 } ] ],
+ [ 'N precedes S', [ { start => -1, end => 0 },
+ { start => 1, end => 5 },
+ { start => 7, end => 9 } ] ],
+ [ 'N follows S', [ { start => 1, end => 4 },
+ { start => 8, end => 10 },
+ { start => 12, end => 14 } ] ],
+ [ 'Multi-merge', [ { start => 0, end => 2 },
+ { start => 4, end => 14 },
+ { start => 15, end => 17 } ] ],
+ [ 'N matches 1', [ { start => 0, end => 1 },
+ { start => 2, end => 3 },
+ { start => 4, end => 5 } ] ],
+ [ 'Merge start', [ { start => -4, end => 3 },
+ { start => 5, end => 7 } ] ],
+ [ 'Merge end', [ { start => 3, end => 5 },
+ { start => 7, end => 12 } ] ],
+);
+
+const my $USAGE =>
+"\nUsage:
+ perl $0
+ (Add new input to the \@INPUT array)\n";
+
+#------------------------------------------------------------------------------
+BEGIN
+#------------------------------------------------------------------------------
+{
+ $| = 1;
+ print "\nChallenge 092, Task #2: Insert Interval (Perl)\n";
+}
+
+#==============================================================================
+MAIN:
+#==============================================================================
+{
+ die $USAGE if scalar @ARGV > 0;
+
+ for my $i (0 .. $#INPUT)
+ {
+ my $input = $INPUT[$i];
+ my @S;
+ push @S, Interval->new(start => $_->[0], end => $_->[1])
+ for @{ $input->[1] };
+
+ my $N = Interval->new(start => $input->[2][0], end => $input->[2][1]);
+
+ unless ($TEST)
+ {
+ printf "\n%s\nInput: \$S = %s; \$N = %s\n", $input->[0],
+ join(', ', map { $_->display } @S), $N->display;
+ }
+
+ my @out = insert_interval(\@S, $N);
+
+ if ($TEST)
+ {
+ is($input->[0], $OUTPUT[$i]->[0],
+ $input->[0] . ': Same names');
+
+ is_deeply(\@out, $OUTPUT[$i]->[1],
+ $input->[0] . ': Interval inserted correctly');
+ }
+ else
+ {
+ printf "Output: %s\n", join ', ', map { $_->display } @out;
+ }
+ }
+
+ done_testing if $TEST;
+}
+
+#------------------------------------------------------------------------------
+sub insert_interval
+#------------------------------------------------------------------------------
+{
+ my ($S, $N) = @_;
+ my $merged = 0;
+ my @out;
+
+ # Note: The logic in the loop below relies on the Task requirement that the
+ # input intervals be *sorted* (in increasing order)
+
+ for my $interval (@$S)
+ {
+ if ($merged || $interval->precedes($N))
+ {
+ push @out, $interval;
+ }
+ elsif ($N->precedes($interval))
+ {
+ push @out, $N, $interval;
+ $merged = 1;
+ }
+ else
+ {
+ $N = $N->merge($interval);
+ }
+ }
+
+ push @out, $N unless $merged;
+
+ return @out;
+}
+
+###############################################################################
diff --git a/challenge-092/athanasius/raku/ch-1.raku b/challenge-092/athanasius/raku/ch-1.raku
new file mode 100644
index 0000000000..fd7517471a
--- /dev/null
+++ b/challenge-092/athanasius/raku/ch-1.raku
@@ -0,0 +1,106 @@
+use v6d;
+
+###############################################################################
+=begin comment
+
+Perl Weekly Challenge 092
+=========================
+
+Task #1
+-------
+*Isomorphic Strings*
+
+Submitted by: Mohammad S Anwar
+
+You are given two strings $A and $B.
+
+Write a script to check if the given strings are *Isomorphic*
+(https://www.educative.io/edpresso/how-to-check-if-two-strings-are-isomorphic).
+Print 1 if they are otherwise 0.
+
+Example 1:
+
+ Input: $A = "abc"; $B = "xyz"
+ Output: 1
+
+Example 2:
+
+ Input: $A = "abb"; $B = "xyy";
+ Output: 1
+
+Example 3:
+
+ Input: $A = "sum"; $B = "add"
+ Output: 0
+
+=end comment
+###############################################################################
+
+#--------------------------------------#
+# Copyright © 2020 PerlMonk Athanasius #
+#--------------------------------------#
+
+#------------------------------------------------------------------------------
+BEGIN
+#------------------------------------------------------------------------------
+{
+ "\nChallenge 092, Task #1: Isomorphic Strings (Raku)\n".put;
+}
+
+#==============================================================================
+sub MAIN
+(
+ Str:D $A, #= First string
+ Str:D $B, #= Second string
+)
+#==============================================================================
+{
+ qq[Input: \$A = "$A"; \$B = "$B"].put;
+
+ "Output: %d\n".printf: strings-are-isomorphic($A, $B) ?? 1 !! 0;
+}
+
+#------------------------------------------------------------------------------
+sub strings-are-isomorphic( Str:D $A, Str:D $B --> Bool:D )
+#------------------------------------------------------------------------------
+{
+ my Str @A = $A.split: '', :skip-empty;
+ my Str @B = $B.split: '', :skip-empty;
+
+ return False if @A.elems != @B.elems;
+
+ my Str %map;
+ my SetHash $set; # or: my SetHash $set = SetHash.new;
+
+ for 0 .. @A.end -> UInt $i
+ {
+ my Str $c1 = @A[$i];
+ my Str $c2 = @B[$i];
+
+ if %map{$c1}:exists
+ {
+ return False if %map{$c1} ne $c2;
+ }
+ else
+ {
+ return False if $set{$c2}; # or: return False if $c2 ∈ $set;
+
+ %map{$c1} = $c2;
+ $set.set: $c2;
+ }
+ }
+
+ return True;
+}
+
+#------------------------------------------------------------------------------
+sub USAGE()
+#------------------------------------------------------------------------------
+{
+ my Str $usage = $*USAGE;
+
+ $usage ~~ s/ ($*PROGRAM-NAME) /raku $0/;
+ $usage.put;
+}
+
+##############################################################################
diff --git a/stats/pwc-current.json b/stats/pwc-current.json
index 1b4f5994d9..ec54684473 100644
--- a/stats/pwc-current.json
+++ b/stats/pwc-current.json
@@ -1,18 +1,11 @@
{
- "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/>"
- },
"series" : [
{
- "name" : "Perl Weekly Challenge - 092",
- "colorByPoint" : 1,
"data" : [
{
- "name" : "Aaron Smith",
"y" : 3,
- "drilldown" : "Aaron Smith"
+ "drilldown" : "Aaron Smith",
+ "name" : "Aaron Smith"
},
{
"name" : "Alexander Karelas",
@@ -20,24 +13,29 @@
"drilldown" : "Alexander Karelas"
},
{
- "y" : 2,
"drilldown" : "Alexander Pankoff",
+ "y" : 2,
"name" : "Alexander Pankoff"
},
{
- "name" : "Andrew Shitov",
+ "drilldown" : "Andrew Shitov",
"y" : 2,
- "drilldown" : "Andrew Shitov"
+ "name" : "Andrew Shitov"
+ },
+ {
+ "drilldown" : "Athanasius",
+ "y" : 3,
+ "name" : "Athanasius"
},
{
- "name" : "Cheok-Yin Fung",
"y" : 2,
- "drilldown" : "Cheok-Yin Fung"
+ "drilldown" : "Cheok-Yin Fung",
+ "name" : "Cheok-Yin Fung"
},
{
- "name" : "Dave Jacoby",
+ "y" : 2,
"drilldown" : "Dave Jacoby",
- "y" : 2
+ "name" : "Dave Jacoby"
},
{
"name" : "E. Choroba",
@@ -50,14 +48,14 @@
"drilldown" : "Flavio Poletti"
},
{
- "name" : "James Smith",
+ "drilldown" : "James Smith",
"y" : 3,
- "drilldown" : "James Smith"
+ "name" : "James Smith"
},
{
- "name" : "Jan Krnavek",
"drilldown" : "Jan Krnavek",
- "y" : 2
+ "y" : 2,
+ "name" : "Jan Krnavek"
},
{
"name" : "Jorg Sommrey",
@@ -65,9 +63,9 @@
"drilldown" : "Jorg Sommrey"
},
{
- "name" : "Kang-min Liu",
"y" : 4,
- "drilldown" : "Kang-min Liu"
+ "drilldown" : "Kang-min Liu",
+ "name" : "Kang-min Liu"
},
{
"y" : 1,
@@ -75,19 +73,19 @@
"name" : "Lubos Kolouch"
},
{
- "y" : 2,
"drilldown" : "Mark Anderson",
+ "y" : 2,
"name" : "Mark Anderson"
},
{
- "name" : "Niels van Dijke",
+ "y" : 2,
"drilldown" : "Niels van Dijke",
- "y" : 2
+ "name" : "Niels van Dijke"
},
{
+ "name" : "Nuno Vieira",
"drilldown" : "Nuno Vieira",
- "y" : 2,
- "name" : "Nuno Vieira"
+ "y" : 2
},
{
"y" : 2,
@@ -101,18 +99,18 @@
},
{
"name" : "Philip Hood",
- "y" : 2,
- "drilldown" : "Philip Hood"
+ "drilldown" : "Philip Hood",
+ "y" : 2
},
{
- "drilldown" : "Roger Bell_West",
+ "name" : "Roger Bell_West",
"y" : 5,
- "name" : "Roger Bell_West"
+ "drilldown" : "Roger Bell_West"
},
{
- "name" : "Simon Green",
+ "y" : 3,
"drilldown" : "Simon Green",
- "y" : 3
+ "name" : "Simon Green"
},
{
"name" : "Stuart Little",
@@ -129,13 +127,45 @@
"y" : 3,
"drilldown" : "W. Luis Mochan"
}
- ]
+ ],
+ "name" : "Perl Weekly Challenge - 092",
+ "colorByPoint" : 1
}
],
+ "xAxis" : {
+ "type" : "category"
+ },
+ "title" : {
+ "text" : "Perl Weekly Challenge - 092"
+ },
+ "yAxis" : {
+ "title" : {
+ "text" : "Total Solutions"
+ }
+ },
+ "subtitle" : {
+ "text" : "[Champions: 25] Last updated at 2020-12-27 15:49:36 GMT"
+ },
+ "legend" : {
+ "enabled" : 0
+ },
+ "tooltip" : {
+ "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>",
+ "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>",
+ "followPointer" : 1
+ },
+ "plotOptions" : {
+ "series" : {
+ "dataLabels" : {
+ "enabled" : 1,
+ "format" : "{point.y}"
+ },
+ "borderWidth" : 0
+ }
+ },
"drilldown" : {
"series" : [
{
- "id" : "Aaron Smith",
"data" : [
[
"Raku",
@@ -146,29 +176,31 @@
1
]
],
- "name" : "Aaron Smith"
+ "name" : "Aaron Smith",
+ "id" : "Aaron Smith"
},
{
+ "id" : "Alexander Karelas",
"data" : [
[
"Perl",
2
]
],
- "name" : "Alexander Karelas",
- "id" : "Alexander Karelas"
+ "name" : "Alexander Karelas"
},
{
- "id" : "Alexander Pankoff",
"data" : [
[
"Perl",
2
]
],
- "name" : "Alexander Pankoff"
+ "name" : "Alexander Pankoff",
+ "id" : "Alexander Pankoff"
},
{
+ "id" : "Andrew Shitov",
"data" : [
[
"Raku",
@@ -179,40 +211,55 @@
1
]
],
- "name" : "Andrew Shitov",
- "id" : "Andrew Shitov"
+ "name" : "Andrew Shitov"
+ },
+ {
+ "name" : "Athanasius",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 1
+ ]
+ ],
+ "id" : "Athanasius"
},
{
- "id" : "Cheok-Yin Fung",
"name" : "Cheok-Yin Fung",
"data" : [
[
"Perl",
2
]
- ]
+ ],
+ "id" : "Cheok-Yin Fung"
},
{
- "id" : "Dave Jacoby",
- "name" : "Dave Jacoby",
"data" : [
[
"Perl",
2
]
- ]
+ ],
+ "name" : "Dave Jacoby",
+ "id" : "Dave Jacoby"
},
{
- "id" : "E. Choroba",
"data" : [
[
"Perl",
2
]
],
- "name" : "E. Choroba"
+ "name" : "E. Choroba",
+ "id" : "E. Choroba"
},
{
+ "id" : "Flavio Poletti",
+ "name" : "Flavio Poletti",
"data" : [
[
"Perl",
@@ -222,11 +269,10 @@
"Blog",
2
]
- ],
- "name" : "Flavio Poletti",
- "id" : "Flavio Poletti"
+ ]
},
{
+ "id" : "James Smith",
"name" : "James Smith",
"data" : [
[
@@ -237,8 +283,7 @@
"Blog",
1
]
- ],
- "id" : "James Smith"
+ ]
},
{
"data" : [
@@ -251,17 +296,17 @@
"id" : "Jan Krnavek"
},
{
- "id" : "Jorg Sommrey",
- "name" : "Jorg Sommrey",
"data" : [
[
"Perl",
2
]
- ]
+ ],
+ "name" : "Jorg Sommrey",
+ "id" : "Jorg Sommrey"
},
{
- "name" : "Kang-min Liu",
+ "id" : "Kang-min Liu",
"data" : [
[
"Raku",
@@ -272,66 +317,66 @@
2
]
],
- "id" : "Kang-min Liu"
+ "name" : "Kang-min Liu"
},
{
+ "id" : "Lubos Kolouch",
"name" : "Lubos Kolouch",
"data" : [
[
"Perl",
1
]
- ],
- "id" : "Lubos Kolouch"
+ ]
},
{
"id" : "Mark Anderson",
+ "name" : "Mark Anderson",
"data" : [
[
"Raku",
2
]
- ],
- "name" : "Mark Anderson"
+ ]
},
{
"id" : "Niels van Dijke",
- "name" : "Niels van Dijke",
"data" : [
[
"Perl",
2
]
- ]
+ ],
+ "name" : "Niels van Dijke"
},
{
- "name" : "Nuno Vieira",
"data" : [
[
"Perl",
2
]
],
+ "name" : "Nuno Vieira",
"id" : "Nuno Vieira"
},
{
+ "id" : "Paulo Custodio",
"data" : [
[
"Perl",
2
]
],
- "name" : "Paulo Custodio",
- "id" : "Paulo Custodio"
+ "name" : "Paulo Custodio"
},
{
+ "name" : "Pete Houston",
"data" : [
[
"Perl",
2
]
],
- "name" : "Pete Houston",
"id" : "Pete Houston"
},
{
@@ -345,6 +390,7 @@
"name" : "Philip Hood"
},
{
+ "id" : "Roger Bell_West",
"data" : [
[
"Perl",
@@ -359,10 +405,10 @@
1
]
],
- "name" : "Roger Bell_West",
- "id" : "Roger Bell_West"
+ "name" : "Roger Bell_West"
},
{
+ "id" : "Simon Green",
"name" : "Simon Green",
"data" : [
[
@@ -373,20 +419,20 @@
"Blog",
1
]
- ],
- "id" : "Simon Green"
+ ]
},
{
- "id" : "Stuart Little",
"name" : "Stuart Little",
"data" : [
[
"Raku",
2
]
- ]
+ ],
+ "id" : "Stuart Little"
},
{
+ "name" : "Ulrich Rieke",
"data" : [
[
"Perl",
@@ -397,11 +443,9 @@
2
]
],
- "name" : "Ulrich Rieke",
"id" : "Ulrich Rieke"
},
{
- "id" : "W. Luis Mochan",
"name" : "W. Luis Mochan",
"data" : [
[
@@ -412,37 +456,12 @@
"Blog",
1
]
- ]
+ ],
+ "id" : "W. Luis Mochan"
}
]
},
- "yAxis" : {
- "title" : {
- "text" : "Total Solutions"
- }
- },
- "xAxis" : {
- "type" : "category"
- },
- "plotOptions" : {
- "series" : {
- "dataLabels" : {