From 1947547dc51662f49f6a7a3bda6984991b84070c Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Mon, 23 May 2022 02:13:23 +0100 Subject: - Added solutions by Colin Crain. --- challenge-165/colin-crain/perl/ch-1.pl | 182 +++++ challenge-165/colin-crain/perl/ch-2.pl | 220 ++++++ stats/pwc-current.json | 201 ++--- stats/pwc-language-breakdown-summary.json | 76 +- stats/pwc-language-breakdown.json | 1134 ++++++++++++++--------------- stats/pwc-leaders.json | 734 +++++++++---------- stats/pwc-summary-1-30.json | 50 +- stats/pwc-summary-121-150.json | 46 +- stats/pwc-summary-151-180.json | 42 +- stats/pwc-summary-181-210.json | 52 +- stats/pwc-summary-211-240.json | 28 +- stats/pwc-summary-241-270.json | 34 +- stats/pwc-summary-31-60.json | 38 +- stats/pwc-summary-61-90.json | 106 +-- stats/pwc-summary-91-120.json | 110 +-- stats/pwc-summary.json | 558 +++++++------- 16 files changed, 2014 insertions(+), 1597 deletions(-) create mode 100755 challenge-165/colin-crain/perl/ch-1.pl create mode 100755 challenge-165/colin-crain/perl/ch-2.pl diff --git a/challenge-165/colin-crain/perl/ch-1.pl b/challenge-165/colin-crain/perl/ch-1.pl new file mode 100755 index 0000000000..705362c552 --- /dev/null +++ b/challenge-165/colin-crain/perl/ch-1.pl @@ -0,0 +1,182 @@ +#!/Users/colincrain/perl5/perlbrew/perls/perl-5.32.0/bin/perl +# +# scriving-pictures.pl +# +# Scalable Vector Graphics (SVG) +# Submitted by: Ryan J Thompson +# +# Scalable Vector Graphics (SVG) are not made of pixels, but lines, +# ellipses, and curves, that can be scaled to any size without any +# loss of quality. If you have ever tried to resize a small JPG or +# PNG, you know what I mean by “loss of quality”! What many people +# do not know about SVG files is, they are simply XML files, so +# they can easily be generated programmatically. +# +# For this task, you may use external library, such as Perl’s SVG +# library, maintained in recent years by our very own Mohammad S +# Anwar. You can instead generate the XML yourself; it’s actually +# quite simple. The source for the example image for Task #2 might +# be instructive. +# +# Your task is to accept a series of points and lines in the +# following format, one per line, in arbitrary order: +# +# Point: x,y +# Line: x1,y1,x2,y2 +# +# Example: +# 53,10 +# 53,10,23,30 +# 23,30 +# +# Then, generate an SVG file plotting all points, and all lines. If +# done correctly, you can view the output .svg file in your +# browser. +# +# A Definition: +# +# scrive +# +# Etymology +# Related to scribe. +# +# Verb +# scrive (third-person singular simple present scrives, present +# participle **scriving**, simple past and past participle scrived) +# +# **To describe; to draw a line with a pointed tool.** +# +# +# © 2022 colin crain +## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## + + + +use warnings; +use strict; +use utf8; +use feature ":5.26"; +use feature qw(signatures); +no warnings 'experimental::signatures'; + + + + +## SVG package +package SVG; +use Moo; +use feature qw(signatures); +no warnings 'experimental::signatures'; +{ + has groups => ( + is => 'rw' , + default => sub { return [] } ); + has height => ( is => 'rw' ); + has width => ( is => 'rw' ); + + around BUILDARGS => sub { + my ( $orig, $class, @args ) = @_; + return { height => $args[0], + width => $args[1] }; + }; + + sub group( $self, $id, $attr ) { + push $self->groups->@*, [$id, $attr, []] + } + + sub add( $self, $item ){ + push $self->groups->[-1]->[2]->@*, $item; + } + +## supported object primitives + + sub circle( $self, $x, $y, $r=3) { + ## default radius 3 for single point + return qq(); + } + + sub line( $self, $x1, $y1, $x2, $y2 ) { + return qq(); + } + +## + sub make_SVG( $self ) { + my $h = $self->height; + my $w = $self->width; + + my $xml = <<~XML; + + + + XML + for my $g ( $self->groups->@* ){ + my $tag = qq([1]->{$_}" ).' ' for keys $g->[1]->%*; + $tag .= qq(>\n); + $tag .= qq( $_\n) for $g->[2]->@*; + $tag .= qq(\n); + + $xml .= $tag; + } + $xml .= qq(\n); + return $xml; + } +} + +package main; + +## read input from file +my $filename = shift @ARGV || 'svg-data.txt'; +open my $in_fh, "<", $filename or die "can't open $filename for input: $!\n"; + +## gather line and point data into lists +my @points; +my @lines; + +while (<$in_fh>) { + chomp; + /^(\d+),(\d+)$/ and push @points, [$1,$2]; + /^(\d+),(\d+),(\d+),(\d+)$/ and push @lines, [$1,$2,$3,$4]; +} + +## construct SGV formatted data string +my $svg = new SVG(200,300); +my $attr; + +$attr = { "stroke" => "blue", "stroke-width" => "4" }; +$svg->group( "lines", $attr); +$svg->add( $svg->line($_->@*) ) for @lines; + +$attr = { "fill"=>"red" }; +$svg->group( "circle", $attr); +$svg->add( $svg->circle($_->@*) ) for @points; + +my $out = $svg->make_SVG; + +## print to file, based on input filename +my ($outfile) = $filename =~ /^(.*)\./; +open my $out_fh, ">", "./${outfile}.svg" or die "can't open file ./${outfile}.svg: $!"; +say $out_fh $out; +close $out_fh; + + +=cut + + + + + + + + + + + + + diff --git a/challenge-165/colin-crain/perl/ch-2.pl b/challenge-165/colin-crain/perl/ch-2.pl new file mode 100755 index 0000000000..df11f42597 --- /dev/null +++ b/challenge-165/colin-crain/perl/ch-2.pl @@ -0,0 +1,220 @@ +#!/Users/colincrain/perl5/perlbrew/perls/perl-5.32.0/bin/perl +# +# white-line-fever.pl +# +# Line of Best Fit +# Submitted by: Ryan J Thompson +# When you have a scatter plot of points, a line of best fit is the +# line that best describes the relationship between the points, and +# is very useful in statistics. Otherwise known as linear +# regression. +# +# The method most often used is known as the least squares method, +# as it is straightforward and efficient, but you may use any +# method that generates the correct result. +# +# Calculate the line of best fit for the following 48 points: +# +# 333,129 39,189 140,156 292,134 393,52 160,166 362,122 13,193 +# 341,104 320,113 109,177 203,152 343,100 225,110 23,186 282,102 +# 284,98 205,133 297,114 292,126 339,112 327,79 253,136 61,169 +# 128,176 346,72 316,103 124,162 65,181 159,137 212,116 337,86 +# 215,136 153,137 390,104 100,180 76,188 77,181 69,195 92,186 +# 275,96 250,147 34,174 213,134 186,129 189,154 361,82 363,89 +# +# © 2022 colin crain +## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## + + + +use warnings; +use strict; +use utf8; +use feature ":5.26"; +use feature qw(signatures); +no warnings 'experimental::signatures'; + +## SVG package +package SVG; +use Moo; +use feature qw(signatures); +no warnings 'experimental::signatures'; +{ + has groups => ( + is => 'rw' , + default => sub { return [] } ); + has height => ( is => 'rw' ); + has width => ( is => 'rw' ); + + around BUILDARGS => sub { + my ( $orig, $class, @args ) = @_; + return { height => $args[0], + width => $args[1] }; + }; + + sub group( $self, $id, $attr ) { + push $self->groups->@*, [$id, $attr, []] + } + + sub add( $self, $item ){ + push $self->groups->[-1]->[2]->@*, $item; + } + + ## supported object primitives + + sub circle( $self, $x, $y, $r=3) { + ## default radius 3 for single point + return qq(); + } + + sub line( $self, $x1, $y1, $x2, $y2 ) { + return qq(); + } + + ## output + + sub make_SVG( $self ) { + my $h = $self->height; + my $w = $self->width; + + my $xml = <<~XML; + + + + XML + for my $g ( $self->groups->@* ){ + my $tag = qq([1]->{$_}" ).' ' for keys $g->[1]->%*; + $tag .= qq(>\n); + $tag .= qq( $_\n) for $g->[2]->@*; + $tag .= qq(\n); + + $xml .= $tag; + } + $xml .= qq(\n); + return $xml; + } +} + +##/SVG + +package main; + +## input data +my @data = ( + [333,129], [39,189], [140,156], [292,134], [393,52], + [160,166], [362,122], [13,193], [341,104], [320,113], + [109,177], [203,152], [343,100], [225,110], [23,186], + [282,102], [284,98], [205,133], [297,114], [292,126], + [339,112], [327,79], [253,136], [61,169], [128,176], + [346,72], [316,103], [124,162], [65,181], [159,137], + [212,116], [337,86], [215,136], [153,137], [390,104], + [100,180], [76,188], [77,181], [69,195], [92,186], + [275,96], [250,147], [34,174], [213,134], [186,129], + [189,154], [361,82], [363,89] ); + +## make SVG format data string +my $attr; +my $svg = new SVG(400,400); + +$attr = { "fill"=>"blue" }; +$svg->group( "points", $attr); +$svg->add( $svg->circle($_->@*) ) for @data; + +$attr = { "stroke" => "red", "stroke-width" => "4" }; +$svg->group( "best-fit-line", $attr ); +$svg->add( $svg->line( best_fit(@data) ) ); + +## write to file, ./best-fit.svg +open my $fh, ">", "best-fit.svg" or die "cant open bestfit.svg to output: $!\n"; +my $xml = $svg->make_SVG; +say $fh $xml; +close $fh; + + +sub best_fit (@points) { + my ($xsum, $ysum, $sqsum, $xysum); + + for (@data) { + $xsum += $_->[0]; + $ysum += $_->[1]; + $sqsum += $_->[0] ** 2; + $xysum += $_->[0] * $_->[1]; + } + + my $slope = ((@data * $xysum) - ($xsum * $ysum)) / ((@data * $sqsum) - ($xsum ** 2)); + my $intercept = ($ysum - ($slope * $xsum)) / @data; + + ## hardwired 400px canvas for now + my $xmax = 400; + + ## x1, y1, x2, y2 + return (0, $intercept, 400, ($slope * 400 + $intercept)) +} + +=cut + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 515f8d6be6..3e301f9f90 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,22 +1,23 @@ { - "chart" : { - "type" : "column" - }, "subtitle" : { - "text" : "[Champions: 21] Last updated at 2022-05-23 00:50:03 GMT" + "text" : "[Champions: 22] Last updated at 2022-05-23 00:57:56 GMT" }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } + "xAxis" : { + "type" : "category" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" } }, + "chart" : { + "type" : "column" + }, + "legend" : { + "enabled" : 0 + }, "series" : [ { - "name" : "The Weekly Challenge - 165", "data" : [ { "drilldown" : "Adam Russell", @@ -24,9 +25,9 @@ "y" : 4 }, { - "name" : "Arne Sommer", + "drilldown" : "Arne Sommer", "y" : 3, - "drilldown" : "Arne Sommer" + "name" : "Arne Sommer" }, { "drilldown" : "Athanasius", @@ -39,29 +40,34 @@ "y" : 3 }, { - "drilldown" : "Duncan C. White", + "y" : 2, + "name" : "Colin Crain", + "drilldown" : "Colin Crain" + }, + { "name" : "Duncan C. White", - "y" : 2 + "y" : 2, + "drilldown" : "Duncan C. White" }, { - "drilldown" : "Flavio Poletti", "name" : "Flavio Poletti", - "y" : 6 + "y" : 6, + "drilldown" : "Flavio Poletti" }, { - "drilldown" : "James Smith", + "name" : "James Smith", "y" : 3, - "name" : "James Smith" + "drilldown" : "James Smith" }, { + "drilldown" : "Jorg Sommrey", "y" : 2, - "name" : "Jorg Sommrey", - "drilldown" : "Jorg Sommrey" + "name" : "Jorg Sommrey" }, { + "drilldown" : "Julien Fiegehenn", "name" : "Julien Fiegehenn", - "y" : 2, - "drilldown" : "Julien Fiegehenn" + "y" : 2 }, { "drilldown" : "Laurent Rosenfeld", @@ -70,38 +76,38 @@ }, { "drilldown" : "Luca Ferrari", - "name" : "Luca Ferrari", - "y" : 8 + "y" : 8, + "name" : "Luca Ferrari" }, { "drilldown" : "Mark Anderson", - "y" : 2, - "name" : "Mark Anderson" + "name" : "Mark Anderson", + "y" : 2 }, { - "drilldown" : "Peter Campbell Smith", + "y" : 3, "name" : "Peter Campbell Smith", - "y" : 3 + "drilldown" : "Peter Campbell Smith" }, { - "drilldown" : "Rick Bychowski", "y" : 2, - "name" : "Rick Bychowski" + "name" : "Rick Bychowski", + "drilldown" : "Rick Bychowski" }, { - "drilldown" : "Robert Ransbottom", "name" : "Robert Ransbottom", - "y" : 2 + "y" : 2, + "drilldown" : "Robert Ransbottom" }, { - "drilldown" : "Roger Bell_West", + "y" : 5, "name" : "Roger Bell_West", - "y" : 5 + "drilldown" : "Roger Bell_West" }, { + "drilldown" : "Ryan Thompson", "name" : "Ryan Thompson", - "y" : 3, - "drilldown" : "Ryan Thompson" + "y" : 3 }, { "drilldown" : "Saif Ahmed", @@ -119,37 +125,27 @@ "y" : 3 }, { - "y" : 2, + "drilldown" : "Wanderdoc", "name" : "Wanderdoc", - "drilldown" : "Wanderdoc" + "y" : 2 } ], + "name" : "The Weekly Challenge - 165", "colorByPoint" : 1 } ], - "xAxis" : { - "type" : "category" - }, - "title" : { - "text" : "The Weekly Challenge - 165" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } } }, - "tooltip" : { - "pointFormat" : "{point.name}: {point.y:f}
", - "headerFormat" : "{series.name}
", - "followPointer" : 1 - }, - "legend" : { - "enabled" : 0 - }, "drilldown" : { "series" : [ { - "name" : "Adam Russell", "data" : [ [ "Perl", @@ -160,11 +156,10 @@ 2 ] ], + "name" : "Adam Russell", "id" : "Adam Russell" }, { - "name" : "Arne Sommer", - "id" : "Arne Sommer", "data" : [ [ "Raku", @@ -174,20 +169,21 @@ "Blog", 1 ] - ] + ], + "name" : "Arne Sommer", + "id" : "Arne Sommer" }, { + "id" : "Athanasius", "name" : "Athanasius", "data" : [ [ "Perl", 2 ] - ], - "id" : "Athanasius" + ] }, { - "name" : "Cheok-Yin Fung", "data" : [ [ "Perl", @@ -198,20 +194,32 @@ 1 ] ], + "name" : "Cheok-Yin Fung", "id" : "Cheok-Yin Fung" }, { - "name" : "Duncan C. White", - "id" : "Duncan C. White", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "Colin Crain", + "name" : "Colin Crain" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "name" : "Duncan C. White", + "id" : "Duncan C. White" }, { "id" : "Flavio Poletti", + "name" : "Flavio Poletti", "data" : [ [ "Perl", @@ -225,10 +233,10 @@ "Blog", 2 ] - ], - "name" : "Flavio Poletti" + ] }, { + "name" : "James Smith", "id" : "James Smith", "data" : [ [ @@ -239,31 +247,31 @@ "Blog", 1 ] - ], - "name" : "James Smith" + ] }, { - "name" : "Jorg Sommrey", "data" : [ [ "Perl", 2 ] ], - "id" : "Jorg Sommrey" + "id" : "Jorg Sommrey", + "name" : "Jorg Sommrey" }, { + "name" : "Julien Fiegehenn", "id" : "Julien Fiegehenn", "data" : [ [ "Perl", 2 ] - ], - "name" : "Julien Fiegehenn" + ] }, { "name" : "Laurent Rosenfeld", + "id" : "Laurent Rosenfeld", "data" : [ [ "Perl", @@ -277,12 +285,11 @@ "Blog", 2 ] - ], - "id" : "Laurent Rosenfeld" + ] }, { - "name" : "Luca Ferrari", "id" : "Luca Ferrari", + "name" : "Luca Ferrari", "data" : [ [ "Raku", @@ -295,16 +302,17 @@ ] }, { - "name" : "Mark Anderson", "data" : [ [ "Raku", 2 ] ], + "name" : "Mark Anderson", "id" : "Mark Anderson" }, { + "name" : "Peter Campbell Smith", "id" : "Peter Campbell Smith", "data" : [ [ @@ -315,30 +323,31 @@ "Blog", 1 ] - ], - "name" : "Peter Campbell Smith" + ] }, { + "id" : "Rick Bychowski", + "name" : "Rick Bychowski", "data" : [ [ "Raku", 2 ] - ], - "id" : "Rick Bychowski", - "name" : "Rick Bychowski" + ] }, { + "id" : "Robert Ransbottom", "name" : "Robert Ransbottom", "data" : [ [ "Raku", 2 ] - ], - "id" : "Robert Ransbottom" + ] }, { + "name" : "Roger Bell_West", + "id" : "Roger Bell_West", "data" : [ [ "Perl", @@ -352,12 +361,11 @@ "Blog", 1 ] - ], - "id" : "Roger Bell_West", - "name" : "Roger Bell_West" + ] }, { "id" : "Ryan Thompson", + "name" : "Ryan Thompson", "data" : [ [ "Perl", @@ -367,17 +375,16 @@ "Blog", 1 ] - ], - "name" : "Ryan Thompson" + ] }, { - "id" : "Saif Ahmed", "data" : [ [ "Perl", 2 ] ], + "id" : "Saif Ahmed", "name" : "Saif Ahmed" }, { @@ -391,7 +398,6 @@ "name" : "Ulrich Rieke" }, { - "name" : "W. Luis Mochan", "data" : [ [ "Perl", @@ -402,6 +408,7 @@ 1 ] ], + "name" : "W. Luis Mochan", "id" : "W. Luis Mochan" }, { @@ -415,5 +422,13 @@ "name" : "Wanderdoc" } ] + }, + "title" : { + "text" : "The Weekly Challenge - 165" + }, + "tooltip" : { + "followPointer" : 1, + "headerFormat" : "{series.name}
", + "pointFormat" : "{point.name}: {point.y:f}
" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index b38ec16c1f..194c31e483 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,6 +1,42 @@ { + "title" : { + "text" : "The Weekly Challenge Contributions [2019 - 2022]" + }, + "tooltip" : { + "pointFormat" : "{point.y:.0f}" + }, + "subtitle" : { + "text" : "Last updated at 2022-05-23 00:57:56 GMT" + }, + "yAxis" : { + "title" : { + "text" : null + }, + "min" : 0 + }, + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } + } + }, "series" : [ { + "dataLabels" : { + "y" : 10, + "color" : "#FFFFFF", + "format" : "{point.y:.0f}", + "rotation" : -90, + "enabled" : "true", + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + }, + "align" : "right" + }, "name" : "Contributions", "data" : [ [ @@ -9,55 +45,19 @@ ], [ "Perl", - 8074 + 8076 ], [ "Raku", 4783 ] - ], - "dataLabels" : { - "align" : "right", - "rotation" : -90, - "color" : "#FFFFFF", - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - }, - "format" : "{point.y:.0f}", - "enabled" : "true", - "y" : 10 - } + ] } ], - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - } - } - }, - "title" : { - "text" : "The Weekly Challenge Contributions [2019 - 2022]" - }, - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 - }, "legend" : { "enabled" : "false" }, - "tooltip" : { - "pointFormat" : "{point.y:.0f}" - }, "chart" : { "type" : "column" - }, - "subtitle" : { - "text" : "Last updated at 2022-05-23 00:50:02 GMT" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index a32040bf09..3809a15346 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,9 +1,11 @@ { - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2022-05-23 00:50:03 GMT" + "tooltip" : { + "followPointer" : "true", + "headerFormat" : "", + "pointFormat" : "Challenge {point.name}: {point.y:f}
" }, - "chart" : { - "type" : "column" + "title" : { + "text" : "The Weekly Challenge Language" }, "drilldown" : { "series" : [ @@ -22,11 +24,10 @@ 11 ] ], - "id" : "001", - "name" : "001" + "name" : "001", + "id" : "001" }, { - "id" : "002", "data" : [ [ "Perl", @@ -41,10 +42,10 @@ 10 ] ], - "name" : "002" + "name" : "002", + "id" : "002" }, { - "name" : "003", "data" : [ [ "Perl", @@ -59,11 +60,10 @@ 9 ] ], + "name" : "003", "id" : "003" }, { - "name" : "004", - "id" : "004", "data" : [ [ "Perl", @@ -77,10 +77,13 @@ "Blog", 10 ] - ] + ], + "name" : "004", + "id" : "004" }, { "name" : "005", + "id" : "005", "data" : [ [ "Perl", @@ -94,11 +97,9 @@ "Blog", 12 ] - ], - "id" : "005" + ] }, { - "name" : "006", "data" : [ [ "Perl", @@ -113,9 +114,12 @@ 7 ] ], + "name" : "006", "id" : "006" }, { + "id" : "007", + "name" : "007", "data" : [ [ "Perl", @@ -129,11 +133,11 @@ "Blog", 10 ] - ], - "id" : "007", - "name" : "007" + ] }, { + "name" : "008", + "id" : "008", "data" : [ [ "Perl", @@ -147,9 +151,7 @@ "Blog", 12 ] - ], - "id" : "008", - "name" : "008" + ] }, { "data" : [ @@ -166,12 +168,10 @@ 13 ] ], - "id" : "009", - "name" : "009" + "name" : "009", + "id" : "009" }, { - "name" : "010", - "id" : "010", "data" : [ [ "Perl", @@ -185,10 +185,13 @@ "Blog", 11 ] - ] + ], + "id" : "010", + "name" : "010" }, { "name" : "011", + "id" : "011", "data" : [ [ "Perl", @@ -202,10 +205,10 @@ "Blog", 10 ] - ], - "id" : "011" + ] }, { + "name" : "012", "id" : "012", "data" : [ [ @@ -220,8 +223,7 @@ "Blog", 11 ] - ], - "name" : "012" + ] }, { "data" : [ @@ -238,12 +240,10 @@ 13 ] ], - "id" : "013", - "name" : "013" + "name" : "013", + "id" : "013" }, { - "name" : "014", - "id" : "014", "data" : [ [ "Perl", @@ -257,11 +257,13 @@ "Blog", 15 ] - ] + ], + "id" : "014", + "name" : "014" }, { - "name" : "015", "id" : "015", + "name" : "015", "data" : [ [ "Perl", @@ -278,6 +280,7 @@ ] }, { + "id" : "016", "name" : "016", "data" : [ [ @@ -292,10 +295,10 @@ "Blog", 12 ] - ], - "id" : "016" + ] }, { + "name" : "017", "id" : "017", "data" : [ [ @@ -310,11 +313,9 @@ "Blog", 12 ] - ], - "name" : "017" + ] }, { - "id" : "018", "data" : [ [ "Perl", @@ -329,9 +330,11 @@ 14 ] ], - "name" : "018" + "name" : "018", + "id" : "018" }, { + "id" : "019", "name" : "019", "data" : [ [ @@ -346,11 +349,9 @@ "Blog", 13 ] - ], - "id" : "019" + ] }, { - "name" : "020", "data" : [ [ "Perl", @@ -365,10 +366,10 @@ 13 ] ], + "name" : "020", "id" : "020" }, { - "id" : "021", "data" : [ [ "Perl", @@ -383,11 +384,10 @@ 10 ] ], + "id" : "021", "name" : "021" }, { - "name" : "022", - "id" : "022", "data" : [ [ "Perl", @@ -401,9 +401,13 @@ "Blog", 10 ] - ] + ], + "id" : "022", + "name" : "022" }, { + "id" : "023", + "name" : "023", "data" : [ [ "Perl", @@ -417,13 +421,9 @@ "Blog", 12 ] - ], - "id" : "023", - "name" : "023" + ] }, { - "name" : "024", - "id" : "024", "data" : [ [ "Perl", @@ -437,11 +437,11 @@ "Blog", 11 ] - ] + ], + "name" : "024", + "id" : "024" }, { - "name" : "025", - "id" : "025", "data" : [ [ "Perl", @@ -455,7 +455,9 @@ "Blog", 12 ] - ] + ], + "id" : "025", + "name" : "025" }, { "data" : [ @@ -476,6 +478,8 @@ "name" : "026" }, { + "name" : "027", + "id" : "027", "data" : [ [ "Perl", @@ -489,9 +493,7 @@ "Blog", 9 ] - ], - "id" : "027", - "name" : "027" + ] }, { "name" : "028", @@ -512,8 +514,6 @@ ] }, { - "name" : "029", - "id" : "029", "data" : [ [ "Perl", @@ -527,10 +527,11 @@ "Blog", 12 ] - ] + ], + "id" : "029", + "name" : "029" }, { - "name" : "030", "data" : [ [ "Perl", @@ -545,9 +546,12 @@ 10 ] ], - "id" : "030" + "id" : "030", + "name" : "030" }, { + "name" : "031", + "id" : "031", "data" : [ [ "Perl", @@ -561,12 +565,9 @@ "Blog", 9 ] - ], - "id" : "031", - "name" : "031" + ] }, { - "name" : "032", "data" : [ [ "Perl", @@ -581,9 +582,12 @@ 10 ] ], + "name" : "032", "id" : "032" }, { + "name" : "033", + "id" : "033", "data" : [ [ "Perl", @@ -597,11 +601,11 @@ "Blog", 10 ] - ], - "id" : "033", - "name" : "033" + ] }, { + "name" : "034", + "id" : "034", "data" : [ [ "Perl", @@ -615,13 +619,11 @@ "Blog", 11 ] - ], - "id" : "034", - "name" : "034" + ] }, { - "name" : "035", "id" : "035", + "name" : "035", "data" : [ [ "Perl", @@ -652,12 +654,10 @@ 11 ] ], - "id" : "036", - "name" : "036" + "name" : "036", + "id" : "036" }, { - "name" : "037", - "id" : "037", "data" : [ [ "Perl", @@ -671,10 +671,11 @@ "Blog", 9 ] - ] + ], + "id" : "037", + "name" : "037" }, { - "id" : "038", "data" : [ [ "Perl", @@ -689,9 +690,11 @@ 12 ] ], - "name" : "038" + "name" : "038", + "id" : "038" }, { + "name" : "039", "id" : "039", "data" : [ [ @@ -706,12 +709,11 @@ "Blog", 12 ] - ], - "name" : "039" + ] }, { - "name" : "040", "id" : "040", + "name" : "040", "data" : [ [ "Perl", @@ -742,8 +744,8 @@ 9 ] ], - "id" : "041", - "name" : "041" + "name" : "041", + "id" : "041" }, { "name" : "042", @@ -764,7 +766,6 @@ ] }, { - "id" : "043", "data" : [ [ "Perl", @@ -779,7 +780,8 @@ 11 ] ], - "name" : "043" + "name" : "043", + "id" : "043" }, { "name" : "044", @@ -800,6 +802,8 @@ ] }, { + "id" : "045", + "name" : "045", "data" : [ [ "Perl", @@ -813,12 +817,9 @@ "Blog", 11 ] - ], - "id" : "045", - "name" : "045" + ] }, { - "id" : "046", "data" : [ [ "Perl", @@ -833,6 +834,7 @@ 10 ] ], + "id" : "046", "name" : "046" }, { @@ -873,6 +875,7 @@ }, { "id" : "049", + "name" : "049", "data" : [ [ "Perl", @@ -886,8 +889,7 @@ "Blog", 12 ] - ], - "name" : "049" + ] }, { "data" : [ @@ -904,11 +906,10 @@ 12 ] ], - "id" : "050", - "name" : "050" + "name" : "050", + "id" : "050" }, { - "id" : "051", "data" : [ [ "Perl", @@ -923,11 +924,12 @@ 11 ] ], - "name" : "051" + "name" : "051", + "id" : "051" }, { - "name" : "052", "id" : "052", + "name" : "052", "data" : [ [ "Perl", @@ -962,8 +964,6 @@ ] }, { - "name" : "054", - "id" : "054", "data" : [ [ "Perl", @@ -977,7 +977,9 @@ "Blog", 18 ] - ] + ], + "id" : "054", + "name" : "054" }, { "data" : [ @@ -994,10 +996,12 @@ 14 ] ], - "id" : "055", - "name" : "055" + "name" : "055", + "id" : "055" }, { + "id" : "056", + "name" : "056", "data" : [ [ "Perl", @@ -1011,12 +1015,11 @@ "Blog", 16 ] - ], - "id" : "056", - "name" : "056" + ] }, { "name" : "057", + "id" : "057", "data" : [ [ "Perl", @@ -1030,10 +1033,10 @@ "Blog", 15 ] - ], - "id" : "057" + ] }, { + "id" : "058", "name" : "058", "data" : [ [ @@ -1048,12 +1051,9 @@ "Blog", 13 ] - ], - "id" : "058" + ] }, { - "name" : "059", - "id" : "059", "data" : [ [ "Perl", @@ -1067,10 +1067,11 @@ "Blog", 16 ] - ] + ], + "name" : "059", + "id" : "059" }, { - "id" : "060", "data" : [ [ "Perl", @@ -1085,6 +1086,7 @@ 16 ] ], + "id" : "060", "name" : "060" }, { @@ -1102,10 +1104,11 @@ 14 ] ], - "id" : "061", - "name" : "061" + "name" : "061", + "id" : "061" }, { + "name" : "062", "id" : "062", "data" : [ [ @@ -1120,12 +1123,11 @@ "Blog", 11 ] - ], - "name" : "062" + ] }, { - "name" : "063", "id" : "063", + "name" : "063", "data" : [ [ "Perl", @@ -1142,7 +1144,6 @@ ] }, { - "id" : "064", "data" : [ [ "Perl", @@ -1157,9 +1158,12 @@ 16 ] ], - "name" : "064" + "name" : "064", + "id" : "064" }, { + "id" : "065", + "name" : "065", "data" : [ [ "Perl", @@ -1173,13 +1177,9 @@ "Blog", 15 ] - ], - "id" : "065", - "name" : "065" + ] }, { - "name" : "066", - "id" : "066", "data" : [ [ "Perl", @@ -1193,11 +1193,11 @@ "Blog", 14 ] - ] + ], + "name" : "066", + "id" : "066" }, { - "name" : "067", - "id" : "067", "data" : [ [ "Perl", @@ -1211,10 +1211,11 @@ "Blog", 18 ] - ] + ], + "name" : "067", + "id" : "067" }, { - "name" : "068", "data" : [ [ "Perl", @@ -1229,9 +1230,11 @@ 13 ] ], - "id" : "068" + "id" : "068", + "name" : "068" }, { + "name" : "069", "id" : "069", "data" : [ [ @@ -1246,12 +1249,11 @@ "Blog", 16 ] - ], - "name" : "069" + ] }, { - "name" : "070", "id" : "070", + "name" : "070", "data" : [ [ "Perl", @@ -1282,10 +1284,12 @@ 15 ] ], - "id" : "071", - "name" : "071" + "name" : "071", + "id" : "071" }, { + "id" : "072", + "name" : "072", "data" : [ [ "Perl", @@ -1299,12 +1303,11 @@ "Blog", 19 ] - ], - "id" : "072", - "name" : "072" + ] }, { "id" : "073", + "name" : "073", "data" : [ [ "Perl", @@ -1318,12 +1321,11 @@ "Blog", 17 ] - ], - "name" : "073" + ] }, { - "name" : "074", "id" : "074", + "name" : "074", "data" : [ [ "Perl", @@ -1340,7 +1342,6 @@ ] }, { - "id" : "075", "data" : [ [ "Perl", @@ -1355,9 +1356,11 @@ 20 ] ], - "name" : "075" + "name" : "075", + "id" : "075" }, { + "id" : "076", "name" : "076", "data" : [ [ @@ -1372,11 +1375,9 @@ "Blog", 16 ] - ], - "id" : "076" + ] }, { - "id" : "077", "data" : [ [ "Perl", @@ -1391,11 +1392,10 @@ 14 ] ], + "id" : "077", "name" : "077" }, { - "name" : "078", - "id" : "078", "data" : [ [ "Perl", @@ -1409,9 +1409,12 @@ "Blog", 18 ] - ] + ], + "id" : "078", + "name" : "078" }, { + "name" : "079", "id" : "079", "data" : [ [ @@ -1426,10 +1429,11 @@ "Blog", 17 ] - ], - "name" : "079" + ] }, { + "id" : "080", + "name" : "080", "data" : [ [ "Perl", @@ -1443,13 +1447,11 @@ "Blog", 16 ] - ], - "id" : "080", - "name" : "080" + ] }, { - "name" : "081", "id" : "081", + "name" : "081", "data" : [ [ "Perl", @@ -1466,7 +1468,6 @@ ] }, { - "id" : "082", "data" : [ [ "Perl", @@ -1481,10 +1482,12 @@ 17 ] ], - "name" : "082" + "name" : "082", + "id" : "082" }, { "name" : "083", + "id" : "083", "data" : [ [ "Perl", @@ -1498,8 +1501,7 @@ "Blog", 16 ] - ], - "id" : "083" + ] }, { "data" : [ @@ -1516,10 +1518,11 @@ 12 ] ], - "id" : "084", - "name" : "084" + "name" : "084", + "id" : "084" }, { + "name" : "085", "id" : "085", "data" : [ [ @@ -1534,10 +1537,11 @@ "Blog", 18 ] - ], - "name" : "085" + ] }, { + "name" : "086", + "id" : "086", "data" : [ [ "Perl", @@ -1551,11 +1555,10 @@ "Blog", 15 ] - ], - "id" : "086", - "name" : "086" + ] }, { + "name" : "087", "id" : "087", "data" : [ [ @@ -1570,11 +1573,9 @@ "Blog", 14 ] - ], - "name" : "087" + ] }, { - "name" : "088", "data" : [ [ "Perl", @@ -1589,11 +1590,12 @@ 20 ] ], - "id" : "088" + "id" : "088", + "name" : "088" }, { - "name" : "089", "id" : "089", + "name" : "089", "data" : [ [ "Perl", @@ -1610,8 +1612,6 @@ ] }, { - "name" : "090", - "id" : "090", "data" : [ [ "Perl", @@ -1625,10 +1625,11 @@ "Blog", 17 ] - ] + ], + "id" : "090", + "name" : "090" }, { - "id" : "091", "data" : [ [ "Perl", @@ -1643,9 +1644,11 @@ 16 ] ], - "name" : "091" + "name" : "091", + "id" : "091" }, { + "name" : "092", "id" : "092", "data" : [ [ @@ -1660,10 +1663,10 @@ "Blog", 16 ] - ], - "name" : "092" + ] }, { + "id" : "093", "name" : "093", "data" : [ [ @@ -1678,11 +1681,9 @@ "Blog", 16 ] - ], - "id" : "093" + ] }, { - "id" : "094", "data" : [ [ "Perl", @@ -1697,7 +1698,8 @@ 17 ] ], - "name" : "094" + "name" : "094", + "id" : "094" }, { "name" : "095", @@ -1732,11 +1734,10 @@ 19 ] ], - "id" : "096", - "name" : "096" + "name" : "096", + "id" : "096" }, { - "name" : "097", "data" : [ [ "Perl", @@ -1751,10 +1752,10 @@ 19 ] ], - "id" : "097" + "id" : "097", + "name" : "097" }, { - "id" : "098", "data" : [ [ "Perl", @@ -1769,9 +1770,12 @@ 17 ] ], + "id" : "098", "name" : "098" }, { + "name" : "099", + "id" : "099", "data" : [ [ "Perl", @@ -1785,11 +1789,10 @@ "Blog", 14 ] - ], - "id" : "099", - "name" : "099" + ] }, { + "id" : "100", "name" : "100", "data" : [ [ @@ -1804,10 +1807,10 @@ "Blog", 21 ] - ], - "id" : "100" + ] }, { + "id" : "101", "name" : "101", "data" : [ [ @@ -1822,10 +1825,10 @@ "Blog", 13 ] - ], - "id" : "101" + ] }, { + "name" : "102", "id" : "102", "data" : [ [ @@ -1840,11 +1843,9 @@ "Blog", 15 ] - ], - "name" : "102" + ] }, { - "name" : "103", "data" : [ [ "Perl", @@ -1859,10 +1860,12 @@ 15 ] ], - "id" : "103" + "id" : "103", + "name" : "103" }, { "id" : "104", + "name" : "104", "data" : [ [ "Perl", @@ -1876,11 +1879,11 @@ "Blog", 14 ] - ], - "name" : "104" + ] }, { "id" : "105", + "name" : "105", "data" : [ [ "Perl", @@ -1894,12 +1897,11 @@ "Blog", 14 ] - ], - "name" : "105" + ] }, { - "name" : "106", "id" : "106", + "name" : "106", "data" : [ [ "Perl", @@ -1916,8 +1918,8 @@ ] }, { - "name" : "107", "id" : "107", + "name" : "107", "data" : [ [ "Perl", @@ -1934,6 +1936,7 @@ ] }, { + "name" : "108", "id" : "108", "data" : [ [ @@ -1948,11 +1951,9 @@ "Blog", 20 ] - ], - "name" : "108" + ] }, { - "id" : "109", "data" : [ [ "Perl", @@ -1967,11 +1968,12 @@ 22 ] ], + "id" : "109", "name" : "109" }, { - "name" : "110", "id" : "110", + "name" : "110", "data" : [ [ "Perl", @@ -1988,6 +1990,8 @@ ] }, { + "id" : "111", + "name" : "111", "data" : [ [ "Perl", @@ -2001,11 +2005,11 @@ "Blog", 17 ] - ], - "id" : "111", - "name" : "111" + ] }, { + "id" : "112", + "name" : "112", "data" : [ [ "Perl", @@ -2019,12 +2023,11 @@ "Blog", 19 ] - ], - "id" : "112", - "name" : "112" + ] }, { "id" : "113", + "name" : "113", "data" : [ [ "Perl", @@ -2038,8 +2041,7 @@ "Blog", 19 ] - ], - "name" : "113" + ] }, { "name" : "114", @@ -2060,6 +2062,7 @@ ] }, { + "name" : "115", "id" : "115", "data" : [ [ @@ -2074,10 +2077,10 @@ "Blog", 20 ] - ], - "name" : "115" + ] }, { + "name" : "116", "id" : "116", "data" : [ [ @@ -2092,11 +2095,11 @@ "Blog", 17 ] - ], - "name" : "116" + ] }, { "id" : "117", + "name" : "117", "data" : [ [ "Perl", @@ -2110,11 +2113,11 @@ "Blog", 19 ] - ], - "name" : "117" + ] }, { "name" : "118", + "id" : "118", "data" : [ [ "Perl", @@ -2128,11 +2131,11 @@ "Blog", 17 ] - ], - "id" : "118" + ] }, { "id" : "119", + "name" : "119", "data" : [ [ "Perl", @@ -2146,12 +2149,9 @@ "Blog", 21 ] - ], - "name" : "119" + ] }, { - "name" : "120", - "id" : "120", "data" : [ [ "Perl", @@ -2165,10 +2165,11 @@ "Blog", 21 ] - ] + ], + "name" : "120", + "id" : "120" }, { - "id" : "121", "data" : [ [ "Perl", @@ -2183,6 +2184,7 @@ 17 ] ], + "id" : "121", "name" : "121" }, { @@ -2204,7 +2206,6 @@ "name" : "122" }, { - "name" : "123", "data" : [ [ "Perl", @@ -2219,10 +2220,10 @@ 18 ] ], + "name" : "123", "id" : "123" }, { - "name" : "124", "data" : [ [ "Perl", @@ -2237,9 +2238,12 @@ 16 ] ], - "id" : "124" + "id" : "124", + "name" : "124" }, { + "name" : "125", + "id" : "125", "data" : [ [ "Perl", @@ -2253,12 +2257,11 @@ "Blog", 11 ] - ], - "id" : "125", - "name" : "125" + ] }, { "name" : "126", + "id" : "126", "data" : [ [ "Perl", @@ -2272,10 +2275,10 @@ "Blog", 19 ] - ], - "id" : "126" + ] }, { + "name" : "127", "id" : "127", "data" : [ [ @@ -2290,11 +2293,9 @@ "Blog", 18 ] - ], - "name" : "127" + ] }, { - "id" : "128", "data" : [ [ "Perl", @@ -2309,6 +2310,7 @@ 15 ] ], + "id" : "128", "name" : "128" }, { @@ -2326,8 +2328,8 @@ 14 ] ], - "id" : "129", - "name" : "129" + "name" : "129", + "id" : "129" }, { "data" : [ @@ -2344,11 +2346,10 @@ 13 ] ], - "id" : "130", - "name" : "130" + "name" : "130", + "id" : "130" }, { - "id" : "131", "data" : [ [ "Perl", @@ -2363,9 +2364,11 @@ 17 ] ], - "name" : "131" + "name" : "131", + "id" : "131" }, { + "id" : "132", "name" : "132", "data" : [ [ @@ -2380,11 +2383,11 @@ "Blog", 13 ] - ], - "id" : "132" + ] }, { "name" : "133", + "id" : "133", "data" : [ [ "Perl", @@ -2398,11 +2401,9 @@ "Blog", 18 ] - ], - "id" : "133" + ] }, { - "id" : "134", "data" : [ [ "Perl", @@ -2417,7 +2418,8 @@ 15 ] ], - "name" : "134" + "name" : "134", + "id" : "134" }, { "name" : "135", @@ -2438,6 +2440,7 @@ ] }, { + "name" : "136", "id" :