aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaulo Custodio <pauloscustodio@gmail.com>2021-06-17 20:40:52 +0100
committerPaulo Custodio <pauloscustodio@gmail.com>2021-06-17 20:40:52 +0100
commit5ad4aad68bdb8b1924f7c4425cd3399d1de41e86 (patch)
treeaf1c675686d406ea7ac4414c0ba54ca473757c63
parent696df97d9f945d7771d40fbfa848aaccfb37200f (diff)
parent8282732f9a1003fc54c012c601d85b3451a9f8fc (diff)
downloadperlweeklychallenge-club-5ad4aad68bdb8b1924f7c4425cd3399d1de41e86.tar.gz
perlweeklychallenge-club-5ad4aad68bdb8b1924f7c4425cd3399d1de41e86.tar.bz2
perlweeklychallenge-club-5ad4aad68bdb8b1924f7c4425cd3399d1de41e86.zip
Merge remote-tracking branch 'upstream/master'
-rwxr-xr-xchallenge-117/jo-37/perl/ch-1.pl139
-rwxr-xr-xchallenge-117/jo-37/perl/ch-2.pl209
-rw-r--r--stats/pwc-current.json212
-rw-r--r--stats/pwc-language-breakdown-summary.json68
-rw-r--r--stats/pwc-language-breakdown.json860
-rw-r--r--stats/pwc-leaders.json756
-rw-r--r--stats/pwc-summary-1-30.json40
-rw-r--r--stats/pwc-summary-121-150.json38
-rw-r--r--stats/pwc-summary-151-180.json96
-rw-r--r--stats/pwc-summary-181-210.json122
-rw-r--r--stats/pwc-summary-211-240.json58
-rw-r--r--stats/pwc-summary-31-60.json118
-rw-r--r--stats/pwc-summary-61-90.json32
-rw-r--r--stats/pwc-summary-91-120.json108
-rw-r--r--stats/pwc-summary.json52
15 files changed, 1643 insertions, 1265 deletions
diff --git a/challenge-117/jo-37/perl/ch-1.pl b/challenge-117/jo-37/perl/ch-1.pl
new file mode 100755
index 0000000000..ad21fc4e73
--- /dev/null
+++ b/challenge-117/jo-37/perl/ch-1.pl
@@ -0,0 +1,139 @@
+#!/usr/bin/perl -s
+
+use v5.16;
+use Test2::V0;
+use warnings;
+use autodie;
+use experimental 'signatures';
+
+our ($tests, $examples, $rows);
+
+run_tests() if $tests || $examples; # does not return
+
+die <<EOS unless @ARGV && $rows;
+usage: $0 [-examples] [-tests] [-rows=n filename]
+
+-examples
+ run the examples from the challenge
+
+-tests
+ run some tests
+
+-rows=n
+ expect n rows in the given file
+
+filename
+ filename containing numbered rows
+
+EOS
+
+
+### Input and Output
+
+say join "\n", @{find_missing_rows(*ARGV{IO}, $rows)};
+
+
+### Implementation
+
+# The task is certainly over-determined:
+# - There are 14 rows of data.
+# - It's stated that rows are numbered 1 to 15.
+# - It's stated that one row would be missing.
+# Either the specification of the number of missing rows or the desired
+# number of rows is superfluous. Ignoring the number of missing rows
+# here.
+# Note: Ignoring both the number of rows *and* the number of missing
+# rows prevents the determination of a missing last row.
+sub find_missing_rows ($fh, $rows) {
+ my %rows;
+ @rows{1 .. $rows} = (1 .. $rows);
+ # Row numbers shall be separated with a comma from the rest of the
+ # row and may have leading zeros.
+ delete @rows{do {local $/; <$fh> =~ /^0*(\d+)(?=,)/mg}};
+
+ [sort {$a <=> $b} values %rows];
+}
+
+### Examples and tests
+
+sub run_tests {
+ SKIP: {
+ skip "examples" unless $examples;
+
+ open my $fh, '<', \(<<EOS =~ s/^ +//gmr);
+ 11, Line Eleven
+ 1, Line one
+ 9, Line Nine
+ 13, Line Thirteen
+ 2, Line two
+ 6, Line Six
+ 8, Line Eight
+ 10, Line Ten
+ 7, Line Seven
+ 4, Line Four
+ 14, Line Fourteen
+ 3, Line three
+ 15, Line Fifteen
+ 5, Line Five
+EOS
+ is find_missing_rows($fh, 15), [12], 'example';
+ close $fh;
+
+ }
+
+ SKIP: {
+ skip "tests" unless $tests;
+
+ my $fh;
+
+ open $fh, '<', \(<<EOS =~ s/^ +//gmr);
+ 2, Line two
+ 3, Line three
+EOS
+ is find_missing_rows($fh, 3), [1], 'missing first row';
+ close $fh;
+
+ open $fh, '<', \(<<EOS =~ s/^ +//gmr);
+ 1, Line one
+ 2, Line two
+EOS
+ is find_missing_rows($fh, 3), [3], 'missing last row';
+ close $fh;
+
+ open $fh, '<', \(<<EOS =~ s/^ +//gmr);
+ 1, Line one
+ 2, Line two
+ 3, Line three
+EOS
+ is find_missing_rows($fh, 3), [], 'nothing missing';
+ close $fh;
+
+ open $fh, '<', \(<<EOS =~ s/^ +//gmr);
+ 01, Line one
+ 02, Line two
+ 03, Line three
+EOS
+ is find_missing_rows($fh, 3), [], 'leading zeros';
+ close $fh;
+
+ open $fh, '<', \(<<EOS =~ s/^ +//gmr);
+ 1, Line one
+ 3, Line three
+ 5, Line Five
+EOS
+ is find_missing_rows($fh, 5), [2, 4], 'multiple missing rows';
+ close $fh;
+
+ open $fh, '<', \(<<EOS =~ s/^ +//gmr);
+ 1, Line one
+ 2 Line two
+ 3, Line three
+EOS
+ is find_missing_rows($fh, 3), [2], 'malformed line number';
+ close $fh;
+
+ }
+
+ done_testing;
+ exit;
+}
diff --git a/challenge-117/jo-37/perl/ch-2.pl b/challenge-117/jo-37/perl/ch-2.pl
new file mode 100755
index 0000000000..4ad624017c
--- /dev/null
+++ b/challenge-117/jo-37/perl/ch-2.pl
@@ -0,0 +1,209 @@
+#!/usr/bin/perl -s
+
+use v5.16;
+use Test2::V0;
+use Graph;
+use experimental qw(signatures postderef);
+
+our ($tests, $examples, $triangle, $from, $to);
+
+run_tests() if $tests || $examples; # does not return
+
+die <<EOS unless @ARGV && defined($from) && defined($to) || $triangle;
+usage: $0 [-examples] [-tests] [-triangle=n | -from=v_f -to=v_t edge ...]
+
+-examples
+ run the examples from the challenge
+
+-tests
+ run some tests
+
+-triangle=n
+ build triangular graph having size n
+
+-from=v_f
+ use v_f as starting vertex
+
+-to=v_t
+ use v_t as ending vertex
+
+edge ...
+ specify the graph by its edges. Each edge has the form
+ 'h-t-l' with 'h' as the head vertex, 't' as the tail vertex and
+ 'l' as the edge label.
+
+ Example 1 may have these vertex assignments:
+
+ a
+ ⇙ ⇘
+ b ⇒ c
+ ⇙ ⇘ ⇙ ⇘
+ d ⇒ e ⇒ f
+
+ and it may be run as:
+
+ $0 -from=a -to=f a-b-L a-c-R b-c-H b-d-L b-e-R c-e-L c-f-R d-e-H e-f-H
+
+ or simply:
+
+ $0 -triangle=2
+
+EOS
+
+
+### Input and Output
+
+my $g;
+if ($triangle) {
+ $g = graph_from_edges(triangle($triangle));
+ $from = "0 0";
+ $to = "$triangle $triangle";
+} else {
+ $g = graph_from_edges([@ARGV]);
+}
+
+say "@{paths_from_to($g, $from, $to)}";
+
+
+### Implementation
+
+# For a highly regular graph as given in the task there is certainly a
+# pattern in the solution that permits its straight construction. As a
+# lame excuse for not searching for such pattern, I'm going to solve a
+# more general task.
+# Considering a directed acyclic graph (DAG) with labeled edges.
+# Then find all paths between a given start and end vertex and print the
+# concatenated edge labels for every path.
+#
+# This easily earns the N=10-bonus.
+#
+# Having implemented the lazy solution, it provides the sequence of
+# the count of possible paths for a given triangle size as:
+# 2, 6, 22, 90, 394, 1806,...
+# Consulting OEIS reveals this sequence as the "Large Schröder Numbers".
+# See http://oeis.org/A006318 and
+# https://en.wikipedia.org/wiki/Schröder_number. Not even thinking
+# about generating the 17518619320890 paths for N=20.
+
+# Find all paths in the given DAG starting in vertex $from and ending in
+# vertex $to and collect the concatenated edges' labels.
+sub paths_from_to ($g, $from, $to) {
+ # Apply a single empty prefix to the start vertex.
+ my %paths = ($from => ['']);
+ # Process vertices in topological order.
+ for my $vertex ($g->topological_sort) {
+ # At the end vertex all paths from the start vertex are known
+ # due to the topological ordering.
+ return $paths{$vertex} if $vertex eq $to;
+ # For every outgoing edge append the edge's label to the label
+ # sequence for all paths leading to the current vertex and then
+ # append this list to the path list for the edge's tail vertex.
+ # This is a no-op until the start vertex is hit.
+ for my $succ ($g->successors($vertex)) {
+ my $label = $g->get_edge_attribute($vertex, $succ, 'label');
+ push $paths{$succ}->@*, map $_ . $label, $paths{$vertex}->@*;
+ }
+ }
+}
+
+# Build a graph from its labeled edges. Edges are expected in the
+# form "h-t-l" with "h" as the head vertex, "t" as the tail vertex and
+# "l" as the label.
+sub graph_from_edges ($edges) {
+ my $g = Graph->new;
+ for (@$edges) {
+ my ($h, $t, $l) = split /-/;
+ $g->set_edge_attribute($h, $t, label => $l);
+ }
+ die "not a DAG\n" unless $g->is_dag;
+
+ $g;
+}
+
+# Generate the edges for a triangular graph of size $n according to the
+# task. Edges have the form "head-tail-label", vertices have the form
+# "row col"
+sub triangle ($n) {
+ my @edges;
+ for my $row (0 .. $n) {
+ for my $col (0 .. $row) {
+ my @vert = ($row, $col);
+ if ($col < $row) {
+ my @horiz = ($row, $col + 1);
+ push @edges, "@vert-@horiz-H";
+ }
+ if ($row < $n) {
+ my @left = ($row + 1, $col);
+ my @right = ($row + 1, $col + 1);
+ push @edges, "@vert-@left-L", "@vert-@right-R";
+ }
+ }
+ }
+
+ \@edges;
+}
+
+### Examples and tests
+
+sub run_tests {
+ SKIP: {
+ skip "examples" unless $examples;
+
+ is paths_from_to(graph_from_edges(triangle(2)), '0 0', '2 2'),
+ bag {
+ item 'RR';
+ item 'LHR';
+ item 'LRH';
+ item 'RLH';
+ item 'LHLH';
+ item 'LLHH';
+ end;
+ }, 'example 1';
+
+ is paths_from_to(graph_from_edges(triangle(1)), '0 0', '1 1'),
+ bag {
+ item 'R';
+ item 'LH';
+ end;
+ }, 'example 2';
+
+ is scalar(@{paths_from_to(
+ graph_from_edges(triangle(10)), '0 0', '10 10')}
+ ), 1037718, 'N=10';
+
+
+ }
+
+ SKIP: {
+ skip "tests" unless $tests;
+
+# A less regular DAG as a test object with two source vertices.
+#
+# a
+# ⇙ ⇘
+# b c d
+# ⇙ ⇘ ⇙ ⇘ ⇙ ⇘
+# e ⇐ f g ⇐ h
+# ⇘ ⇙ ⇘ ⇙ ⇘ ⇙
+# i j k
+# ⇘ ⇙
+# l
+
+ my $g = graph_from_edges([qw(
+ a-b-L a-c-R
+ b-e-L b-f-R c-f-L c-g-R d-g-L d-h-R
+ e-i-R f-e-H f-i-L f-j-R g-j-L g-k-R h-g-H h-k-L
+ i-l-R j-l-L)]);
+
+ is paths_from_to($g, 'a', 'k'), ['RRR'], 'unique path';
+ is paths_from_to($g, 'b', 'k'), [], 'not reachable';
+ is paths_from_to($g, 'j', 'c'), [], 'out of topological order';
+
+ like dies {graph_from_edges([qw(a-b-D b-a-U)])}, qr/not a DAG/,
+ 'not a directed acyclic graph';
+
+ }
+
+ done_testing;
+ exit;
+}
diff --git a/stats/pwc-current.json b/stats/pwc-current.json
index efa74665e2..0f39979c6e 100644
--- a/stats/pwc-current.json
+++ b/stats/pwc-current.json
@@ -1,32 +1,28 @@
{
- "tooltip" : {
- "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>",
- "followPointer" : 1,
- "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>"
- },
"drilldown" : {
"series" : [
{
+ "id" : "Abigail",
"data" : [
[
"Perl",
2
]
],
- "name" : "Abigail",
- "id" : "Abigail"
+ "name" : "Abigail"
},
{
+ "name" : "Cheok-Yin Fung",
+ "id" : "Cheok-Yin Fung",
"data" : [
[
"Perl",
2
]
- ],
- "name" : "Cheok-Yin Fung",
- "id" : "Cheok-Yin Fung"
+ ]
},
{
+ "name" : "Dave Jacoby",
"data" : [
[
"Perl",
@@ -37,21 +33,21 @@
2
]
],
- "name" : "Dave Jacoby",
"id" : "Dave Jacoby"
},
{
- "id" : "Feng Chang",
"name" : "Feng Chang",
"data" : [
[
"Raku",
2
]
- ]
+ ],
+ "id" : "Feng Chang"
},
{
"name" : "Flavio Poletti",
+ "id" : "Flavio Poletti",
"data" : [
[
"Perl",
@@ -65,20 +61,30 @@
"Blog",
2
]
- ],
- "id" : "Flavio Poletti"
+ ]
},
{
- "id" : "James Smith",
"data" : [
[
"Perl",
2
]
],
+ "id" : "James Smith",
"name" : "James Smith"
},
{
+ "id" : "Jorg Sommrey",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "name" : "Jorg Sommrey"
+ },
+ {
+ "name" : "Luca Ferrari",
"id" : "Luca Ferrari",
"data" : [
[
@@ -89,51 +95,60 @@
"Blog",
2
]
- ],
- "name" : "Luca Ferrari"
+ ]
},
{
- "name" : "Lucas Ransan",
+ "id" : "Lucas Ransan",
"data" : [
[
"Raku",
2
]
],
- "id" : "Lucas Ransan"
+ "name" : "Lucas Ransan"
},
{
+ "id" : "Mark Anderson",
"data" : [
[
"Raku",
2
]
],
- "name" : "Mark Anderson",
- "id" : "Mark Anderson"
+ "name" : "Mark Anderson"
},
{
- "id" : "Mohammad S Anwar",
"name" : "Mohammad S Anwar",
"data" : [
[
"Perl",
1
]
- ]
+ ],
+ "id" : "Mohammad S Anwar"
},
{
- "id" : "Niels van Dijke",
"data" : [
[
"Perl",
2
]
],
+ "id" : "Niels van Dijke",
"name" : "Niels van Dijke"
},
{
- "name" : "Roger Bell_West",
+ "name" : "Paulo Custodio",
+ "id" : "Paulo Custodio",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ]
+ },
+ {
+ "id" : "Roger Bell_West",
"data" : [
[
"Perl",
@@ -148,10 +163,9 @@
1
]
],
- "id" : "Roger Bell_West"
+ "name" : "Roger Bell_West"
},
{
- "id" : "Simon Green",
"name" : "Simon Green",
"data" : [
[
@@ -162,31 +176,30 @@
"Blog",
1
]
- ]
+ ],
+ "id" : "Simon Green"
},
{
- "id" : "Simon Proctor",
+ "name" : "Simon Proctor",
"data" : [
[
"Raku",
2
]
],
- "name" : "Simon Proctor"
+ "id" : "Simon Proctor"
},
{
- "id" : "Steven Wilson",
- "name" : "Steven Wilson",
"data" : [
[
"Perl",
1
]
- ]
+ ],
+ "id" : "Steven Wilson",
+ "name" : "Steven Wilson"
},
{
- "id" : "Stuart Little",
- "name" : "Stuart Little",
"data" : [
[
"Perl",
@@ -196,16 +209,18 @@
"Raku",
2
]
- ]
+ ],
+ "id" : "Stuart Little",
+ "name" : "Stuart Little"
},
{
- "id" : "Ulrich Rieke",
"data" : [
[
"Perl",
2
]
],
+ "id" : "Ulrich Rieke",
"name" : "Ulrich Rieke"
},
{
@@ -219,6 +234,8 @@
"name" : "Vinod Kumar K"
},
{
+ "name" : "W. Luis Mochan",
+ "id" : "W. Luis Mochan",
"data" : [
[
"Perl",
@@ -228,58 +245,55 @@
"Blog",
1
]
- ],
- "name" : "W. Luis Mochan",
- "id" : "W. Luis Mochan"
+ ]
}
]
},
- "plotOptions" : {
- "series" : {
- "dataLabels" : {
- "format" : "{point.y}",
- "enabled" : 1
- },
- "borderWidth" : 0
- }
- },
- "subtitle" : {
- "text" : "[Champions: 19] Last updated at 2021-06-16 18:51:59 GMT"
- },
"title" : {
"text" : "Perl Weekly Challenge - 117"
},
+ "subtitle" : {
+ "text" : "[Champions: 21] Last updated at 2021-06-17 15:58:11 GMT"
+ },
"chart" : {
"type" : "column"
},
- "legend" : {
- "enabled" : 0
- },
- "xAxis" : {
- "type" : "category"
- },
"yAxis" : {
"title" : {
"text" : "Total Solutions"
}
},
+ "plotOptions" : {
+ "series" : {
+ "borderWidth" : 0,
+ "dataLabels" : {
+ "enabled" : 1,
+ "format" : "{point.y}"
+ }
+ }
+ },
+ "xAxis" : {
+ "type" : "category"
+ },
"series" : [
{
+ "colorByPoint" : 1,
+ "name" : "Perl Weekly Challenge - 117",
"data" : [
{
- "y" : 2,
"drilldown" : "Abigail",
+ "y" : 2,
"name" : "Abigail"
},
{
"drilldown" : "Cheok-Yin Fung",
- "name" : "Cheok-Yin Fung",
- "y" : 2
+ "y" : 2,
+ "name" : "Cheok-Yin Fung"
},
{
- "y" : 4,
+ "drilldown" : "Dave Jacoby",
"name" : "Dave Jacoby",
- "drilldown" : "Dave Jacoby"
+ "y" : 4
},
{
"y" : 2,
@@ -287,83 +301,99 @@
"drilldown" : "Feng Chang"
},
{
+ "drilldown" : "Flavio Poletti",
"y" : 6,
- "name" : "Flavio Poletti",
- "drilldown" : "Flavio Poletti"
+ "name" : "Flavio Poletti"
},
{
- "name" : "James Smith",
"drilldown" : "James Smith",
+ "name" : "James Smith",
"y" : 2
},
{
+ "drilldown" : "Jorg Sommrey",
+ "y" : 2,
+ "name" : "Jorg Sommrey"
+ },
+ {
"y" : 4,
"name" : "Luca Ferrari",
"drilldown" : "Luca Ferrari"
},
{
+ "name" : "Lucas Ransan",
"y" : 2,
- "drilldown" : "Lucas Ransan",
- "name" : "Lucas Ransan"
+ "drilldown" : "Lucas Ransan"
},
{
"y" : 2,
- "drilldown" : "Mark Anderson",
- "name" : "Mark Anderson"
+ "name" : "Mark Anderson",
+ "drilldown" : "Mark Anderson"
},
{
- "y" : 1,
"drilldown" : "Mohammad S Anwar",
- "name" : "Mohammad S Anwar"
+ "name" : "Mohammad S Anwar",
+ "y" : 1
},
{
"y" : 2,
- "drilldown" : "Niels van Dijke",
- "name" : "Niels van Dijke"
+ "name" : "Niels van Dijke",
+ "drilldown" : "Niels van Dijke"
+ },
+ {
+ "drilldown" : "Paulo Custodio",
+ "name" : "Paulo Custodio",
+ "y" : 2
},
{
+ "name" : "Roger Bell_West",
"y" : 5,
- "drilldown" : "Roger Bell_West",
- "name" : "Roger Bell_West"
+ "drilldown" : "Roger Bell_West"
},
{
- "y" : 3,
"drilldown" : "Simon Green",
+ "y" : 3,
"name" : "Simon Green"
},
{
- "y" : 2,
"drilldown" : "Simon Proctor",
+ "y" : 2,
"name" : "Simon Proctor"
},
{
- "name" : "Steven Wilson",
"drilldown" : "Steven Wilson",
+ "name" : "Steven Wilson",
"y" : 1
},
{
+ "name" : "Stuart Little",
"y" : 4,
- "drilldown" : "Stuart Little",
- "name" : "Stuart Little"
+ "drilldown" : "Stuart Little"
},
{
"name" : "Ulrich Rieke",
- "drilldown" : "Ulrich Rieke",
- "y" : 2
+ "y" : 2,
+ "drilldown" : "Ulrich Rieke"
},
{
- "y" : 1,
"drilldown" : "Vinod Kumar K",
+ "y" : 1,
"name" : "Vinod Kumar K"
},
{
+ "drilldown" : "W. Luis Mochan",
"y" : 3,
- "name" : "W. Luis Mochan",
- "drilldown" : "W. Luis Mochan"
+ "name" : "W. Luis Mochan"
}
- ],
- "name" : "Perl Weekly Challenge - 117",
- "colorByPoint" : 1
+ ]
}
- ]
+ ],
+ "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/>"
+ },
+ "legend" : {
+ "enabled" : 0
+ }
}
diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json
index 24c36ced60..4d05d2fe44 100644
--- a/stats/pwc-language-breakdown-summary.json
+++ b/stats/pwc-language-breakdown-summary.json
@@ -1,24 +1,48 @@
{
+ "title" : {
+ "text" : "Perl Weekly Challenge Contributions [2019 - 2020]"
+ },
"yAxis" : {
+ "min" : 0,
"title" : {
"text" : null
- },
- "min" : 0
+ }
+ },
+ "chart" : {
+ "type" : "column"
+ },
+ "subtitle" : {
+ "text" : "Last updated at 2021-06-17 15:58:11 GMT"
+ },
+ "xAxis" : {
+ "type" : "category",
+ "labels" : {
+ "style" : {
+ "fontSize" : "13px",
+ "fontFamily" : "Verdana, sans-serif"
+ }
+ }
+ },
+ "legend" : {
+ "enabled" : "false"
+ },
+ "tooltip" : {
+ "pointFormat" : "<b>{point.y:.0f}</b>"
},
"series" : [
{
"name" : "Contributions",
"dataLabels" : {
+ "color" : "#FFFFFF",
+ "y" : 10,
"format" : "{point.y:.0f}",
+ "align" : "right",
+ "rotation" : -90,
+ "enabled" : "true",
"style" : {
"fontSize" : "13px",
"fontFamily" : "Verdana, sans-serif"
- },
- "y" : 10,
- "align" : "right",
- "color" : "#FFFFFF",
- "enabled" : "true",
- "rotation" : -90
+ }
},
"data" : [
[
@@ -27,7 +51,7 @@
],
[
"Perl",
- 5545
+ 5549
],
[
"Raku",
@@ -35,29 +59,5 @@
]
]
}
- ],
- "legend" : {
- "enabled" : "false"
- },
- "xAxis" : {
- "type" : "category",
- "labels" : {
- "style" : {
- "fontSize" : "13px",
- "fontFamily" : "Verdana, sans-serif"
- }
- }
- },
- "chart" : {
- "type" : "column"
- },
- "title" : {
- "text" : "Perl Weekly Challenge Contributions [2019 - 2020]"
- },
- "subtitle" : {
- "text" : "Last updated at 2021-06-16 18:51:59 GMT"
- },
- "tooltip" : {
- "pointFormat" : "<b>{point.y:.0f}</b>"
- }
+ ]
}
diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json
index 883d58ff6f..a0161bd679 100644
--- a/stats/pwc-language-breakdown.json
+++ b/stats/pwc-language-breakdown.json
@@ -2,14 +2,11 @@
"title" : {
"text" : "Perl Weekly Challenge Language"
},
- "chart" : {
- "type" : "column"
- },
"drilldown" : {
"series" : [
{
- "id" : "001",
"name" : "001",
+ "id" : "001",
"data" : [
[
"Perl",
@@ -26,6 +23,7 @@
]
},
{
+ "name" : "002",
"id" : "002",
"data" : [
[
@@ -40,10 +38,11 @@
"Blog",
10
]
- ],
- "name" : "002"
+ ]
},
{
+ "name" : "003",
+ "id" : "003",
"data" : [
[
"Perl",
@@ -57,12 +56,10 @@
"Blog",
9
]
- ],
- "name" : "003",
- "id" : "003"
+ ]
},
{
- "name" : "004",
+ "id" : "004",
"data" : [
[
"Perl",
@@ -77,10 +74,10 @@
10
]
],
- "id" : "004"
+ "name" : "004"
},
{
- "name" : "005",
+ "id" : "005",
"data" : [
[
"Perl",
@@ -95,10 +92,11 @@
12
]
],
- "id" : "005"
+ "name" : "005"
},
{
"name" : "006",
+ "id" : "006",
"data" : [
[
"Perl",
@@ -112,12 +110,10 @@
"Blog",
7
]
- ],
- "id" : "006"
+ ]
},
{
"id" : "007",
- "name" : "007",
"data" : [
[
"Perl",
@@ -131,11 +127,10 @@
"Blog",
10
]
- ]
+ ],
+ "name" : "007"
},
{
- "id" : "008",
- "name" : "008",
"data" : [
[
"Perl",
@@ -149,11 +144,12 @@
"Blog",
12
]
- ]
+ ],
+ "id" : "008",
+ "name" : "008"
},
{
"id" : "009",
- "name" : "009",
"data" : [
[
"Perl",
@@ -167,9 +163,11 @@
"Blog",
13
]
- ]
+ ],
+ "name" : "009"
},
{
+ "name" : "010",
"data" : [
[
"Perl",
@@ -184,11 +182,9 @@
11
]
],
- "name" : "010",
"id" : "010"
},
{
- "id" : "011",
"data" : [
[
"Perl",
@@ -203,10 +199,11 @@
10
]
],