diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-10-31 14:59:43 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-10-31 14:59:43 +0000 |
| commit | f071894759de3f7524b4c2bb9d7898b63980f8a3 (patch) | |
| tree | 59089d6503c04cc5a16f847611cbcd4b142528d5 | |
| parent | 9248cd8275c6547fa2f43a8b438b9cd8abdbe543 (diff) | |
| download | perlweeklychallenge-club-f071894759de3f7524b4c2bb9d7898b63980f8a3.tar.gz perlweeklychallenge-club-f071894759de3f7524b4c2bb9d7898b63980f8a3.tar.bz2 perlweeklychallenge-club-f071894759de3f7524b4c2bb9d7898b63980f8a3.zip | |
- Added solutions by Laurent Rosenfeld.
| -rw-r--r-- | challenge-032/laurent-rosenfeld/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-032/laurent-rosenfeld/perl5/ch-1.pl | 14 | ||||
| -rw-r--r-- | challenge-032/laurent-rosenfeld/perl5/ch-1a.pl | 19 | ||||
| -rw-r--r-- | challenge-032/laurent-rosenfeld/perl5/ch-2.pl | 24 | ||||
| -rw-r--r-- | challenge-032/laurent-rosenfeld/perl5/ch-2a.pl | 20 | ||||
| -rw-r--r-- | challenge-032/laurent-rosenfeld/perl6/ch-1.p6 | 8 | ||||
| -rw-r--r-- | challenge-032/laurent-rosenfeld/perl6/ch-1a.p6 | 17 | ||||
| -rw-r--r-- | challenge-032/laurent-rosenfeld/perl6/ch-2.p6 | 21 | ||||
| -rw-r--r-- | challenge-032/laurent-rosenfeld/perl6/ch-2a.p6 | 16 | ||||
| -rw-r--r-- | stats/pwc-current.json | 299 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 88 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 188 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 598 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 102 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 46 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 100 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 46 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 104 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 38 |
19 files changed, 956 insertions, 793 deletions
diff --git a/challenge-032/laurent-rosenfeld/blog.txt b/challenge-032/laurent-rosenfeld/blog.txt new file mode 100644 index 0000000000..4f3290bbc4 --- /dev/null +++ b/challenge-032/laurent-rosenfeld/blog.txt @@ -0,0 +1 @@ +http://blogs.perl.org/users/laurent_r/2019/10/perl-weekly-challenge-30-word-histogram-and-ascii-bar-chart.html diff --git a/challenge-032/laurent-rosenfeld/perl5/ch-1.pl b/challenge-032/laurent-rosenfeld/perl5/ch-1.pl new file mode 100644 index 0000000000..f2bde92eb6 --- /dev/null +++ b/challenge-032/laurent-rosenfeld/perl5/ch-1.pl @@ -0,0 +1,14 @@ +#!/usr/bin/perl +use strict; +use warnings; + +my %histo; +while (<>) { + chomp; + s/\s+$//; + next if /^\s*$/; # skipping empty lines + $histo{$_}++; +} +for my $key (sort { $histo{$b} <=> $histo{$a} } keys %histo) { + printf "%-20s%d\n", $key, $histo{$key}; +} diff --git a/challenge-032/laurent-rosenfeld/perl5/ch-1a.pl b/challenge-032/laurent-rosenfeld/perl5/ch-1a.pl new file mode 100644 index 0000000000..111cb96d25 --- /dev/null +++ b/challenge-032/laurent-rosenfeld/perl5/ch-1a.pl @@ -0,0 +1,19 @@ +#!/usr/bin/perl +use strict; +use warnings; +use feature qw/say/; + +my %histo; +my $csv_flag = shift; + +while (<>) { + chomp; + s/\s+$//; + next if /^\s*$/; # skipping empty lines + $histo{$_}++; +} +my $format = $csv_flag ? "%s,%d\n" : "%-20s%d\n"; + +for my $key (sort { $histo{$b} <=> $histo{$a} } keys %histo) { + printf $format, $key, $histo{$key}; +} diff --git a/challenge-032/laurent-rosenfeld/perl5/ch-2.pl b/challenge-032/laurent-rosenfeld/perl5/ch-2.pl new file mode 100644 index 0000000000..1d965f19d9 --- /dev/null +++ b/challenge-032/laurent-rosenfeld/perl5/ch-2.pl @@ -0,0 +1,24 @@ +use strict; +use warnings; +use feature qw/say/; + +sub generate_chart { + my %data = %{$_[0]}; + my $sort_type = $_[1] // "val"; + my ($max, $min); + for my $key (keys %data) { + ($max, $min) = ($data{$key}, $data{$key}) unless defined $max; + $max = $data{$key} if $data{$key} > $max; + $min = $data{$key} if $data{$key} < $min; + } + my $scale_factor = 10 / ($max - $min); + my $sort_routine = ($sort_type =~ /val/i) + ? sub { $data{$b} <=> $data{$a} } + : sub {$a cmp $b }; + for my $key (sort $sort_routine keys %data) { + printf "%15s | %s\n", $key, "#" x ($data{$key} * $scale_factor); + } +} +my $sort_type = shift; +my $data = { cherry => 20, apple => 30, banana => 10, pear => 25}; +generate_chart $data, $sort_type; diff --git a/challenge-032/laurent-rosenfeld/perl5/ch-2a.pl b/challenge-032/laurent-rosenfeld/perl5/ch-2a.pl new file mode 100644 index 0000000000..3703f53b02 --- /dev/null +++ b/challenge-032/laurent-rosenfeld/perl5/ch-2a.pl @@ -0,0 +1,20 @@ +#!/usr/bin/perl +use strict; +use warnings; +use feature qw/say/; + +sub generate_chart { + my %data = %{$_[0]}; + my ($max, $min); + for my $key (keys %data) { + ($max, $min) = ($data{$key}, $data{$key}) unless defined $max; + $max = $data{$key} if $data{$key} > $max; + $min = $data{$key} if $data{$key} < $min; + } + my $scale_factor = 10 / ($max - $min); + for my $key (sort { $data{$b} <=> $data{$a} } keys %data) { + printf "%15s | %s\n", $key, "#" x ($data{$key} * $scale_factor); + } +} +my $data = { apple => 30, cherry => 60, banana => 10, pear => 40 }; +generate_chart $data; diff --git a/challenge-032/laurent-rosenfeld/perl6/ch-1.p6 b/challenge-032/laurent-rosenfeld/perl6/ch-1.p6 new file mode 100644 index 0000000000..e653b600f1 --- /dev/null +++ b/challenge-032/laurent-rosenfeld/perl6/ch-1.p6 @@ -0,0 +1,8 @@ +use v6; + +sub MAIN (*@files) { + my $histo = @files.map({.IO.lines}).Bag; + for reverse sort {$histo{$_}}, keys $histo -> $key { + printf "%-20s%d\n", $key, $histo{$key}; + } +} diff --git a/challenge-032/laurent-rosenfeld/perl6/ch-1a.p6 b/challenge-032/laurent-rosenfeld/perl6/ch-1a.p6 new file mode 100644 index 0000000000..12f1ba2fb9 --- /dev/null +++ b/challenge-032/laurent-rosenfeld/perl6/ch-1a.p6 @@ -0,0 +1,17 @@ +use v6; +subset file of Str where *.IO.f; + +multi sub MAIN (Int $csv, *@files where all(@files) ~~ file) { + my $*format = $csv ?? "%s,%d\n" !! "%-20s%d\n"; + readfiles @files; +} +multi sub MAIN (*@files where all(@files) ~~ file) { + my $*format = "%-20s%d\n"; + readfiles @files; +} +sub readfiles (@files) { + my $histo = @files.map({.IO.lines}).Bag; + for reverse sort {$histo{$_}}, keys $histo -> $key { + printf $*format, $key, $histo{$key}; + } +} diff --git a/challenge-032/laurent-rosenfeld/perl6/ch-2.p6 b/challenge-032/laurent-rosenfeld/perl6/ch-2.p6 new file mode 100644 index 0000000000..c0097a550e --- /dev/null +++ b/challenge-032/laurent-rosenfeld/perl6/ch-2.p6 @@ -0,0 +1,21 @@ +use v6; + +sub generate_chart (%data) { + my ($max, $min); + for keys %data -> $key { + ($max, $min) = (%data{$key}, %data{$key}) unless defined $max; + $max = %data{$key} if %data{$key} > $max; + $min = %data{$key} if %data{$key} < $min; + } + my $scale_factor = 10 / ($max - $min); + my &sort_routine = ($*sort-type ~~ m:i/val/) + ?? { %data{$^b} <=> %data{$^a} } + !! {$^a cmp $^b }; + for sort &sort_routine, keys %data -> $key { + printf "%15s | %s\n", $key, "#" x (%data{$key} * $scale_factor); + } +} +sub MAIN (Str $*sort-type) { + my $data = { apple => 3, cherry => 6, banana => 1, pear => 4 }; + generate_chart $data; +} diff --git a/challenge-032/laurent-rosenfeld/perl6/ch-2a.p6 b/challenge-032/laurent-rosenfeld/perl6/ch-2a.p6 new file mode 100644 index 0000000000..0fcbc14e2f --- /dev/null +++ b/challenge-032/laurent-rosenfeld/perl6/ch-2a.p6 @@ -0,0 +1,16 @@ +use v6; + +sub generate_chart (%data) { + my ($max, $min); + for keys %data -> $key { + ($max, $min) = (%data{$key}, %data{$key}) unless defined $max; + $max = %data{$key} if %data{$key} > $max; + $min = %data{$key} if %data{$key} < $min; + } + my $scale_factor = 10 / ($max - $min); + for sort { %data{$^b} <=> %data{$^a} }, keys %data -> $key { + printf "%15s | %s\n", $key, "#" x (%data{$key} * $scale_factor); + } +} +my $data = { apple => 3, cherry => 6, banana => 1, pear => 4 }; +generate_chart $data; diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 5b3807ab8e..1ebc551eb9 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,149 +1,54 @@ { - "legend" : { - "enabled" : 0 + "subtitle" : { + "text" : "[Champions: 18] Last updated at 2019-10-31 14:59:11 GMT" }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" + "plotOptions" : { + "series" : { + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 } }, "chart" : { "type" : "column" }, - "series" : [ - { - "colorByPoint" : 1, - "data" : [ - { - "name" : "Andrezgz", - "y" : 2, - "drilldown" : "Andrezgz" - }, - { - "y" : 2, - "drilldown" : "Dave Cross", - "name" : "Dave Cross" - }, - { - "name" : "Dave Jacoby", - "y" : 2, - "drilldown" : "Dave Jacoby" - }, - { - "y" : 2, - "drilldown" : "Duane Powell", - "name" : "Duane Powell" - }, - { - "name" : "E. Choroba", - "y" : 2, - "drilldown" : "E. Choroba" - }, - { - "name" : "Fabrizio Poggi", - "y" : 2, - "drilldown" : "Fabrizio Poggi" - }, - { - "y" : 4, - "drilldown" : "Joelle Maslak", - "name" : "Joelle Maslak" - }, - { - "y" : 2, - "drilldown" : "Lars Balker", - "name" : "Lars Balker" - }, - { - "name" : "Lars Thegler", - "drilldown" : "Lars Thegler", - "y" : 2 - }, - { - "name" : "Markus Holzer", - "y" : 2, - "drilldown" : "Markus Holzer" - }, - { - "name" : "Nazareno Delucca", - "y" : 2, - "drilldown" : "Nazareno Delucca" - }, - { - "drilldown" : "Prajith P", - "y" : 2, - "name" : "Prajith P" - }, - { - "name" : "Rage311", - "drilldown" : "Rage311", - "y" : 2 - }, - { - "name" : "Roger Bell West", - "y" : 2, - "drilldown" : "Roger Bell West" - }, - { - "y" : 2, - "drilldown" : "Simon Proctor", - "name" : "Simon Proctor" - }, - { - "name" : "Steven Wilson", - "y" : 2, - "drilldown" : "Steven Wilson" - }, - { - "name" : "Yet Ebreo", - "y" : 2, - "drilldown" : "Yet Ebreo" - } - ], - "name" : "Perl Weekly Challenge - 032" - } - ], - "xAxis" : { - "type" : "category" + "legend" : { + "enabled" : 0 }, "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/>", - "followPointer" : 1 + "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>" }, - "subtitle" : { - "text" : "[Champions: 17] Last updated at 2019-10-31 12:32:57 GMT" + "title" : { + "text" : "Perl Weekly Challenge - 032" }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - }, - "borderWidth" : 0 - } + "xAxis" : { + "type" : "category" }, "drilldown" : { "series" : [ { - "name" : "Andrezgz", + "id" : "Andrezgz", "data" : [ [ "Perl 5", 2 ] ], - "id" : "Andrezgz" + "name" : "Andrezgz" }, { + "id" : "Dave Cross", "name" : "Dave Cross", "data" : [ [ "Perl 5", 2 ] - ], - "id" : "Dave Cross" + ] }, { "id" : "Dave Jacoby", @@ -156,18 +61,18 @@ "name" : "Dave Jacoby" }, { + "id" : "Duane Powell", "name" : "Duane Powell", "data" : [ [ "Perl 5", 2 ] - ], - "id" : "Duane Powell" + ] }, { - "name" : "E. Choroba", "id" : "E. Choroba", + "name" : "E. Choroba", "data" : [ [ "Perl 5", @@ -201,37 +106,55 @@ }, { "id" : "Lars Balker", + "name" : "Lars Balker", "data" : [ [ "Perl 5", 2 ] - ], - "name" : "Lars Balker" + ] + }, + { + "id" : "Lars Thegler", + "name" : "Lars Thegler", + "data" : [ + [ + "Perl 5", + 2 + ] + ] }, { "data" : [ [ "Perl 5", 2 + ], + [ + "Perl 6", + 2 + ], + [ + "Blog", + 1 ] ], - "id" : "Lars Thegler", - "name" : "Lars Thegler" + "name" : "Laurent Rosenfeld", + "id" : "Laurent Rosenfeld" }, { - "id" : "Markus Holzer", + "name" : "Markus Holzer", "data" : [ [ "Perl 6", 2 ] ], - "name" : "Markus Holzer" + "id" : "Markus Holzer" }, { - "name" : "Nazareno Delucca", "id" : "Nazareno Delucca", + "name" : "Nazareno Delucca", "data" : [ [ "Perl 5", @@ -240,24 +163,24 @@ ] }, { - "name" : "Prajith P", "id" : "Prajith P", "data" : [ [ "Perl 5", 2 ] - ] + ], + "name" : "Prajith P" }, { "name" : "Rage311", - "id" : "Rage311", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Rage311" }, { "name" : "Roger Bell West", @@ -270,23 +193,23 @@ "id" : "Roger Bell West" }, { - "name" : "Simon Proctor", + "id" : "Simon Proctor", "data" : [ [ "Perl 6", 2 ] ], - "id" : "Simon Proctor" + "name" : "Simon Proctor" }, { - "name" : "Steven Wilson", "data" : [ [ "Perl 5", 2 ] ], + "name" : "Steven Wilson", "id" : "Steven Wilson" }, { @@ -296,12 +219,112 @@ 2 ] ], - "id" : "Yet Ebreo", - "name" : "Yet Ebreo" + "name" : "Yet Ebreo", + "id" : "Yet Ebreo" } ] }, - "title" : { - "text" : "Perl Weekly Challenge - 032" - } + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "series" : [ + { + "colorByPoint" : 1, + "name" : "Perl Weekly Challenge - 032", + "data" : [ + { + "name" : "Andrezgz", + "drilldown" : "Andrezgz", + "y" : 2 + }, + { + "name" : "Dave Cross", + "drilldown" : "Dave Cross", + "y" : 2 + }, + { + "y" : 2, + "name" : "Dave Jacoby", + "drilldown" : "Dave Jacoby" + }, + { + "drilldown" : "Duane Powell", + "name" : "Duane Powell", + "y" : 2 + }, + { + "y" : 2, + "drilldown" : "E. Choroba", + "name" : "E. Choroba" + }, + { + "drilldown" : "Fabrizio Poggi", + "name" : "Fabrizio Poggi", + "y" : 2 + }, + { + "y" : 4, + "drilldown" : "Joelle Maslak", + "name" : "Joelle Maslak" + }, + { + "name" : "Lars Balker", + "drilldown" : "Lars Balker", + "y" : 2 + }, + { + "y" : 2, + "name" : "Lars Thegler", + "drilldown" : "Lars Thegler" + }, + { + "y" : 5, + "name" : "Laurent Rosenfeld", + "drilldown" : "Laurent Rosenfeld" + }, + { + "drilldown" : "Markus Holzer", + "name" : "Markus Holzer", + "y" : 2 + }, + { + "name" : "Nazareno Delucca", + "drilldown" : "Nazareno Delucca", + "y" : 2 + }, + { + "drilldown" : "Prajith P", + "name" : "Prajith P", + "y" : 2 + }, + { + "name" : "Rage311", + "drilldown" : "Rage311", + "y" : 2 + }, + { + "y" : 2, + "name" : "Roger Bell West", + "drilldown" : "Roger Bell West" + }, + { + "y" : 2, + "drilldown" : "Simon Proctor", + "name" : "Simon Proctor" + }, + { + "drilldown" : "Steven Wilson", + "name" : "Steven Wilson", + "y" : 2 + }, + { + "drilldown" : "Yet Ebreo", + "name" : "Yet Ebreo", + "y" : 2 + } + ] + } + ] } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index e6c4c1c9cb..152d1fef58 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,63 +1,63 @@ { + "xAxis" : { + "labels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + } + }, + "type" : "category" + }, + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" + }, + "yAxis" : { + "title" : { + "text" : null + }, + "min" : 0 + }, "chart" : { "type" : "column" }, + "subtitle" : { + "text" : "Last updated at 2019-10-31 14:59:33 GMT" + }, + "title" : { + "text" : "Perl Weekly Challenge Contributions - 2019" + }, + "legend" : { + "enabled" : "false" + }, "series" : [ { - "name" : "Contributions", - "dataLabels" : { - "color" : "#FFFFFF", - "rotation" : -90, - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - }, - "format" : "{point.y:.0f}", - "align" : "right", - "enabled" : "true", - "y" : 10 - }, "data" : [ [ "Blog", - 338 + 339 ], [ "Perl 5", - 1335 + 1337 ], [ "Perl 6", - 784 + 786 ] - ] - } - ], - "legend" : { - "enabled" : "false" - }, - "title" : { - "text" : "Perl Weekly Challenge Contributions - 2019" - }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" - }, - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 - }, - "subtitle" : { - "text" : "Last updated at 2019-10-31 12:33:42 GMT" - }, - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" + ], + "name" : "Contributions", + "dataLabels" : { + "enabled" : "true", + "y" : 10, + "align" : "right", + "format" : "{point.y:.0f}", + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + }, + "rotation" : -90, + "color" : "#FFFFFF" } } - } + ] } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 82a1302eca..09fbb97135 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -2,17 +2,27 @@ "xAxis" : { "type" : "category" }, + "tooltip" : { + "followPointer" : "true", + "headerFormat" : "<span style=\"font-size:11px\"></span>", + "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, "plotOptions" : { "series" : { - "borderWidth" : 0, "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 } }, - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-10-31 12:33:42 GMT" + "chart" : { + "type" : "column" }, "drilldown" : { "series" : [ @@ -35,6 +45,7 @@ "id" : "001" }, { + "name" : "002", "data" : [ [ "Perl 5", @@ -49,7 +60,6 @@ 9 ] ], - "name" : "002", "id" : "002" }, { @@ -125,7 +135,6 @@ ] }, { - "id" : "007", "name" : "007", "data" : [ [ @@ -140,11 +149,11 @@ "Blog", 10 ] - ] + ], + "id" : "007" }, { "id" : "008", - "name" : "008", "data" : [ [ "Perl 5", @@ -158,10 +167,12 @@ "Blog", 12 ] - ] + ], + "name" : "008" }, { "id" : "009", + "name" : "009", "data" : [ [ "Perl 5", @@ -175,11 +186,9 @@ "Blog", 13 ] - ], - "name" : "009" + ] }, { - "id" : "010", "name" : "010", "data" : [ [ @@ -194,11 +203,10 @@ "Blog", 11 ] - ] + ], + "id" : "010" }, { - "id" : "011", - "name" : "011", "data" : [ [ "Perl 5", @@ -212,9 +220,12 @@ "Blog", 9 ] - ] + ], + "name" : "011", + "id" : "011" }, { + "id" : "012", "name" : "012", "data" : [ [ @@ -229,11 +240,10 @@ "Blog", 11 ] - ], - "id" : "012" + ] }, { - "name" : "013", + "id" : "013", "data" : [ [ "Perl 5", @@ -248,7 +258,7 @@ 13 ] ], - "id" : "013" + "name" : "013" }, { "id" : "014", @@ -270,7 +280,6 @@ }, { "id" : "015", - "name" : "015", "data" : [ [ "Perl 5", @@ -284,11 +293,11 @@ "Blog", 15 ] - ] + ], + "name" : "015" }, { "id" : "016", - "name" : "016", "data" : [ [ "Perl 5", @@ -302,7 +311,8 @@ "Blog", 12 ] - ] + ], + "name" : "016" }, { "id" : "017", @@ -323,6 +333,7 @@ "name" : "017" }, { + "name" : "018", "data" : [ [ "Perl 5", @@ -337,7 +348,6 @@ 14 ] ], - "name" : "018", "id" : "018" }, { @@ -432,7 +442,6 @@ }, { "id" : "024", - "name" : "024", "data" : [ [ "Perl 5", @@ -446,7 +455,8 @@ "Blog", 11 ] - ] + ], + "name" : "024" }, { "data" : [ @@ -485,7 +495,6 @@ "id" : "026" }, { - "id" : "027", "data" : [ [ "Perl 5", @@ -500,10 +509,10 @@ 9 ] ], - "name" : "027" + "name" : "027", + "id" : "027" }, { - "id" : "028", "data" : [ [ "Perl 5", @@ -518,7 +527,8 @@ 9 ] ], - "name" : "028" + "name" : "028", + "id" : "028" }, { "name" : "029", @@ -539,6 +549,7 @@ "id" : "029" }, { + "name" : "030", "data" : [ [ "Perl 5", @@ -553,11 +564,9 @@ 9 ] ], - "name" : "030", "id" : "030" }, { - "id" : "031", "data" : [ [ "Perl 5", @@ -572,37 +581,31 @@ 6 ] ], - "name" : "031" + "name" : "031", + "id" : "031" }, { "id" : "032", - "name" : "032", "data" : [ [ |
