aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-152/colin-crain/perl/ch-1.pl146
-rwxr-xr-xchallenge-152/colin-crain/perl/ch-2.pl170
-rwxr-xr-xchallenge-152/colin-crain/raku/ch-1.raku22
-rwxr-xr-xchallenge-152/colin-crain/raku/ch-2.raku68
-rw-r--r--stats/pwc-current.json240
-rw-r--r--stats/pwc-language-breakdown-summary.json48
-rw-r--r--stats/pwc-language-breakdown.json994
-rw-r--r--stats/pwc-leaders.json706
-rw-r--r--stats/pwc-summary-1-30.json92
-rw-r--r--stats/pwc-summary-121-150.json32
-rw-r--r--stats/pwc-summary-151-180.json104
-rw-r--r--stats/pwc-summary-181-210.json114
-rw-r--r--stats/pwc-summary-211-240.json20
-rw-r--r--stats/pwc-summary-241-270.json46
-rw-r--r--stats/pwc-summary-31-60.json20
-rw-r--r--stats/pwc-summary-61-90.json34
-rw-r--r--stats/pwc-summary-91-120.json126
-rw-r--r--stats/pwc-summary.json540
18 files changed, 1968 insertions, 1554 deletions
diff --git a/challenge-152/colin-crain/perl/ch-1.pl b/challenge-152/colin-crain/perl/ch-1.pl
new file mode 100755
index 0000000000..6ad1905161
--- /dev/null
+++ b/challenge-152/colin-crain/perl/ch-1.pl
@@ -0,0 +1,146 @@
+#!/Users/colincrain/perl5/perlbrew/perls/perl-5.32.0/bin/perl
+#
+# paths-of-least-resistance.pl
+#
+# Triangle Sum Path
+# Submitted by: Mohammad S Anwar
+# You are given a triangle array.
+#
+# Write a script to find the minimum sum path from top to bottom.
+#
+# Example 1:
+# Input: $triangle = [ [1], [5,3], [2,3,4], [7,1,0,2], [6,4,5,2,8] ]
+#
+# 1
+# 5 3
+# 2 3 4
+# 7 1 0 2
+# 6 4 5 2 8
+#
+# Output: 8
+#
+# Minimum Sum Path = 1 + 3 + 2 + 0 + 2 => 8
+# Example 2:
+# Input: $triangle = [ [5], [2,3], [4,1,5], [0,1,2,3], [7,2,4,1,9] ]
+#
+# 5
+# 2 3
+# 4 1 5
+# 0 1 2 3
+# 7 2 4 1 9
+#
+# Output: 9
+#
+# Minimum Sum Path = 5 + 2 + 1 + 0 + 1 => 9
+
+# method:
+#
+# This took me bit, understanding what exactly was meant by the
+# idea of a "minimum sum path". A triangle, to me, implies a
+# directed graph of some sort, which would involve navigating
+# the edges in some optimal fashion.
+#
+# A quick study of the examples shows this not to be the case.
+# In fact, for lack of some flash of insight I can't seem to
+# come up with much of a reason at all for using those terms to
+# descibe what we are being asked to do. I mean, its not wrong,
+# per se, just not very illuminating.
+#
+# The first two ideas, "minimum" and "sum" speak for
+# themselves, and the smallest total value from a sequence of
+# addition is indeed what we want. It's the "path" part that
+# strikes me as the part that will cause confusion. The term
+# path generally spaks to a series of connected steps
+# describing a way to proceed. One might think that the "steps"
+# involved here were somehow the selected minimal digits, but
+# as it turn out the steps are the the descending levels of the
+# triangle, with each level a complete unit. As such the goal
+# is only to select the minimal value from each level, one per
+# level, and sum the collection.
+#
+# As the triangles themselves are delivered transformed into a
+# flat list-of-lists data structure, the levels themseleves are
+# already grouped into groups of elements for us. Although they
+# are constructed as an array-of-arrays, as that is the data
+# structure available to us, in practice the collection is
+# unordered: the "sum" operation is communitive, and does not
+# care about the order of the additions. Likewise the "minimum"
+# operates on a set, finding the smallest value, again without
+# regard to order.
+#
+# So hence my use of the word "lists" before, as the indexing
+# that de facto exists is inconsequential to either the
+# processing or the outcome. What we have is a list of
+# anonymous array units to be processed one-by-one until we are
+# dine, gathering from each the smallest element to an
+# accumulator that is reported.
+#
+# That's a lot of words to very specifically describe a much
+# simpler operation than I first expected.
+#
+# Although just printing the actual sum would be simpler, we'll
+# follow the example and gather the elements selected along the
+# way to produce our "path".
+#
+# ---
+#
+# You know, when I do these challenges, and especially when I
+# review the work of others, I make a concerted effort not to
+# ever use the word "easy". Why? Because it communicates very
+# little informatiion, and none of it useful. When I say
+# something is easy, I can only really mean that it is easy for
+# me. Other people, less familiar with the material, or the
+# required steps to a solution, might find the task
+# considerably more difficult. I don't know what they know, and
+# knowing the solution myself makes me blind to the state of
+# not knowing it.
+#
+# To them, knowing that I found the task easy does not help at
+# all. It's a distraction, or perhaps nothing at all at best,
+# and at worst sets up a judgemental ruling that their own
+# efforts, struggling to put the pieces together, are
+# substandard. I have no idea why I would ever want to do this.
+# Belittleing another person in no way makes me objectively
+# better. I remain exactly as able after as I was before.
+#
+# This isn't to be taken as a rejection of things actually
+# *being* easy mind you. I love that feeling of being overtaken
+# by exhuberance on a job well-done. Confidence is good, as is
+# pride in one's work, up to but not beyond the point of being
+# noticed by the gods. That other related word, hubris, is an
+# important idea to keep around, and I'm quite pleased a
+# clasicist hammered the nuances of the Greek term into my head
+# years ago. It has seved me well in life.
+#
+# So in the end I've decided that declaring things "easy"
+# amounts to nothing but a brag. An empty boast at that, as the
+# claim does not achieve anything of value. The only possible
+# effect it can have, it seems, is to cut someone else down, if
+# they are finding the task difficult.
+#
+# Perhaps I'm being a little hard on the term. It's still a
+# good word, after all.
+#
+# But I really can't stand braggarts.
+#
+#
+# © 2022 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+use warnings;
+use strict;
+use utf8;
+use feature ":5.26";
+use feature qw(signatures);
+no warnings 'experimental::signatures';
+
+use List::Util qw( sum min );
+
+## default triangle
+my $triangle = [ [1], [5,3], [2,3,4], [7,1,0,2], [6,4,5,2,8] ] ;
+
+my @out = map { min( $_->@* ) } $triangle->@*;
+
+say "minimum sum path: ", (join ' + ', @out), " => ", sum @out;
diff --git a/challenge-152/colin-crain/perl/ch-2.pl b/challenge-152/colin-crain/perl/ch-2.pl
new file mode 100755
index 0000000000..cca54a2236
--- /dev/null
+++ b/challenge-152/colin-crain/perl/ch-2.pl
@@ -0,0 +1,170 @@
+#!/Users/colincrain/perl5/perlbrew/perls/perl-5.32.0/bin/perl
+#
+# whos-masking-the-mask.pl
+#
+# Rectangle Area
+# Submitted by: Mohammad S Anwar
+#
+# You are given coordinates bottom-left and top-right corner of
+# two rectangles in a 2D plane.
+#
+# Write a script to find the total area covered by the two rectangles.
+#
+# Example 1:
+# Input: Rectangle 1 => (-1,0), (2,2)
+# Rectangle 2 => (0,-1), (4,4)
+#
+# Output: 22
+#
+# Example 2:
+# Input: Rectangle 1 => (-3,-1), (1,3)
+# Rectangle 2 => (-1,-3), (2,2)
+#
+# Output: 25
+
+# analysis:
+#
+# I like it when the puzzle doesn't explain itself in too much
+# detail as to what's going on with it. Here we are given two
+# rectangles and asked to find the area covered by both. Ok,
+# sure. Deriving the area involves the application of a fairly
+# simple formula. Do that for each and there we are.
+#
+# But what if the rectangles overlap? Oh, right. That's the
+# puzzle. The part that isn't mentioned.
+#
+# If we simply sum the two areas, any overlap will be counted
+# twice. We can't have that. What to do?
+#
+# We need to find that overlap, that's what, and do somehing
+# about it. Stat.
+#
+# What we are looking for then is the *union* of the two areas.
+# For this we take the area covered only by one rectangle, the
+# area covered only by the other, the area covered by both, and
+# then we add all of that up. Or, you know, come to the same
+# answer some other way. Like if we could find just the
+# intersection area, we could subtract that from the sum of
+# each considered independantly. That would work too.
+#
+# So what is the overlap, then? We keep coming back to that
+# question. Let's answer it.
+#
+# In the first example, we have two z-axis ranges, one for each
+# rectangle...
+#
+# Oh right. Before we begin, we'll note that two points only
+# determine a rectangle if it is laid out orthogonally on the
+# plane. If we allow the shape to be rotated, which of course
+# is prefectly allowable in a 2-dimensional cartesion space,
+# then we lose the meaning of the "bottom-left" and "top-right"
+# corners as distinct properties. Although one (or two) points
+# will always be bottom-most, unless we are orthogonally
+# aligned that point will not also be left-most. The whole idea
+# gets schmurtled.
+#
+# So because we are only given the two points to define our
+# rectangle, we can safely infer that that the two rectangles
+# are orthogonally placed within the grid. This is good,
+# because calculating teh area in arbitrarily-rotated
+# rectangles is considerably harder to do. Not impossible, but
+# much more complicated.
+#
+# That settled, we have two x-axis ranges, one for each
+# rectangle. Any overlapped area will be contained within the
+# overlap of these ranges, although the area may still be 0 if
+# there is no \y-axis overlap as well.
+#
+# Which leads us to th e\t-axis next. It is the combination of
+# these four overlaped ranges that in turn defines the left and
+# right, top and bottom extremities of the intersected area.
+#
+# So we get that shape, subtract it from the sum of the two
+# rectangles, ad we have our answer.
+#
+# method:
+#
+# We're going to go with the subtractive solution outlined
+# above. Let's call the area of one rectangle A, the other B.
+# Then we're looking for the union of the two areas:
+#
+# A ∪ B = A + B - ( A ∩ B )
+#
+
+#
+# © 2022 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+use warnings;
+use strict;
+use utf8;
+use feature ":5.26";
+use feature qw(signatures);
+no warnings 'experimental::signatures';
+
+
+
+## a rectangle is defined as two point tuples [$p1,$p2] for the
+## bottom-left and upper-right vertices
+## main functions return returns units²
+
+sub area ( $rect ) {
+ my $x = abs( $rect->[0][0] - $rect->[1][0] );
+ my $y = abs( $rect->[0][1] - $rect->[1][1] );
+ return $x * $y;
+}
+
+sub intersect ( $rect1, $rect2 ) {
+ _overlap( [ map { $_->[0] } $rect1->@* ], ## rect 1 x-axis
+ [ map { $_->[0] } $rect2->@* ] ) ## rect 2 x-axis
+ *
+ _overlap( [ map { $_->[1] } $rect1->@* ], ## rect 1 y-axis
+ [ map { $_->[1] } $rect2->@* ] ); ## rect 2 y-axis
+}
+
+sub union ( $rect1, $rect2 ) {
+ area ($rect1)
+ + area ($rect2)
+ - intersect ($rect1, $rect2) ;
+}
+
+sub _overlap ( $r1, $r2 ) {
+## ranges are ordered 2-element tuples [start,end] : end > start
+## no order is assumed between the two ranges $r1 and $r2
+## returns absolute value of overlapping range
+## there are five cases total:
+## 1. no overlap
+## 2. A overlaps start of B
+## 3. B overlaps start of A
+## 4. A completely encloses B
+## 5. B completely encloses A
+
+ ## sort the ranges by start point (merge cases 2+3 and 4+5)
+ $r1->[0] > $r2->[0] and ( $r1, $r2 ) = ( $r2, $r1 );
+
+ $r2->[0] > $r1->[1]
+ ? 0 ## no overlap (1)
+ : abs( $r2->[0]
+ - ( $r2->[1] > $r1->[1]
+ ? $r1->[1] ## intersection (2+3)
+ : $r2->[1] ) ) ## A encloses B (4+5)
+}
+
+
+
+use Test::More;
+
+is union( [[-1,0], [2,2]], [[0,-1], [4,4]] ), 22, 'ex-1';
+is union( [[-3,-1], [1,3]], [[-1,-3], [2,2]] ), 25, 'ex-2';
+is union( [[-2,-2], [0,0]], [[0,0], [2,2]] ), 8, 'figure-8, no overlap';
+is union( [[0,0], [2,2]], [[0,0], [2,2]] ), 4, 'superimposed, all overlap';
+
+is union( [[0,0], [2,4]], [[0,0], [3,4]] ), 12, 'A in B, left-aligned';
+is union( [[0,0], [3,4]], [[0,0], [2,4]] ), 12, 'B in A, left-aligned';
+is union( [[1,0], [3,4]], [[0,0], [3,4]] ), 12, 'A in B, right-aligned';
+is union( [[0,0], [3,4]], [[1,0], [3,4]] ), 12, 'B in A, right-aligned';
+
+
+done_testing();
diff --git a/challenge-152/colin-crain/raku/ch-1.raku b/challenge-152/colin-crain/raku/ch-1.raku
new file mode 100755
index 0000000000..7d0dbeb49e
--- /dev/null
+++ b/challenge-152/colin-crain/raku/ch-1.raku
@@ -0,0 +1,22 @@
+#!/usr/bin/env perl6
+#
+#
+# the-path-in-the-pyramid.raku
+#
+#
+#
+# © 2022 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+unit sub MAIN () ;
+
+my @triangle = [1], [5,3], [2,3,4], [7,1,0,2], [6,4,5,2,8];
+
+my @out = @triangle.map( { $_.min });
+
+say "minimum sum path: {@out.join(' + ')} => {@out.sum}";
+
+
+
diff --git a/challenge-152/colin-crain/raku/ch-2.raku b/challenge-152/colin-crain/raku/ch-2.raku
new file mode 100755
index 0000000000..00f9c22b65
--- /dev/null
+++ b/challenge-152/colin-crain/raku/ch-2.raku
@@ -0,0 +1,68 @@
+#!/usr/bin/env perl6
+#
+#
+# whos-masking-the-mask.raku
+#
+#
+#
+# © 2022 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+unit sub MAIN () ;
+
+sub area ( @rect ) {
+
+ ((@rect[0][0] - @rect[1][0]) * (@rect[0][1] - @rect[1][1])).abs
+}
+
+sub intersect ( @rect1, @rect2 ) {
+
+ _overlap( @rect1.map(*[0]), ## rect 1 x-axis
+ @rect2.map(*[0]) ) ## rect 2 x-axis
+
+ *
+
+ _overlap( @rect1.map(*[1]), ## rect 1 y-axis
+ @rect2.map(*[1]) ); ## rect 2 y-axis
+}
+
+sub union ( @rect1, @rect2 ) {
+
+ area(@rect1)
+ + area(@rect2)
+ - intersect(@rect1, @rect2) ;
+}
+
+sub _overlap ( $r1 is copy, $r2 is copy ) {
+
+ ## sort the ranges by start point (merge cases 2+3 and 4+5)
+ $r1[0] > $r2[0] and ($r1, $r2) = ($r2, $r1) ;
+
+ $r2[0] > $r1[1]
+ ?? 0 ## no overlap (1)
+ !! abs( $r2[0]
+ - ( $r2[1] > $r1[1]
+ ?? $r1[1] ## intersection (2+3)
+ !! $r2[1] ) ) ## A encloses B (4+5)
+}
+
+
+use Test;
+
+is union( ((-1,0),(2,2) ), ((0,-1),(4,4)) ) , 22, 'ex-1';
+is union( ((-3,-1), (1,3)), ((-1,-3), (2,2)) ) , 25, 'ex-2';
+is union( ((-2,-2), (0,0)), ((1,1), (3,3)) ) , 8, 'independant, no overlap';
+is union( ((-2,-2), (0,0)), ((0,0), (2,2)) ) , 8, 'figure-8, single point overlap';
+is union( ((0,-2), (2,0)), ((0,0), (2,2)) ) , 8, 'stacked, single line overlap';
+is union( ((0,-2), (2,1)), ((0,-1), (2,2)) ) , 8, 'stacked, overlapped';
+is union( ((0,0), (2,2)), ((0,0), (2,2)) ) , 4, 'superimposed, all overlap';
+
+
+is union( ((0,0), (2,4)), ((0,0), (3,4)) ), 12, 'A in B, left-aligned';
+is union( ((0,0), (3,4)), ((0,0), (2,4)) ), 12, 'B in A, left-aligned';
+is union( ((1,0), (3,4)), ((0,0), (3,4)) ), 12, 'A in B, right-aligned';
+is union( ((0,0), (3,4)), ((1,0), (3,4)) ), 12, 'B in A, right-aligned';
+
+
diff --git a/stats/pwc-current.json b/stats/pwc-current.json
index 4676e7f5ca..0a9e7c9b37 100644
--- a/stats/pwc-current.json
+++ b/stats/pwc-current.json
@@ -1,33 +1,36 @@
{
+ "tooltip" : {
+ "followPointer" : 1,
+ "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>",
+ "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>"
+ },
+ "plotOptions" : {
+ "series" : {
+ "borderWidth" : 0,
+ "dataLabels" : {
+ "format" : "{point.y}",
+ "enabled" : 1
+ }
+ }
+ },
"title" : {
"text" : "The Weekly Challenge - 152"
},
"legend" : {
"enabled" : 0
},
- "subtitle" : {
- "text" : "[Champions: 26] Last updated at 2022-02-20 23:25:39 GMT"
- },
- "xAxis" : {
- "type" : "category"
- },
- "yAxis" : {
- "title" : {
- "text" : "Total Solutions"
- }
- },
"series" : [
{
"name" : "The Weekly Challenge - 152",
"data" : [
{
- "drilldown" : "Abigail",
"y" : 2,
+ "drilldown" : "Abigail",
"name" : "Abigail"
},
{
- "drilldown" : "Alexander Pankoff",
"name" : "Alexander Pankoff",
+ "drilldown" : "Alexander Pankoff",
"y" : 4
},
{
@@ -37,83 +40,83 @@
},
{
"name" : "Athanasius",
- "y" : 4,
- "drilldown" : "Athanasius"
+ "drilldown" : "Athanasius",
+ "y" : 4
},
{
+ "y" : 1,
"drilldown" : "Cheok-Yin Fung",
- "name" : "Cheok-Yin Fung",
- "y" : 1
+ "name" : "Cheok-Yin Fung"
},
{
- "y" : 2,
"name" : "Colin Crain",
- "drilldown" : "Colin Crain"
+ "drilldown" : "Colin Crain",
+ "y" : 6
},
{
"name" : "Dave Jacoby",
- "y" : 4,
- "drilldown" : "Dave Jacoby"
+ "drilldown" : "Dave Jacoby",
+ "y" : 4
},
{
"name" : "Duncan C. White",
- "y" : 2,
- "drilldown" : "Duncan C. White"
+ "drilldown" : "Duncan C. White",
+ "y" : 2
},
{
"y" : 2,
- "name" : "E. Choroba",
- "drilldown" : "E. Choroba"
+ "drilldown" : "E. Choroba",
+ "name" : "E. Choroba"
},
{
- "drilldown" : "Flavio Poletti",
"y" : 6,
- "name" : "Flavio Poletti"
+ "name" : "Flavio Poletti",
+ "drilldown" : "Flavio Poletti"
},
{
- "drilldown" : "James Smith",
+ "y" : 3,
"name" : "James Smith",
- "y" : 3
+ "drilldown" : "James Smith"
},
{
- "drilldown" : "Jan Krnavek",
+ "y" : 1,
"name" : "Jan Krnavek",
- "y" : 1
+ "drilldown" : "Jan Krnavek"
},
{
- "drilldown" : "Jorg Sommrey",
+ "y" : 2,
"name" : "Jorg Sommrey",
- "y" : 2
+ "drilldown" : "Jorg Sommrey"
},
{
+ "drilldown" : "Laurent Rosenfeld",
"name" : "Laurent Rosenfeld",
- "y" : 5,
- "drilldown" : "Laurent Rosenfeld"
+ "y" : 5
},
{
- "drilldown" : "Lubos Kolouch",
+ "y" : 2,
"name" : "Lubos Kolouch",
- "y" : 2
+ "drilldown" : "Lubos Kolouch"
},
{
"y" : 4,
- "name" : "Luca Ferrari",
- "drilldown" : "Luca Ferrari"
+ "drilldown" : "Luca Ferrari",
+ "name" : "Luca Ferrari"
},
{
- "drilldown" : "Mark Anderson",
+ "y" : 2,
"name" : "Mark Anderson",
- "y" : 2
+ "drilldown" : "Mark Anderson"
},
{
"drilldown" : "Mohammad S Anwar",
- "y" : 1,
- "name" : "Mohammad S Anwar"
+ "name" : "Mohammad S Anwar",
+ "y" : 1
},
{
- "drilldown" : "Peter Campbell Smith",
"y" : 3,
- "name" : "Peter Campbell Smith"
+ "name" : "Peter Campbell Smith",
+ "drilldown" : "Peter Campbell Smith"
},
{
"y" : 2,
@@ -121,14 +124,14 @@
"drilldown" : "PokGoPun"
},
{
- "drilldown" : "Robert DiCicco",
+ "y" : 2,
"name" : "Robert DiCicco",
- "y" : 2
+ "drilldown" : "Robert DiCicco"
},
{
- "y" : 1,
"name" : "Robert Ransbottom",
- "drilldown" : "Robert Ransbottom"
+ "drilldown" : "Robert Ransbottom",
+ "y" : 1
},
{
"drilldown" : "Roger Bell_West",
@@ -136,41 +139,38 @@
"y" : 5
},
{
- "drilldown" : "Simon Green",
"name" : "Simon Green",
+ "drilldown" : "Simon Green",
"y" : 3
},
{
"y" : 4,
- "name" : "Ulrich Rieke",
- "drilldown" : "Ulrich Rieke"
+ "drilldown" : "Ulrich Rieke",
+ "name" : "Ulrich Rieke"
},
{
- "y" : 3,
+ "drilldown" : "W. Luis Mochan",
"name" : "W. Luis Mochan",
- "drilldown" : "W. Luis Mochan"
+ "y" : 3
}
],
"colorByPoint" : 1
}
],
- "plotOptions" : {
- "series" : {
- "borderWidth" : 0,
- "dataLabels" : {
- "format" : "{point.y}",
- "enabled" : 1
- }
- }
- },
- "tooltip" : {
- "followPointer" : 1,
- "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>",
- "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>"
+ "subtitle" : {
+ "text" : "[Champions: 26] Last updated at 2022-02-21 04:19:01 GMT"
},
"chart" : {
"type" : "column"
},
+ "yAxis" : {
+ "title" : {
+ "text" : "Total Solutions"
+ }
+ },
+ "xAxis" : {
+ "type" : "category"
+ },
"drilldown" : {
"series" : [
{
@@ -198,8 +198,6 @@
"id" : "Alexander Pankoff"
},
{
- "id" : "Arne Sommer",
- "name" : "Arne Sommer",
"data" : [
[
"Raku",
@@ -209,7 +207,9 @@
"Blog",
1
]
- ]
+ ],
+ "name" : "Arne Sommer",
+ "id" : "Arne Sommer"
},
{
"data" : [
@@ -226,27 +226,35 @@
"id" : "Athanasius"
},
{
- "id" : "Cheok-Yin Fung",
+ "name" : "Cheok-Yin Fung",
"data" : [
[
"Perl",
1
]
],
- "name" : "Cheok-Yin Fung"
+ "id" : "Cheok-Yin Fung"
},
{
+ "id" : "Colin Crain",
"data" : [
[
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 2
+ ],
+ [
"Blog",
2
]
],
- "name" : "Colin Crain",
- "id" : "Colin Crain"
+ "name" : "Colin Crain"
},
{
- "id" : "Dave Jacoby",
+ "name" : "Dave Jacoby",
"data" : [
[
"Perl",
@@ -257,31 +265,29 @@
2
]
],
- "name" : "Dave Jacoby"
+ "id" : "Dave Jacoby"
},
{
+ "id" : "Duncan C. White",
+ "name" : "Duncan C. White",
"data" : [
[
"Perl",
2
]
- ],
- "name" : "Duncan C. White",
- "id" : "Duncan C. White"
+ ]
},
{
- "id" : "E. Choroba",
+ "name" : "E. Choroba",
"data" : [
[
"Perl",
2
]
],
- "name" : "E. Choroba"
+ "id" : "E. Choroba"
},
{
- "id" : "Flavio Poletti",
- "name" : "Flavio Poletti",
"data" : [
[
"Perl",
@@ -295,10 +301,12 @@
"Blog",
2
]
- ]
+ ],
+ "name" : "Flavio Poletti",
+ "id" : "Flavio Poletti"
},
{
- "name" : "James Smith",
+ "id" : "James Smith",
"data" : [
[
"Perl",
@@ -309,31 +317,29 @@
1
]
],
- "id" : "James Smith"
+ "name" : "James Smith"
},
{
- "id" : "Jan Krnavek",
"data" : [
[
"Raku",
1
]
],
- "name" : "Jan Krnavek"
+ "name" : "Jan Krnavek",
+ "id" : "Jan Krnavek"
},
{
"id" : "Jorg Sommrey",
- "name" : "Jorg Sommrey",
"data" : [
[
"Perl",
2
]
- ]
+ ],
+ "name" : "Jorg Sommrey"
},
{
- "id" : "Laurent Rosenfeld",
- "name" : "Laurent Rosenfeld",
"data" : [
[
"Perl",
@@ -347,19 +353,23 @@
"Blog",
1
]
- ]
+ ],
+ "name" : "Laurent Rosenfeld",
+ "id" : "Laurent Rosenfeld"
},
{
+ "id" : "Lubos Kolouch",
+ "name" : "Lubos Kolouch",
"data" : [
[
"Perl",
2
]
- ],
- "name" : "Lubos Kolouch",
- "id" : "Lubos Kolouch"
+ ]
},
{
+ "id" : "Luca Ferrari",
+ "name" : "Luca Ferrari",
"data" : [
[
"Raku",
@@ -369,29 +379,27 @@
"Blog",
2
]
- ],
- "name" : "Luca Ferrari",
- "id" : "Luca Ferrari"
+ ]
},
{
- "id" : "Mark Anderson",
"name" : "Mark Anderson",
"data" : [
[
"Raku",
2
]
- ]
+ ],
+ "id" : "Mark Anderson"
},
{
"id" : "Mohammad S Anwar",
+ "name" : "Mohammad S Anwar",
"data" : [
[
"Perl",
1
]
- ],
- "name" : "Mohammad S Anwar"
+ ]
},
{
"name" : "Peter Campbell Smith",
@@ -408,36 +416,37 @@
"id" : "Peter Campbell Smith"
},
{
+ "id" : "PokGoPun",
"data" : [
[
"Perl",
2
]
],
- "name" : "PokGoPun",
- "id" : "PokGoPun"
+ "name" : "PokGoPun"
},
{
- "id" : "Robert DiCicco",
- "name" : "Robert DiCicco",
"data" : [
[
"Perl",
2
]
- ]
+ ],
+ "name" : "Robert DiCicco",
+ "id" : "Robert DiCicco"
},
{
- "id" : "Robert Ransbottom",
"data" : [
[
"Raku",
1
]
],
- "name" : "Robert Ransbottom"
+ "name" : "Robert Ransbottom",
+ "id" : "Robert Ransbottom"
},
{
+ "name" : "Roger Bell_West",
"data" : [
[
"Perl",
@@ -452,10 +461,10 @@
1
]
],
- "name" : "Roger Bell_West",
"id" : "Roger Bell_West"
},
{
+ "name" : "Simon Green",
"data" : [
[
"Perl",
@@ -466,11 +475,10 @@
1
]
],
- "name" : "Simon Green",
"id" : "Simon Green"
},
{
- "name" : "Ulrich Rieke",
+ "id" : "Ulrich Rieke",
"data" : [
[
"Perl",
@@ -481,11 +489,10 @@
2
]
],
- "id" : "Ulrich Rieke"
+ "name" : "Ulrich Rieke"
},
{
"id" : "W. Luis Mochan",