diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-24 11:49:49 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-24 11:49:49 +0100 |
| commit | 2dce54510c61114bbd22ee752a108520e7c43a11 (patch) | |
| tree | 18b3b443370a1052d4d4a22f90e17e435e93ce2a | |
| parent | 8f187e56fc6e51829b2b555e24f6672bc505d8ca (diff) | |
| download | perlweeklychallenge-club-2dce54510c61114bbd22ee752a108520e7c43a11.tar.gz perlweeklychallenge-club-2dce54510c61114bbd22ee752a108520e7c43a11.tar.bz2 perlweeklychallenge-club-2dce54510c61114bbd22ee752a108520e7c43a11.zip | |
- Added solutions by Colin Crain.
| -rw-r--r-- | challenge-061/colin-crain/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-061/colin-crain/perl/ch-1.pl | 122 | ||||
| -rw-r--r-- | challenge-061/colin-crain/perl/ch-2.pl | 35 | ||||
| -rw-r--r-- | challenge-061/colin-crain/raku/ch-1.p6 | 46 | ||||
| -rw-r--r-- | challenge-061/colin-crain/raku/ch-2.p6 | 8 | ||||
| -rw-r--r-- | challenge-061/colin-crain/raku/ch-2a.p6 | 36 | ||||
| -rw-r--r-- | stats/pwc-current.json | 215 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 64 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 476 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 388 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 58 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 100 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 78 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 50 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 46 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 52 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 384 |
17 files changed, 1215 insertions, 944 deletions
diff --git a/challenge-061/colin-crain/blog.txt b/challenge-061/colin-crain/blog.txt new file mode 100644 index 0000000000..d476158e6c --- /dev/null +++ b/challenge-061/colin-crain/blog.txt @@ -0,0 +1 @@ +https://colincrain.wordpress.com/2020/05/23/produce-market-protocols/ diff --git a/challenge-061/colin-crain/perl/ch-1.pl b/challenge-061/colin-crain/perl/ch-1.pl new file mode 100644 index 0000000000..9ee814a411 --- /dev/null +++ b/challenge-061/colin-crain/perl/ch-1.pl @@ -0,0 +1,122 @@ +use warnings; +use strict; +use feature ":5.26"; + +## ## ## ## ## MAIN: + +my @array = @ARGV; + +my $product = product( @array ); + +my $zeros = grep { $_ == 0 } @array; +my $negs = grep { $_ < 0 } @array; +my $max_products; + +## case 1, no zeros, even or no negatives, whole array result +if ($product > 0) { + $max_products = \@array; +} +## case 2, odd number of negatives no 0s or single 0 no negs +if ($product < 0 or ($zeros == 1 and $negs == 0)) { + ($max_products, $product) = divide_left_right( @array ); +} +## case 3 we need to do it the hard way and compute all subarrays +else { + ($max_products, $product) = find_max_product(make_all_sublists(@array)); +} + +print_output($max_products, $product ); + + + + +## ## ## ## ## SUBS: + +sub product { +## calculate the reduction product +## given a null list returns - inf (defined, but any value is greater) + my @list = @_; + return( - inf ) if scalar @list == 0; + my $product = 1; + $product *= $_ for @list; + return $product; +} + +sub divide_left_right { +## divides list into left and right sections +## shifting off first negative from either side and +## calculate product of remaining elements +## solves for either odd count of negative numbers or single 0, +## but not both together + my @array = @_; + my @max_sublists; + my $val = "inf"; + + my @left = @array; + $val = pop @left until $val <= 0; + my $left = product(@left); + my @right = @array; + do {$val = shift @right; } until $val <= 0; + my $right = product(@right); + + if ($right > $left) { + @max_sublists = \@right; + $product = $right; + } + elsif ($right == $left) { + @max_sublists = (\@right, \@left); + $product = $right; + } + else { + @max_sublists = \@left; + $product = $left; + } + return (\@max_sublists, $product); +} + +sub make_all_sublists { +## constructs all sublists as an array of array refs: +## ex: [ [1], [1,2], [1,2,3], [2], [2,3], [3] ] + my @array = @_; + my @sublists; + my $end = scalar @array - 1; + for my $start ( 0..$end ) { + my @subset = (); + for my $idx ($start..$end) { + push @subset, $array[$idx]; + my @copy = @subset; + push @sublists, \@copy; + } + } + return @sublists; +} + +sub find_max_product { +## iterate through array of array refs, +## calc products and keeps track of maximums + my @output = @_; + my $max_product = - inf; + my @max_sublists; + + for my $list ( @output){ + my $product = product( @$list ); + if ($product > $max_product) { + $max_product = $product; + @max_sublists = ($list); + } + elsif ($product == $max_product) { + push @max_sublists, $list + } + } + return (\@max_sublists, $max_product); +} + +sub print_output { +## given list ref and product +## prints output + my ($max_sublists, $product) = @_; + + say "product : ", $product; + say "subset(s): "; + say join ", ", $_->@* for $max_sublists->@*; +} diff --git a/challenge-061/colin-crain/perl/ch-2.pl b/challenge-061/colin-crain/perl/ch-2.pl new file mode 100644 index 0000000000..d1bb7e6ac5 --- /dev/null +++ b/challenge-061/colin-crain/perl/ch-2.pl @@ -0,0 +1,35 @@ +use warnings; +use strict; +use feature ":5.26"; + +## ## ## ## ## MAIN: + +my $str = shift @ARGV; +my $len = length $str; + +ONE: for my $one ( 1..3 ) { + my $octet_A = substr($str, 0, $one); + last if $octet_A == 0 || $octet_A > 255; #1 + + TWO: for my $two ( 1..3 ) { + next ONE if $one+$two >= $len-1; #2 + my $octet_B = substr($str, $one, $two); + next ONE if $octet_B == 0 || $octet_B > 255; #1 + + THREE: for my $three ( 1..3 ) { + next TWO if $one+$two+$three >= $len; #2 + my $octet_C = substr($str, $one+$two, $three); + next TWO if $octet_C == 0 || $octet_C > 255; #1 + + FOUR: for my $four ( 1..3 ) { + next THREE if $one+$two+$three+$four > $len; #2 + next if $one+$two+$three+$four < $len; #3 + my $octet_D = substr($str, $one+$two+$three, $four); + next THREE if $octet_D == 0 || $octet_D > 255; #1 + + say "$octet_A.$octet_B.$octet_C.$octet_D"; ## success! + next THREE; + } + } + } +} diff --git a/challenge-061/colin-crain/raku/ch-1.p6 b/challenge-061/colin-crain/raku/ch-1.p6 new file mode 100644 index 0000000000..7601b9bf88 --- /dev/null +++ b/challenge-061/colin-crain/raku/ch-1.p6 @@ -0,0 +1,46 @@ +multi MAIN () { + say "Usage: produce_market.raku array[0] array[1] array[2] ..."; +} + +multi MAIN(*@array) { + my $product = [*] @array; + my $max_sublists = []; ## we need to load up as an array of arrays + $max_sublists.push: @array; + + if $product <= 0 { + ($product, $max_sublists) = find_max_product( make_all_sublists( @array ) ); + } + print_output( $product, $max_sublists ); +} + +sub make_all_sublists (@array) { + my @sublists.append( [\,] $_ .. @array.end ) for ^@array; + return @sublists.deepmap( { @array[$_] } ); +} + +sub find_max_product (@output) { + ## iterate through array of array refs, + ## calc products and keeps track of maximums + my $max_product = -Inf; + my $max_sublists; + + for @output -> $list { + my $product = [*] |$list; + if $product > $max_product { + $max_product = $product; + $max_sublists = [$list]; + } + elsif $product == $max_product { + $max_sublists.append: $list; + } + } + return( $max_product, $max_sublists ); +} + +sub print_output ($max_product, @max_sublists) { + ## given list ref and product + ## prints output + say "product : ", $max_product; + say "sublist(s): "; + .say for @max_sublists; +} diff --git a/challenge-061/colin-crain/raku/ch-2.p6 b/challenge-061/colin-crain/raku/ch-2.p6 new file mode 100644 index 0000000000..5db5ae4901 --- /dev/null +++ b/challenge-061/colin-crain/raku/ch-2.p6 @@ -0,0 +1,8 @@ +#!/usr/bin/env perl6 + +sub MAIN( $str = "2552501135" ) { + my @matches = $str ~~ m:ex/ ^ ( \d ** 1..3 + <?{ $/.Int <= 255 && $/ !~~ /^0\d/ }> + ) ** 4 $ /; + .flat.join(".").say for @matches; +} diff --git a/challenge-061/colin-crain/raku/ch-2a.p6 b/challenge-061/colin-crain/raku/ch-2a.p6 new file mode 100644 index 0000000000..1ddf9de947 --- /dev/null +++ b/challenge-061/colin-crain/raku/ch-2a.p6 @@ -0,0 +1,36 @@ +sub MAIN($str = "552051139") { + my @solutions; + get_octet_set( $str.Int, @solutions ); + + .say for @solutions; +} + +sub get_octet_set ($str, @solutions, $prev = []) { + for 1 .. 3 -> $digits { + ## out if str is undef or substr would be beyond end #2, #3 + return if $str.chars - $digits < 0 || $prev.elems == 4; + + my $list = $prev.clone; + + ## get octet + my $octet = substr( $str, 0, $digits ); + + ## out if leading 0 or out of bounds #1 + return if $octet ~~ /^0\d/ || $octet > 255; + + ## if this is the last octet log and return # success here + if $list.elems == 3 && $str.chars == $digits { + $list.push: $octet; + @solutions.push: $list; + ## out: cannot have a longer solution + return; + } + + ## crop str to remainder + my $cropped = substr( $str, $digits ); + ## add octet to copy of list + my $newlist = $list.push: $octet; + ## descend + get_octet_set( $cropped, @solutions, $list ); + } +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index f6f7d4bc73..452cd6ff31 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,94 +1,77 @@ { - "title" : { - "text" : "Perl Weekly Challenge - 061" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "subtitle" : { - "text" : "[Champions: 21] Last updated at 2020-05-24 10:13:19 GMT" - }, - "legend" : { - "enabled" : 0 - }, - "tooltip" : { - "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 - }, - "chart" : { - "type" : "column" - }, "series" : [ { "colorByPoint" : 1, "data" : [ { + "y" : 3, "name" : "Arne Sommer", - "drilldown" : "Arne Sommer", - "y" : 3 + "drilldown" : "Arne Sommer" }, { - "name" : "Athanasius", + "y" : 4, "drilldown" : "Athanasius", - "y" : 4 + "name" : "Athanasius" + }, + { + "name" : "Colin Crain", + "drilldown" : "Colin Crain", + "y" : 5 }, { "y" : 3, - "name" : "Dave Jacoby", - "drilldown" : "Dave Jacoby" + "drilldown" : "Dave Jacoby", + "name" : "Dave Jacoby" }, { + "y" : 2, "drilldown" : "Donald Hunter", - "name" : "Donald Hunter", - "y" : 2 + "name" : "Donald Hunter" }, { - "y" : 3, "drilldown" : "E. Choroba", - "name" : "E. Choroba" + "name" : "E. Choroba", + "y" : 3 }, { + "y" : 5, "name" : "Javier Luque", - "drilldown" : "Javier Luque", - "y" : 5 + "drilldown" : "Javier Luque" }, { - "drilldown" : "Jorg Sommrey", "name" : "Jorg Sommrey", + "drilldown" : "Jorg Sommrey", "y" : 2 }, { - "y" : 5, + "drilldown" : "Laurent Rosenfeld", "name" : "Laurent Rosenfeld", - "drilldown" : "Laurent Rosenfeld" + "y" : 5 }, { - "y" : 4, "name" : "Luca Ferrari", - "drilldown" : "Luca Ferrari" + "drilldown" : "Luca Ferrari", + "y" : 4 }, { - "y" : 1, + "name" : "Mark Anderson", "drilldown" : "Mark Anderson", - "name" : "Mark Anderson" + "y" : 1 }, { - "name" : "Markus Holzer", + "y" : 1, "drilldown" : "Markus Holzer", - "y" : 1 + "name" : "Markus Holzer" }, { + "y" : 5, "name" : "Mohammad S Anwar", - "drilldown" : "Mohammad S Anwar", - "y" : 5 + "drilldown" : "Mohammad S Anwar" }, { + "y" : 2, "name" : "Noud Aldenhoven", - "drilldown" : "Noud Aldenhoven", - "y" : 2 + "drilldown" : "Noud Aldenhoven" }, { "y" : 4, @@ -96,14 +79,14 @@ "drilldown" : "Roger Bell_West" }, { - "y" : 2, "name" : "Saif Ahmed", - "drilldown" : "Saif Ahmed" + "drilldown" : "Saif Ahmed", + "y" : 2 }, { - "y" : 4, "drilldown" : "Sangeet Kar", - "name" : "Sangeet Kar" + "name" : "Sangeet Kar", + "y" : 4 }, { "drilldown" : "Shahed Nooshmand", @@ -116,9 +99,9 @@ "y" : 2 }, { - "y" : 3, + "drilldown" : "Ulrich Rieke", "name" : "Ulrich Rieke", - "drilldown" : "Ulrich Rieke" + "y" : 3 }, { "drilldown" : "Wanderdoc", @@ -126,20 +109,18 @@ "y" : 2 }, { - "y" : 2, "name" : "Yet Ebreo", - "drilldown" : "Yet Ebreo" + "drilldown" : "Yet Ebreo", + "y" : 2 } ], "name" : "Perl Weekly Challenge - 061" } ], - "xAxis" : { - "type" : "category" - }, "drilldown" : { "series" : [ { + "id" : "Arne Sommer", "name" : "Arne Sommer", "data" : [ [ @@ -150,11 +131,9 @@ "Blog", 1 ] - ], - "id" : "Arne Sommer" + ] }, { - "id" : "Athanasius", "data" : [ [ "Perl", @@ -165,10 +144,28 @@ 2 ] ], - "name" : "Athanasius" + "name" : "Athanasius", + "id" : "Athanasius" + }, + { + "name" : "Colin Crain", + "id" : "Colin Crain", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ] }, { - "id" : "Dave Jacoby", "data" : [ [ "Perl", @@ -179,7 +176,8 @@ 1 ] ], - "name" : "Dave Jacoby" + "name" : "Dave Jacoby", + "id" : "Dave Jacoby" }, { "data" : [ @@ -196,8 +194,8 @@ "name" : "Donald Hunter" }, { - "name" : "E. Choroba", "id" : "E. Choroba", + "name" : "E. Choroba", "data" : [ [ "Perl", @@ -224,21 +222,20 @@ 1 ] ], - "id" : "Javier Luque", - "name" : "Javier Luque" + "name" : "Javier Luque", + "id" : "Javier Luque" }, { - "name" : "Jorg Sommrey", "data" : [ [ "Perl", 2 ] ], - "id" : "Jorg Sommrey" + "id" : "Jorg Sommrey", + "name" : "Jorg Sommrey" }, { - "name" : "Laurent Rosenfeld", "data" : [ [ "Perl", @@ -253,11 +250,10 @@ 1 ] ], + "name" : "Laurent Rosenfeld", "id" : "Laurent Rosenfeld" }, { - "name" : "Luca Ferrari", - "id" : "Luca Ferrari", "data" : [ [ "Raku", @@ -267,7 +263,9 @@ "Blog", 2 ] - ] + ], + "id" : "Luca Ferrari", + "name" : "Luca Ferrari" }, { "data" : [ @@ -276,22 +274,22 @@ 1 ] ], - "id" : "Mark Anderson", - "name" : "Mark Anderson" + "name" : "Mark Anderson", + "id" : "Mark Anderson" }, { + "name" : "Markus Holzer", + "id" : "Markus Holzer", "data" : [ [ "Raku", 1 ] - ], - "id" : "Markus Holzer", - "name" : "Markus Holzer" + ] }, { - "name" : "Mohammad S Anwar", "id" : "Mohammad S Anwar", + "name" : "Mohammad S Anwar", "data" : [ [ "Perl", @@ -309,16 +307,17 @@ }, { "name" : "Noud Aldenhoven", + "id" : "Noud Aldenhoven", "data" : [ [ "Raku", 2 ] - ], - "id" : "Noud Aldenhoven" + ] }, { "id" : "Roger Bell_West", + "name" : "Roger Bell_West", "data" : [ [ "Perl", @@ -332,8 +331,7 @@ "Blog", 1 ] - ], - "name" : "Roger Bell_West" + ] }, { "data" : [ @@ -342,10 +340,12 @@ 2 ] ], - "id" : "Saif Ahmed", - "name" : "Saif Ahmed" + "name" : "Saif Ahmed", + "id" : "Saif Ahmed" }, { + "name" : "Sangeet Kar", + "id" : "Sangeet Kar", "data" : [ [ "Perl", @@ -355,11 +355,10 @@ "Raku", 2 ] - ], - "id" : "Sangeet Kar", - "name" : "Sangeet Kar" + ] }, { + "name" : "Shahed Nooshmand", "id" : "Shahed Nooshmand", "data" : [ [ @@ -370,8 +369,7 @@ "Blog", 1 ] - ], - "name" : "Shahed Nooshmand" + ] }, { "data" : [ @@ -385,6 +383,7 @@ }, { "id" : "Ulrich Rieke", + "name" : "Ulrich Rieke", "data" : [ [ "Perl", @@ -394,31 +393,47 @@ "Raku", 2 ] - ], - "name" : "Ulrich Rieke" + ] }, { + "name" : "Wanderdoc", "id" : "Wanderdoc", "data" : [ [ "Perl", 2 ] - ], - "name" : "Wanderdoc" + ] }, { - "name" : "Yet Ebreo", "data" : [ [ "Perl", 2 ] ], - "id" : "Yet Ebreo" + "id" : "Yet Ebreo", + "name" : "Yet Ebreo" } ] }, + "title" : { + "text" : "Perl Weekly Challenge - 061" + }, + "subtitle" : { + "text" : "[Champions: 22] Last updated at 2020-05-24 10:49:34 GMT" + }, + "chart" : { + "type" : "column" + }, + "xAxis" : { + "type" : "category" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, "plotOptions" : { "series" : { "borderWidth" : 0, @@ -427,5 +442,13 @@ "enabled" : 1 } } + }, + "tooltip" : { + "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", + "followPointer" : 1, + "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 3f0c80e29f..0b7240cb45 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,63 +1,63 @@ { + "subtitle" : { + "text" : "Last updated at 2020-05-24 10:49:34 GMT" + }, + "title" : { + "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" + }, + "chart" : { + "type" : "column" + }, "yAxis" : { "title" : { "text" : null }, "min" : 0 }, - "subtitle" : { - "text" : "Last updated at 2020-05-24 10:13:19 GMT" + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" + }, + "xAxis" : { + "labels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + } + }, + "type" : "category" }, "legend" : { "enabled" : "false" }, - "title" : { - "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" - }, - "chart" : { - "type" : "column" - }, "series" : [ { - "name" : "Contributions", "data" : [ [ "Blog", - 703 + 704 ], [ "Perl", - 2565 + 2567 ], [ "Raku", - 1622 + 1624 ] ], "dataLabels" : { + "rotation" : -90, + "format" : "{point.y:.0f}", "align" : "right", + "y" : 10, + "color" : "#FFFFFF", + "enabled" : "true", "style" : { "fontFamily" : "Verdana, sans-serif", "fontSize" : "13px" - }, - "y" : 10, - "rotation" : -90, - "enabled" : "true", - "format" : "{point.y:.0f}", - "color" : "#FFFFFF" - } + } + }, + "name" : "Contributions" } - ], - "xAxis" : { - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - } - }, - "type" : "category" - }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" - } + ] } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 9a4fc749ca..be2647bc86 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,35 +1,9 @@ { - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "legend" : { - "enabled" : "false" - }, - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2020-05-24 10:13:19 GMT" - }, - "title" : { - "text" : "Perl Weekly Challenge Language" - }, - "chart" : { - "type" : "column" - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } - } - }, "drilldown" : { "series" : [ { - "name" : "001", "id" : "001", + "name" : "001", "data" : [ [ "Perl", @@ -46,7 +20,6 @@ ] }, { - "id" : "002", "data" : [ [ "Perl", @@ -61,9 +34,12 @@ 10 ] ], - "name" : "002" + "name" : "002", + "id" : "002" }, { + "id" : "003", + "name" : "003", "data" : [ [ "Perl", @@ -77,12 +53,9 @@ "Blog", 9 ] - ], - "id" : "003", - "name" : "003" + ] }, { - "name" : "004", "data" : [ [ "Perl", @@ -97,9 +70,12 @@ 10 ] ], - "id" : "004" + "id" : "004", + "name" : "004" }, { + "name" : "005", + "id" : "005", "data" : [ [ "Perl", @@ -113,9 +89,7 @@ "Blog", 12 ] - ], - "id" : "005", - "name" : "005" + ] }, { "name" : "006", @@ -168,10 +142,12 @@ 12 ] ], - "id" : "008", - "name" : "008" + "name" : "008", + "id" : "008" }, { + "id" : "009", + "name" : "009", "data" : [ [ "Perl", @@ -185,12 +161,9 @@ "Blog", 13 ] - ], - "id" : "009", - "name" : "009" + ] }, { - "id" : "010", "data" : [ [ "Perl", @@ -205,10 +178,10 @@ 11 ] ], - "name" : "010" + "name" : "010", + "id" : "010" }, { - "id" : "011", "data" : [ [ "Perl", @@ -223,11 +196,12 @@ 10 ] ], - "name" : "011" + "name" : "011", + "id" : "011" }, { - "name" : "012", "id" : "012", + "name" : "012", "data" : [ [ "Perl", @@ -244,8 +218,6 @@ ] }, { - "name" : "013", - "id" : "013", "data" : [ [ "Perl", @@ -259,9 +231,13 @@ "Blog", 13 ] - ] + ], + "name" : "013", + "id" : "013" }, { + "name" : "014", + "id" : "014", "data" : [ [ "Perl", @@ -275,11 +251,10 @@ "Blog", 15 ] - ], - "id" : "014", - "name" : "014" + ] }, { + "id" : "015", "name" : "0 |
