aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-02-23 21:14:30 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-02-23 21:14:30 +0000
commit89d243142e35f87f8293178516f076e4ece3fe87 (patch)
treed82baeee3829aa44cf11342f27c54c774a78bedc
parentf58e7982f84d76d0b1356bd3393b7af4d4c595da (diff)
downloadperlweeklychallenge-club-89d243142e35f87f8293178516f076e4ece3fe87.tar.gz
perlweeklychallenge-club-89d243142e35f87f8293178516f076e4ece3fe87.tar.bz2
perlweeklychallenge-club-89d243142e35f87f8293178516f076e4ece3fe87.zip
- Added solutions by Colin Crain.
-rw-r--r--challenge-048/colin-crain/perl/ch-1.pl130
-rw-r--r--challenge-048/colin-crain/perl/ch-2.pl64
-rw-r--r--challenge-048/colin-crain/raku/ch-1.p6127
-rw-r--r--challenge-048/colin-crain/raku/ch-2.p656
-rw-r--r--stats/pwc-current.json277
-rw-r--r--stats/pwc-language-breakdown-summary.json58
-rw-r--r--stats/pwc-language-breakdown.json366
-rw-r--r--stats/pwc-leaders.json744
-rw-r--r--stats/pwc-summary-1-30.json46
-rw-r--r--stats/pwc-summary-121-150.json44
-rw-r--r--stats/pwc-summary-31-60.json92
-rw-r--r--stats/pwc-summary-61-90.json32
-rw-r--r--stats/pwc-summary-91-120.json24
-rw-r--r--stats/pwc-summary.json348
14 files changed, 1402 insertions, 1006 deletions
diff --git a/challenge-048/colin-crain/perl/ch-1.pl b/challenge-048/colin-crain/perl/ch-1.pl
new file mode 100644
index 0000000000..e7e68883e1
--- /dev/null
+++ b/challenge-048/colin-crain/perl/ch-1.pl
@@ -0,0 +1,130 @@
+#! /opt/local/bin/perl
+#
+# ugandan_firing_squad.pl
+#
+# TASK #1 Survivor
+# There are 50 people standing in a circle in position 1 to 50. The
+# person standing at position 1 has a shovel. He kills the next
+# person i.e. standing at position 2 and pass on the shovel to the
+# immediate next i.e. person standing at position 3. Now the person
+# at position 3 does the same and it goes on until only one
+# survives.
+#
+# Write a script to find out the survivor.
+#
+# comments: this is much like PWC 46-2, "Is the Room Open?" albeit with
+# a shockingly un-healthy dose of inhumanity and horror. In
+# keeping with that spirit, I've changed the title and the supplied weapon
+# from sword to shovel. I'm sure there are other options of
+# historical precedence to choose from, but for some reason I went
+# with Idi Amin. We will not speak to that sordid reference again.
+#
+# In the Hotel challenge, the second employee merely closes every
+# second door, which is tidy and well mannered. In this version we
+# have two changes to that alternating pattern, the first that
+# "closing" the element removes it from play, the second that the
+# process is circular, so that once the last person is reached the
+# slaughter continues unabated as the last person is still adjacent
+# to the first. As such the processing, the elimination of the
+# person to one's immediate side*, continues until there's no one
+# remaining for the sole survivor to murder.
+#
+# * left or rightward implementation of the death-dealing is neither
+# specified, nor does it matter. Feel free to infer a political
+# metaphor here if you wish.
+#
+# method: We will create a list of people and number them 0-49. The
+# actual naming convention does not matter, we only need a unique
+# label to keep track of the individuals as the winnowing
+# progresses. Indexing on 0, though, instead of 1 will help us
+# later, to reveal patterns in the process. So the result, position
+# 36, according to the original spec is postion 37. As stated, we're
+# going to go head and keep this change, as it makes the pattern
+# easier to see.
+#
+# When we step through the process defined, the person at a given
+# index kills the next person, at index + 1. That person is
+# eliminated, and the person beyond moves into the empty slot. The
+# shovel is then handed to that person, now at slot index + 1, who
+# eyes the person at index + 2. The circular aspect is modeled by
+# applying a modulus equal to the number of remaining people in the
+# circle at a given moment. That number is always one more than the
+# array index, so when we are at the end of the array, index + 1 is
+# equal to the size of the array, the index is reset to position 0,
+# who becomes the next unlucky target, and the horror continues
+# unabated. No rest for the wicked.
+#
+# In a post-analysis, a loop construct over a range of inputs
+# reveals a simple underlying progression based around powers of 2,
+# resulting in a practical survival plan:
+#
+# conclusion: if one ever has the misfortune to be in this terrible
+# situation, quickly count the size of the group. Subtract the
+# largest smaller power of two from that number and double the
+# remainder. Counting from zero, make sure you are in that position
+# in line and you will live. (Assuming you wish to survive, of
+# course. That ethical morass is beyond the scope of the current
+# discussion.) For example, if you have 57 people in the group,
+# subtract 32, yielding 25, doubled to 50. Counting from 0, insert
+# yourself at position 50. Easy peasy. Now all you have to do is
+# kill 5 people. Sorry.
+#
+# Or at the bare minimum, (remember you are counting from 0!) make
+# sure you are in an even-numbered position (that's position, not
+# count). Then at least you have a chance, as all the odds are
+# always killed.
+#
+# In a more sobering note, if you are unable to control your
+# position in the circle and conclude you are lost, the best play
+# may be to strip naked and try and beguile the guards. If
+# successfully distracted, or perhaps confused, grab a pistol and
+# start shooting. The outcome will likely be the same, however you
+# may at least have the satifaction of taking a few of the bastards
+# with you. May the odds be in your favor.
+#
+# 2020 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+use warnings;
+use strict;
+use feature ":5.26";
+
+## ## ## ## ## MAIN
+my $victims = 50; ## I think the last person standing still qualifies as a victim in this
+ ## psychopath's fever-dream battle royal
+my @circle = (0..$victims-1);
+say join ", ", @circle;
+my $next = 0;
+
+while ( scalar @circle > 1 ) {
+ $next = ++$next % scalar @circle; ## find the next target position
+ splice @circle, $next, 1; ## do the dirty deed and the next person slide into that spot
+ say join " ", @circle; ## not necessary but makes the progression visible
+}
+
+say "survivor: ", $circle[0], "\n";
+
+
+
+## ## ## ## ##
+
+## now let's take a moment to look at an overview of the positional standing of
+## the last survivor as we vary the starting number of victims in the circle:
+
+for (2..100) {
+ printf "%2d --> %d\n", $_, survivor($_);
+}
+
+sub survivor {
+ my @circle = (0..shift(@_)-1);
+ my $next = 0;
+
+ while ( scalar @circle > 1 ) {
+ $next = ++$next % scalar @circle;
+ splice @circle, $next, 1;
+ }
+
+ return $circle[0];
+}
diff --git a/challenge-048/colin-crain/perl/ch-2.pl b/challenge-048/colin-crain/perl/ch-2.pl
new file mode 100644
index 0000000000..035dc615c5
--- /dev/null
+++ b/challenge-048/colin-crain/perl/ch-2.pl
@@ -0,0 +1,64 @@
+#! /opt/local/bin/perl
+#
+# palindrome_dates.pl
+#
+# PWC 48 - TASK #2
+# Palindrome Dates
+# Write a script to print all Palindrome Dates between 2000 and 2999.
+# The format of date is mmddyyyy. For example, the first one was on
+# October 2, 2001 as it is represented as 10022001.
+#
+# method: constructing a list of palindrome candidates is in itself
+# little problem, merely reverse the year as a string and prepend
+# it. The primary challenge is evaluating whether this candidate can
+# be viewed as a valid mmddyyyy date. This is ascertained by
+# limiting 0 < m < 13 and that the day falls within the span of a
+# given month, determined by a lookup.
+#
+# Leap years need not be considered as the date 02-29 reverses to
+# 9220, which when considered as a year is outside the 2000-2999
+# range specified. We can see the largest possible day in our given
+# span will be the 22nd of any month, as any year past 2299 will
+# produce a date of the 32nd of the month and be invalid. In fact,
+# the only valid days in the range are the 2nd, the 12th, and the
+# 22nd, corresponding to the century components 20xx, 21xx and 22xx.
+# All 12 months can be formed by the years after the centuries;
+# combining 12 months and 3 possible days = 36 results, which is
+# what is observed.
+#
+# 2020 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+use warnings;
+use strict;
+use feature ":5.26";
+
+## ## ## ## ## MAIN
+
+
+## palindrome date format is m1m2d1d2y1y2y3y4 <-/-> y4y3y2y1d2d1m2m1
+for ( 2000..2999 ) {
+ my $pal = (reverse $_) . $_;
+ if ( validate($pal) ) {
+ substr($pal, $_, 0, "-") for (2,5);
+ say $pal;
+ }
+}
+
+## ## ## ## ## SUBS
+
+sub validate {
+## returns true is the given string represents a valid mmddyyyy date
+## does not consider leap years, code checks removed
+ my $test = shift;
+ my @mlen = ( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
+
+ my ($m, $d) = map {substr($test, $_, 2)} (0, 2);
+
+ return 0 if ( $m > 12 || $m == 0 );
+ return 0 if ( $d > $mlen[$m-1] || $d == 0 );
+ return 1;
+
+}
diff --git a/challenge-048/colin-crain/raku/ch-1.p6 b/challenge-048/colin-crain/raku/ch-1.p6
new file mode 100644
index 0000000000..7f35e8d276
--- /dev/null
+++ b/challenge-048/colin-crain/raku/ch-1.p6
@@ -0,0 +1,127 @@
+use v6.d;
+
+#
+# 48-1-ugandan_firing_squad.raku
+#
+# TASK #1 Survivor
+# There are 50 people standing in a circle in position 1 to 50. The
+# person standing at position 1 has a shovel. He kills the next
+# person i.e. standing at position 2 and pass on the shovel to the
+# immediate next i.e. person standing at position 3. Now the person
+# at position 3 does the same and it goes on until only one
+# survives.
+#
+# Write a script to find out the survivor.
+#
+# comments: this is much like PWC 46-2, "Is the Room Open?" albeit with
+# a shockingly un-healthy dose of inhumanity and horror. In
+# keeping with that spirit, I've changed the title and the supplied weapon
+# from sword to shovel. I'm sure there are other options of
+# historical precedence to choose from, but for some reason I went
+# with Idi Amin. We will not speak to that sordid reference again.
+#
+# In the Hotel challenge, the second employee merely closes every
+# second door, which is tidy and well mannered. In this version we
+# have two changes to that alternating pattern, the first that
+# "closing" the element removes it from play, the second that the
+# process is circular, so that once the last person is reached the
+# slaughter continues unabated as the last person is still adjacent
+# to the first. As such the processing, the elimination of the
+# person to one's immediate side*, continues until there's no one
+# remaining for the sole survivor to murder.
+#
+# * left or rightward implementation of the death-dealing is neither
+# specified, nor does it matter. Feel free to infer a political
+# metaphor here if you wish.
+#
+# method: We will create a list of people and number them 0-49. The
+# actual naming convention does not matter, we only need a unique
+# label to keep track of the individuals as the winnowing
+# progresses. Indexing on 0, though, instead of 1 will help us
+# later, to reveal patterns in the process. So the result, position
+# 36, according to the original spec is postion 37. As stated, we're
+# going to go head and keep this change, as it makes the pattern
+# easier to see.
+#
+# When we step through the process defined, the person at a given
+# index kills the next person, at index + 1. That person is
+# eliminated, and the person beyond moves into the empty slot. The
+# shovel is then handed to that person, now at slot index + 1, who
+# eyes the person at index + 2. The circular aspect is modeled by
+# applying a modulus equal to the number of remaining people in the
+# circle at a given moment. That number is always one more than the
+# array index, so when we are at the end of the array, index + 1 is
+# equal to the size of the array, the index is reset to position 0,
+# who becomes the next unlucky target, and the horror continues
+# unabated. No rest for the wicked.
+#
+# In the post-analysis, a loop construct over a range
+# of inputs reveals a simple underlying progression based around
+# powers of 2, resulting in a practical survival plan:
+#
+# conclusion: if one ever has the misfortune to be in this terrible
+# situation, quickly count the size of the group. Subtract the
+# largest smaller power of two from that number and double the
+# remainder. Counting from zero, make sure you are in that position
+# in line and you will live. (Assuming you wish to survive, of
+# course. That ethical morass is beyond the scope of the current
+# discussion.) For example, if you have 57 people in the group,
+# subtract 32, yielding 25, doubled to 50. Counting from 0, insert
+# yourself at position 50. Easy peasy. Now all you have to do is
+# kill 5 people. Sorry.
+#
+# Or at the bare minimum, (remember you are counting from 0!) make
+# sure you are in an even-numbered position (that's position, not
+# count). Then at least you have a chance, as all the odds are
+# always killed.
+#
+# In a more sobering note, if you are unable to control your
+# position in the circle and conclude you are lost, the best play
+# may be to strip naked and try and beguile the guards. If
+# successfully distracted, or perhaps confused, grab a pistol and
+# start shooting. The outcome will likely be the same, however you
+# may at least have the satifaction of taking a few of the bastards
+# with you. May the odds be in your favor.
+#
+# 2020 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+sub MAIN (Int:D $victims where {$victims > 0} = 50) {
+
+ my @circle = 0 .. $victims - 1;
+ @circle.join(" ").say; ## just a look at the starting state
+ my $next = 0;
+
+ while ( @circle.elems > 1 ) {
+ $next = ++$next % @circle.elems; ## advance the targeting
+ @circle.splice($next, 1); ## remove the unlucky victim nd move in the next
+ @circle.join( " " ).say; ## not strictly necessary but allows us to observe the winnowing
+ }
+
+ say "survivor: " ~ @circle[0] ~ "\n"; ## the sole survivor is the only remaining element in the array
+
+ say "meta-analysis by size of stating circle:\n";
+ say "size | survivor";
+ say "-----+----------";
+ printf "%3d --> %d\n", $_, survivor($_) for (2..100);
+
+}
+
+## ## ## ## ##
+
+## now let's take a moment to look at an overview of the positional standing of
+## the last survivor as we vary the starting number of victims in the circle:
+
+sub survivor (Int:D $size where {$size > 0}){
+ my @circle = (0..$size-1);
+ my $next = 0;
+
+ while ( @circle.elems > 1 ) {
+ $next = ++$next % @circle.elems;
+ @circle.splice($next, 1);
+ }
+
+ return @circle[0];
+}
+
+
diff --git a/challenge-048/colin-crain/raku/ch-2.p6 b/challenge-048/colin-crain/raku/ch-2.p6
new file mode 100644
index 0000000000..2efea273dd
--- /dev/null
+++ b/challenge-048/colin-crain/raku/ch-2.p6
@@ -0,0 +1,56 @@
+use v6.d;
+
+#
+# 48-2-palindrome_dates.raku
+#
+# PWC 48 - TASK #2
+# Palindrome Dates
+# Write a script to print all Palindrome Dates between 2000 and 2999.
+# The format of date is mmddyyyy. For example, the first one was on
+# October 2, 2001 as it is represented as 10022001.
+
+# method: constructing a list of palindrome candidates is in itself
+# little problem, merely reverse the year as a string and prepend
+# it. The primary challenge is evaluating whether this candidate can
+# be viewed as a valid mmddyyyy date. This is ascertained by
+# limiting 0 < m < 13 and that the day falls within the span of a
+# given month, determined by a lookup.
+#
+# Leap years need not be considered as the date 02-29 reverses to
+# 9220, which when considered as a year is outside the 2000-2999
+# range specified. We can see the largest possible day in our given
+# span will be the 22nd of any month, as any year past 2299 will
+# produce a date of the 32nd of the month and be invalid. In fact,
+# the only valid days in the range are the 2nd, the 12th, and the
+# 22nd, corresponding to the century components 20xx, 21xx and 22xx.
+# All 12 months can be formed by the years after the centuries;
+# combining 12 months and 3 possible days = 36 results, which is
+# what is observed.
+#
+#
+# 2020 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+sub MAIN () {
+
+ ## make a list of valid candidates
+ my @candidates = (2000..2999).map({$_.flip ~ $_}).grep({validate($_)});
+
+ ## a little prettification and output
+ .map({S/^(..)(..)/$0-$1-/}).put for @candidates;
+
+}
+
+sub validate ($candidate) {
+## returns true is the given string represents a valid mmddyyyy date
+## does not consider leap years, in this case they are logically irrelevant
+ my @mlen = 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31;
+ my ($m, $d ) = $candidate.comb(2);
+
+ return $m > 12
+ || $m == 0
+ || $d > @mlen[$m-1]
+ || $d == 0 ?? 0 !! 1;
+}
+
+
diff --git a/stats/pwc-current.json b/stats/pwc-current.json
index 8fb76a6ee3..2cf0ced136 100644
--- a/stats/pwc-current.json
+++ b/stats/pwc-current.json
@@ -1,4 +1,30 @@
{
+ "chart" : {
+ "type" : "column"
+ },
+ "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
+ }
+ },
+ "legend" : {
+ "enabled" : 0
+ },
+ "title" : {
+ "text" : "Perl Weekly Challenge - 048"
+ },
+ "xAxis" : {
+ "type" : "category"
+ },
"drilldown" : {
"series" : [
{
@@ -22,8 +48,8 @@
2
]
],
- "name" : "Alicia Bielsa",
- "id" : "Alicia Bielsa"
+ "id" : "Alicia Bielsa",
+ "name" : "Alicia Bielsa"
},
{
"name" : "Andrezgz",
@@ -46,32 +72,36 @@
1
]
],
- "name" : "Arne Sommer",
- "id" : "Arne Sommer"
+ "id" : "Arne Sommer",
+ "name" : "Arne Sommer"
},
{
"id" : "Cheok-Yin Fung",
- "name" : "Cheok-Yin Fung",
"data" : [
[
"Perl",
2
]
- ]
+ ],
+ "name" : "Cheok-Yin Fung"
},
{
- "id" : "Dave Cross",
+ "name" : "Colin Crain",
"data" : [
[
"Perl",
2
+ ],
+ [
+ "Raku",
+ 2
]
],
- "name" : "Dave Cross"
+ "id" : "Colin Crain"
},
{
- "id" : "Dave Jacoby",
- "name" : "Dave Jacoby",
+ "name" : "Dave Cross",
+ "id" : "Dave Cross",
"data" : [
[
"Perl",
@@ -80,17 +110,26 @@
]
},
{
+ "id" : "Dave Jacoby",
"data" : [
[
"Perl",
2
]
],
- "name" : "Duane Powell",
- "id" : "Duane Powell"
+ "name" : "Dave Jacoby"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "Duane Powell",
+ "name" : "Duane Powell"
},
{
- "id" : "E. Choroba",
"name" : "E. Choroba",
"data" : [
[
@@ -101,17 +140,18 @@
"Blog",
1
]
- ]
+ ],
+ "id" : "E. Choroba"
},
{
+ "name" : "Ian Rifkin",
"id" : "Ian Rifkin",
"data" : [
[
"Perl",
2
]
- ],
- "name" : "Ian Rifkin"
+ ]
},
{
"name" : "Javier Luque",
@@ -132,14 +172,14 @@
"id" : "Javier Luque"
},
{
- "name" : "Jen Guerra",
"data" : [
[
"Perl",
2
]
],
- "id" : "Jen Guerra"
+ "id" : "Jen Guerra",
+ "name" : "Jen Guerra"
},
{
"id" : "Jonas Berlin",
@@ -152,17 +192,18 @@
"name" : "Jonas Berlin"
},
{
+ "name" : "Kevin Colyer",
+ "id" : "Kevin Colyer",
"data" : [
[
"Raku",
2
]
- ],
- "name" : "Kevin Colyer",
- "id" : "Kevin Colyer"
+ ]
},
{
"name" : "Laurent Rosenfeld",
+ "id" : "Laurent Rosenfeld",
"data" : [
[
"Perl",
@@ -176,8 +217,7 @@
"Blog",
1
]
- ],
- "id" : "Laurent Rosenfeld"
+ ]
},
{
"data" : [
@@ -186,12 +226,11 @@
2
]
],
- "name" : "Lubos Kolouch",
- "id" : "Lubos Kolouch"
+ "id" : "Lubos Kolouch",
+ "name" : "Lubos Kolouch"
},
{
"id" : "Luca Ferrari",
- "name" : "Luca Ferrari",
"data" : [
[
"Raku",
@@ -201,11 +240,12 @@
"Blog",
2
]
- ]
+ ],
+ "name" : "Luca Ferrari"
},
{
- "id" : "Mark Anderson",
"name" : "Mark Anderson",
+ "id" : "Mark Anderson",
"data" : [
[
"Raku",
@@ -214,8 +254,8 @@
]
},
{
- "id" : "Markus Holzer",
"name" : "Markus Holzer",
+ "id" : "Markus Holzer",
"data" : [
[
"Perl",
@@ -228,6 +268,7 @@
]
},
{
+ "name" : "Mohammad S Anwar",
"id" : "Mohammad S Anwar",
"data" : [
[
@@ -242,8 +283,7 @@
"Blog",
1
]
- ],
- "name" : "Mohammad S Anwar"
+ ]
},
{
"id" : "Noud Aldenhoven",
@@ -256,26 +296,27 @@
"name" : "Noud Aldenhoven"
},
{
- "name" : "Peter Scott",
"data" : [
[
"Perl",
1
]
],
- "id" : "Peter Scott"
+ "id" : "Peter Scott",
+ "name" : "Peter Scott"
},
{
+ "name" : "Phillip Harris",
+ "id" : "Phillip Harris",
"data" : [
[
"Perl",
2
]
- ],
- "name" : "Phillip Harris",
- "id" : "Phillip Harris"
+ ]
},
{
+ "name" : "Roger Bell West",
"id" : "Roger Bell West",
"data" : [
[
@@ -286,10 +327,10 @@
"Raku",
2
]
- ],
- "name" : "Roger Bell West"
+ ]
},
{
+ "name" : "Ruben Westerberg",
"data" : [
[
"Perl",
@@ -300,7 +341,6 @@
2
]
],
- "name" : "Ruben Westerberg",
"id" : "Ruben Westerberg"
},
{
@@ -318,21 +358,22 @@
2
]
],
- "name" : "Ryan Thompson",
- "id" : "Ryan Thompson"
+ "id" : "Ryan Thompson",
+ "name" : "Ryan Thompson"
},
{
- "id" : "Saif Ahmed",
"data" : [
[
"Perl",
2
]
],
+ "id" : "Saif Ahmed",
"name" : "Saif Ahmed"
},
{
"name" : "Simon Proctor",
+ "id" : "Simon Proctor",
"data" : [
[
"Raku",
@@ -342,21 +383,19 @@
"Blog",
1
]
- ],
- "id" : "Simon Proctor"
+ ]
},
{
+ "name" : "Steven Wilson",
"id" : "Steven Wilson",
"data" : [
[
"Perl",
2
]
- ],
- "name" : "Steven Wilson"
+ ]
},
{
- "id" : "Ulrich Rieke",
"name" : "Ulrich Rieke",
"data" : [
[
@@ -367,77 +406,88 @@
"Raku",
1
]
- ]
+ ],
+ "id" : "Ulrich Rieke"
},
{
- "id" : "User Person",
+ "name" : "User Person",
"data" : [
[
"Perl",
2
]
],
- "name" : "User Person"
+ "id" : "User Person"
},
{
- "id" : "Walt Mankowski",
"name" : "Walt Mankowski",
"data" : [
[
"Perl",
2
]
- ]
+ ],
+ "id" : "Walt Mankowski"
},
{
- "id" : "Wanderdoc",
"name" : "Wanderdoc",
"data" : [
[
"Perl",
2
]
- ]
+ ],
+ "id" : "Wanderdoc"
}
]
},
+ "subtitle" : {
+ "text" : "[Champions: 34] Last updated at 2020-02-23 21:14:00 GMT"
+ },
"series" : [
{
+ "name" : "Perl Weekly Challenge - 048",
+ "colorByPoint" : 1,
"data" : [
{
- "drilldown" : "Alexander Karelas",
"y" : 2,
+ "drilldown" : "Alexander Karelas",
"name" : "Alexander Karelas"
},
{
- "drilldown" : "Alicia Bielsa",
"name" : "Alicia Bielsa",
+ "drilldown" : "Alicia Bielsa",
"y" : 4
},
{
"y" : 2,
- "name" : "Andrezgz",
- "drilldown" : "Andrezgz"
+ "drilldown" : "Andrezgz",
+ "name" : "Andrezgz"
},
{
- "drilldown" : "Arne Sommer",
"y" : 3,
+ "drilldown" : "Arne Sommer",
"name" : "Arne Sommer"
},
{
- "drilldown" : "Cheok-Yin Fung",
"y" : 2,
+ "drilldown" : "Cheok-Yin Fung",
"name" : "Cheok-Yin Fung"
},
{
- "y" : 2,
+ "name" : "Colin Crain",
+ "drilldown" : "Colin Crain",
+ "y" : 4
+ },
+ {
"name" : "Dave Cross",
+ "y" : 2,
"drilldown" : "Dave Cross"
},
{
- "name" : "Dave Jacoby",
"y" : 2,
- "drilldown" : "Dave Jacoby"
+ "drilldown" : "Dave Jacoby",
+ "name" : "Dave Jacoby"
},
{
"drilldown" : "Duane Powell",
@@ -451,18 +501,18 @@
},
{
"name" : "Ian Rifkin",
- "y" : 2,
- "drilldown" : "Ian Rifkin"
+ "drilldown" : "Ian Rifkin",
+ "y" : 2
},
{
- "name" : "Javier Luque",
+ "drilldown" : "Javier Luque",
"y" : 5,
- "drilldown" : "Javier Luque"
+ "name" : "Javier Luque"
},
{
+ "name" : "Jen Guerra",
"drilldown" : "Jen Guerra",
- "y" : 2,
- "name" : "Jen Guerra"
+ "y" : 2
},
{
"drilldown" : "Jonas Berlin",
@@ -475,8 +525,8 @@
"name" : "Kevin Colyer"
},
{
- "y" : 5,
"name" : "Laurent Rosenfeld",
+ "y" : 5,
"drilldown" : "Laurent Rosenfeld"
},
{
@@ -485,54 +535,54 @@
"name" : "Lubos Kolouch"
},
{
+ "y" : 4,
"drilldown" : "Luca Ferrari",
- "name" : "Luca Ferrari",
- "y" : 4
+ "name" : "Luca Ferrari"
},
{
- "drilldown" : "Mark Anderson",
"y" : 2,
+ "drilldown" : "Mark Anderson",
"name" : "Mark Anderson"
},
{
- "drilldown" : "Markus Holzer",
+ "name" : "Markus Holzer",
"y" : 3,
- "name" : "Markus Holzer"
+ "drilldown" : "Markus Holzer"
},
{
- "drilldown" : "Mohammad S Anwar",
+ "name" : "Mohammad S Anwar",
"y" : 5,
- "name" : "Mohammad S Anwar"
+ "drilldown" : "Mohammad S Anwar"
},
{
- "drilldown" : "Noud Aldenhoven",
+ "name" : "Noud Aldenhoven",
"y" : 2,
- "name" : "Noud Aldenhoven"
+ "drilldown" : "Noud Aldenhoven"