diff options
| -rw-r--r-- | challenge-121/pete-houston/awk/ch-1.awk | 17 | ||||
| -rw-r--r-- | challenge-121/pete-houston/lua/ch-1.lua | 19 | ||||
| -rw-r--r-- | challenge-121/pete-houston/perl/ch-1.pl | 22 | ||||
| -rw-r--r-- | challenge-121/pete-houston/perl/ch-2.pl | 139 | ||||
| -rw-r--r-- | challenge-121/pete-houston/python/ch-1.py | 18 | ||||
| -rw-r--r-- | stats/pwc-current.json | 405 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 70 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 818 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 678 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 108 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 110 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 112 | ||||
| -rw-r--r-- | stats/pwc-summary-181-210.json | 46 | ||||
| -rw-r--r-- | stats/pwc-summary-211-240.json | 80 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 92 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 44 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 106 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 44 |
18 files changed, 1579 insertions, 1349 deletions
diff --git a/challenge-121/pete-houston/awk/ch-1.awk b/challenge-121/pete-houston/awk/ch-1.awk new file mode 100644 index 0000000000..2ee2d42737 --- /dev/null +++ b/challenge-121/pete-houston/awk/ch-1.awk @@ -0,0 +1,17 @@ +#!/usr/bin/gawk -f
+#===============================================================================
+#
+# FILE: 12101.awk
+#
+# USAGE: ./12101.awk
+#
+# DESCRIPTION: Invert the Nth least significant bit of number M and output.
+#
+# REQUIREMENTS: Tested with gawk 4.1.1
+# NOTES: Input M and N on one line of STDIN
+# AUTHOR: Pete Houston (pete), cpan@openstrike.co.uk
+# ORGANIZATION: Openstrike
+# VERSION: 1.0
+# CREATED: 12/07/21
+#===============================================================================
+$1 == int ($1) && $2 == int ($2) { print xor ($1, 2 ** ($2 - 1)) }
diff --git a/challenge-121/pete-houston/lua/ch-1.lua b/challenge-121/pete-houston/lua/ch-1.lua new file mode 100644 index 0000000000..2d50acc595 --- /dev/null +++ b/challenge-121/pete-houston/lua/ch-1.lua @@ -0,0 +1,19 @@ +#!/usr/bin/env lua
+--[[
+#===============================================================================
+#
+# FILE: 12101.lua
+#
+# USAGE: ./12101.lua M N
+#
+# DESCRIPTION: Invert the Nth least significant bit of number M and output.
+#
+# NOTES: No input validation - GIGO.
+# AUTHOR: Pete Houston (pete), cpan@openstrike.co.uk
+# ORGANIZATION: Openstrike
+# VERSION: 1.0
+# CREATED: 12/07/21
+#===============================================================================
+]]
+
+print (arg[1] ~ 2 ^ (arg[2] - 1));
diff --git a/challenge-121/pete-houston/perl/ch-1.pl b/challenge-121/pete-houston/perl/ch-1.pl new file mode 100644 index 0000000000..75fcc4c286 --- /dev/null +++ b/challenge-121/pete-houston/perl/ch-1.pl @@ -0,0 +1,22 @@ +#!/usr/bin/env perl +#=============================================================================== +# +# FILE: 12101.pl +# +# USAGE: ./12101.pl M N +# +# DESCRIPTION: Invert the Nth least significant bit of number M and output. +# +# REQUIREMENTS: Perl 5.10.0 for 'say' +# NOTES: No input validation - GIGO. +# AUTHOR: Pete Houston (pete), cpan@openstrike.co.uk +# ORGANIZATION: Openstrike +# VERSION: 1.0 +# CREATED: 12/07/21 +#=============================================================================== + +use strict; +use warnings; +use feature 'say'; + +say $ARGV[0] ^ 2 ** --$ARGV[1]; diff --git a/challenge-121/pete-houston/perl/ch-2.pl b/challenge-121/pete-houston/perl/ch-2.pl new file mode 100644 index 0000000000..0c440ade1e --- /dev/null +++ b/challenge-121/pete-houston/perl/ch-2.pl @@ -0,0 +1,139 @@ +#!/usr/bin/env perl +#=============================================================================== +# +# FILE: 12102.pl +# +# USAGE: ./12102.pl [ num_cities ] +# +# DESCRIPTION: Travelling Salesman Problem +# Outputs a naive (fast) solution which is good but will +# not necessarily produce the shortest route. +# Also outputs a brute-force (slow) solution which does +# produce the shortest route. +# +# OPTIONS: Specify num_cities for an additional random network of +# that many nodes. +# REQUIREMENTS: Time::HiRes, Math::Combinatorics +# NOTES: Takes 40s to run brute force with num_cities = 11. +# AUTHOR: Pete Houston (pete), cpan@openstrike.co.uk +# ORGANIZATION: Openstrike +# VERSION: 1.0 +# CREATED: 12/07/21 +#=============================================================================== + +use strict; +use warnings; +use Time::HiRes qw/gettimeofday tv_interval/; +use Math::Combinatorics; + +my @distances = ( + [0, 5, 2, 7], + [5, 0, 5, 3], + [3, 1, 0, 6], + [4, 5, 4, 0] +); + +my ($len, $route, $timing) = naive (@distances); +print "Naive solver on sample cities\nDistance: $len, Route: $route\nCompute time: ${timing}s\n\n"; + +($len, $route, $timing) = brute_force (@distances); +print "Brute force solver on sample cities\nDistance: $len, Route: $route\nCompute time: ${timing}s\n\n"; + +my $nc = shift or exit; +print "\nAnd now a set of $nc cities with random distances:\n"; +@distances = (); +chop (my $fmt = '%2i ' x $nc); +for (1 .. $nc) { + my @row; + push @row, int rand 50 for 1 .. $nc; + $row[$_ - 1] = 0; + printf " [$fmt]\n", @row; + push @distances, \@row; +} + +($len, $route, $timing) = naive (@distances); +print "Naive solver for $nc cities\nDistance: $len, Route: $route\nCompute time: ${timing}s\n\n"; + +($len, $route, $timing) = brute_force (@distances); +print "Brute force solver for $nc cities\nDistance: $len, Route: $route\nCompute time: ${timing}s\n"; + +sub naive { + # Naive solver, takes the shortest step each time to a place we have + # not been + my $starttime = [gettimeofday]; + my @d = @_; + + # Start does not matter, so pick 0 + my @route = 0; + my %targets; + @targets{(1 .. $#d)} = (1) x $#d; + my $dist = 0; + + while (keys %targets) { + my (@fore, @aft); + for (0 .. $#d) { + next unless $targets{$_}; + push @fore, [$_, $d[$route[-1]]->[$_]] unless $_ == $route[-1]; + push @aft, [$_, $d[$_]->[$route[0]]] unless $_ == $route[0]; + } + if ($#fore < 1) { + if ($fore[0][0] < $aft[0][0]) { + $dist += $fore[0][1]; + push @route, $fore[0][0] + } else { + $dist += $aft[0][1]; + unshift @route, $aft[0][0] + } + last; + } + # Sort them by ascending distance + @fore = sort { $a->[1] <=> $b->[1] } @fore; + @aft = sort { $a->[1] <=> $b->[1] } @aft; + my $fgo = my $ago = 0; + # If both nearest are the same, look at the next + if ($fore[0][0] == $aft[0][0]) { + if ($fore[1][1] - $fore[0][0] < $aft[1][1] - $aft[0][0]) { + $fgo = 1; + } else { + $ago = 1; + } + } + + push @route, $fore[$fgo][0]; + unshift @route, $aft[$ago][0]; + $dist += $fore[$fgo][1] + $aft[$ago][1]; + delete @targets{$fore[$fgo][0], $aft[$ago][0]}; + } + + # Complete the circuit + if ($route[0] != $route [-1]) { + $dist += $d[$route[-1]][$route[0]]; + push @route, $route[0]; + } + + return ($dist, join (', ', @route), tv_interval ($starttime)); +} + +sub brute_force { + my $starttime = [gettimeofday]; + my @d = @_; + + # Always go 0 to 0, just change around the intermediate steps. This + # makes it O((n-1)!) which is not going to scale well. + my $combo = Math::Combinatorics->new (count => $#d, data => [1 .. $#d]); + my @route; + my $len; + + while (my @perm = $combo->next_permutation) { + my $dist = $d[0][$perm[0]]; + for my $i (0 .. $#perm - 1) { + $dist += $d[$perm[$i]][$perm[$i+1]]; + } + $dist += $d[$perm[-1]][0]; + if (!defined ($len) || $dist < $len) { + @route = (0, @perm, 0); + $len = $dist; + } + } + return ($len, join (', ', @route), tv_interval ($starttime)); +} diff --git a/challenge-121/pete-houston/python/ch-1.py b/challenge-121/pete-houston/python/ch-1.py new file mode 100644 index 0000000000..765d4f26fe --- /dev/null +++ b/challenge-121/pete-houston/python/ch-1.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python
+#===============================================================================
+#
+# FILE: 12101.py
+#
+# USAGE: ./12101.py M N
+#
+# DESCRIPTION: Invert the Nth least significant bit of number M and output.
+#
+# NOTES: No input validation - GIGO.
+# AUTHOR: Pete Houston (pete), cpan@openstrike.co.uk
+# ORGANIZATION: Openstrike
+# VERSION: 1.0
+# CREATED: 17/07/21
+#===============================================================================
+
+import sys
+print (int(sys.argv[1]) ^ 2 ** (int(sys.argv[2]) - 1))
diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 1f89149d32..b65d2ee97d 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,13 +1,174 @@ { + "legend" : { + "enabled" : 0 + }, + "series" : [ + { + "data" : [ + { + "name" : "Athanasius", + "y" : 2, + "drilldown" : "Athanasius" + }, + { + "name" : "Cheok-Yin Fung", + "y" : 1, + "drilldown" : "Cheok-Yin Fung" + }, + { + "name" : "Cristina Heredia", + "drilldown" : "Cristina Heredia", + "y" : 1 + }, + { + "y" : 3, + "drilldown" : "Dave Jacoby", + "name" : "Dave Jacoby" + }, + { + "y" : 2, + "drilldown" : "E. Choroba", + "name" : "E. Choroba" + }, + { + "y" : 6, + "drilldown" : "Flavio Poletti", + "name" : "Flavio Poletti" + }, + { + "name" : "James Smith", + "drilldown" : "James Smith", + "y" : 3 + }, + { + "y" : 2, + "drilldown" : "Jan Krnavek", + "name" : "Jan Krnavek" + }, + { + "y" : 1, + "drilldown" : "jdos22", + "name" : "jdos22" + }, + { + "y" : 2, + "drilldown" : "Jorg Sommrey", + "name" : "Jorg Sommrey" + }, + { + "y" : 2, + "drilldown" : "Lance Wicks", + "name" : "Lance Wicks" + }, + { + "y" : 3, + "drilldown" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld" + }, + { + "y" : 1, + "drilldown" : "Lubos Kolouch", + "name" : "Lubos Kolouch" + }, + { + "y" : 4, + "drilldown" : "Luca Ferrari", + "name" : "Luca Ferrari" + }, + { + "drilldown" : "Lucas Ransan", + "y" : 2, + "name" : "Lucas Ransan" + }, + { + "drilldown" : "Mark Anderson", + "y" : 2, + "name" : "Mark Anderson" + }, + { + "name" : "Mohammad S Anwar", + "drilldown" : "Mohammad S Anwar", + "y" : 1 + }, + { + "name" : "Niels van Dijke", + "drilldown" : "Niels van Dijke", + "y" : 2 + }, + { + "drilldown" : "Paulo Custodio", + "y" : 2, + "name" : "Paulo Custodio" + }, + { + "name" : "Pete Houston", + "y" : 2, + "drilldown" : "Pete Houston" + }, + { + "y" : 4, + "drilldown" : "Roger Bell_West", + "name" : "Roger Bell_West" + }, + { + "y" : 1, + "drilldown" : "Simon Proctor", + "name" : "Simon Proctor" + }, + { + "name" : "Stuart Little", + "drilldown" : "Stuart Little", + "y" : 4 + }, + { + "name" : "Ulrich Rieke", + "y" : 2, + "drilldown" : "Ulrich Rieke" + }, + { + "y" : 3, + "drilldown" : "W. Luis Mochan", + "name" : "W. Luis Mochan" + } + ], + "colorByPoint" : 1, + "name" : "The Weekly Challenge - 121" + } + ], + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + } + } + }, + "subtitle" : { + "text" : "[Champions: 25] Last updated at 2021-07-18 13:11:32 GMT" + }, + "chart" : { + "type" : "column" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "title" : { + "text" : "The Weekly Challenge - 121" + }, + "xAxis" : { + "type" : "category" + }, "tooltip" : { + "followPointer" : 1, "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 + "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>" }, "drilldown" : { "series" : [ { - "id" : "Athanasius", "data" : [ [ "Perl", @@ -18,17 +179,18 @@ 1 ] ], + "id" : "Athanasius", "name" : "Athanasius" }, { + "name" : "Cheok-Yin Fung", "data" : [ [ "Perl", 1 ] ], - "id" : "Cheok-Yin Fung", - "name" : "Cheok-Yin Fung" + "id" : "Cheok-Yin Fung" }, { "data" : [ @@ -41,6 +203,7 @@ "name" : "Cristina Heredia" }, { + "id" : "Dave Jacoby", "data" : [ [ "Perl", @@ -51,21 +214,20 @@ 1 ] ], - "id" : "Dave Jacoby", "name" : "Dave Jacoby" }, { - "id" : "E. Choroba", "data" : [ [ "Perl", 2 ] ], + "id" : "E. Choroba", "name" : "E. Choroba" }, { - "name" : "Flavio Poletti", + "id" : "Flavio Poletti", "data" : [ [ "Perl", @@ -80,7 +242,7 @@ 2 ] ], - "id" : "Flavio Poletti" + "name" : "Flavio Poletti" }, { "id" : "James Smith", @@ -97,34 +259,34 @@ "name" : "James Smith" }, { - "name" : "Jan Krnavek", - "id" : "Jan Krnavek", "data" : [ [ "Raku", 2 ] - ] + ], + "id" : "Jan Krnavek", + "name" : "Jan Krnavek" }, { - "id" : "jdos22", + "name" : "jdos22", "data" : [ [ "Perl", 1 ] ], - "name" : "jdos22" + "id" : "jdos22" }, { + "name" : "Jorg Sommrey", "id" : "Jorg Sommrey", "data" : [ [ "Perl", 2 ] - ], - "name" : "Jorg Sommrey" + ] }, { "name" : "Lance Wicks", @@ -138,6 +300,7 @@ }, { "name" : "Laurent Rosenfeld", + "id" : "Laurent Rosenfeld", "data" : [ [ "Perl", @@ -151,22 +314,20 @@ "Blog", 1 ] - ], - "id" : "Laurent Rosenfeld" + ] }, { - "id" : "Lubos Kolouch", + "name" : "Lubos Kolouch", "data" : [ [ "Perl", 1 ] ], - "name" : "Lubos Kolouch" + "id" : "Lubos Kolouch" }, { "name" : "Luca Ferrari", - "id" : "Luca Ferrari", "data" : [ [ "Raku", @@ -176,27 +337,28 @@ "Blog", 2 ] - ] + ], + "id" : "Luca Ferrari" }, { + "name" : "Lucas Ransan", + "id" : "Lucas Ransan", "data" : [ [ "Raku", 2 ] - ], - "id" : "Lucas Ransan", - "name" : "Lucas Ransan" + ] }, { "name" : "Mark Anderson", + "id" : "Mark Anderson", "data" : [ [ "Raku", 2 ] - ], - "id" : "Mark Anderson" + ] }, { "name" : "Mohammad S Anwar", @@ -209,24 +371,34 @@ ] }, { - "name" : "Niels van Dijke", + "id" : "Niels van Dijke", "data" : [ [ "Perl", 2 ] ], - "id" : "Niels van Dijke" + "name" : "Niels van Dijke" }, { - "id" : "Paulo Custodio", + "name" : "Paulo Custodio", "data" : [ [ "Perl", 2 ] ], - "name" : "Paulo Custodio" + "id" : "Paulo Custodio" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Pete Houston", + "name" : "Pete Houston" }, { "data" : [ @@ -247,16 +419,18 @@ "name" : "Roger Bell_West" }, { + "id" : "Simon Proctor", "data" : [ [ "Raku", 1 ] ], - "id" : "Simon Proctor", "name" : "Simon Proctor" }, { + "name" : "Stuart Little", + "id" : "Stuart Little", "data" : [ [ "Perl", @@ -266,19 +440,17 @@ "Raku", 2 ] - ], - "id" : "Stuart Little", - "name" : "Stuart Little" + ] }, { + "name" : "Ulrich Rieke", + "id" : "Ulrich Rieke", "data" : [ [ "Perl", 2 ] - ], - "id" : "Ulrich Rieke", - "name" : "Ulrich Rieke" + ] }, { "data" : [ @@ -295,162 +467,5 @@ "name" : "W. Luis Mochan" } ] - }, - "legend" : { - "enabled" : 0 - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - }, - "borderWidth" : 0 - } - }, - "series" : [ - { - "colorByPoint" : 1, - "name" : "The Weekly Challenge - 121", - "data" : [ - { - "y" : 2, - "name" : "Athanasius", - "drilldown" : "Athanasius" - }, - { - "name" : "Cheok-Yin Fung", - "drilldown" : "Cheok-Yin Fung", - "y" : 1 - }, - { - "y" : 1, - "name" : "Cristina Heredia", - "drilldown" : "Cristina Heredia" - }, - { - "drilldown" : "Dave Jacoby", - "name" : "Dave Jacoby", - "y" : 3 - }, - { - "name" : "E. Choroba", - "drilldown" : "E. Choroba", - "y" : 2 - }, - { - "y" : 6, - "drilldown" : "Flavio Poletti", - "name" : "Flavio Poletti" - }, - { - "y" : 3, - "name" : "James Smith", - "drilldown" : "James Smith" - }, - { - "y" : 2, - "drilldown" : "Jan Krnavek", - "name" : "Jan Krnavek" - }, - { - "name" : "jdos22", - "drilldown" : "jdos22", - "y" : 1 - }, - { - "y" : 2, - "name" : "Jorg Sommrey", - "drilldown" : "Jorg Sommrey" - }, - { - "y" : 2, - "drilldown" : "Lance Wicks", - "name" : "Lance Wicks" - }, - { - "name" : "Laurent Rosenfeld", - "drilldown" : "Laurent Rosenfeld", - "y" : 3 - }, - { - "name" : "Lubos Kolouch", - "drilldown" : "Lubos Kolouch", - "y" : 1 - }, - { - "y" : 4, - "name" : "Luca Ferrari", - "drilldown" : "Luca Ferrari" - }, - { - "y" : 2, - "drilldown" : "Lucas Ransan", - "name" : "Lucas Ransan" - }, - { - "name" : "Mark Anderson", - "drilldown" : "Mark Anderson", - "y" : 2 - }, - { - "drilldown" : "Mohammad S Anwar", - "name" : "Mohammad S Anwar", - "y" : 1 - }, - { - "drilldown" : "Niels van Dijke", - "name" : "Niels van Dijke", - "y" : 2 - }, - { - "y" : 2, - "name" : "Paulo Custodio", - "drilldown" : "Paulo Custodio" - }, - { - "y" : 4, - "drilldown" : "Roger Bell_West", - "name" : "Roger Bell_West" - }, - { - "y" : 1, - "name" : "Simon Proctor", - "drilldown" : "Simon Proctor" - }, - { - "y" : 4, - "name" : "Stuart Little", - "drilldown" : "Stuart Little" - }, - { - "name" : "Ulrich Rieke", - "drilldown" : "Ulrich Rieke", - "y" : 2 - }, - { - "name" : "W. Luis Mochan", - "drilldown" : "W. Luis Mochan", - "y" : 3 - } - ] - } - ], - "title" : { - "text" : "The Weekly Challenge - 121" - }, - "xAxis" : { - "type" : "category" - }, - "subtitle" : { - "text" : "[Champions: 24] Last updated at 2021-07-18 12:20:22 GMT" - }, - "chart" : { - "type" : "column" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 900fa2fb24..0b84690a41 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,44 +1,18 @@ { - "chart" : { - "type" : "column" - }, - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 - }, - "legend" : { - "enabled" : "false" - }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" - }, - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - } - } - }, - "subtitle" : { - "text" : "Last updated at 2021-07-18 12:20:22 GMT" - }, "series" : [ { + "name" : "Contributions", "dataLabels" : { - "y" : 10, - "format" : "{point.y:.0f}", - "rotation" : -90, + "color" : "#FFFFFF", "style" : { "fontFamily" : "Verdana, sans-serif", "fontSize" : "13px" }, - "color" : "#FFFFFF", + "format" : "{point.y:.0f}", + "enabled" : "true", "align" : "right", - "enabled" : "true" + "y" : 10, + "rotation" : -90 }, "data" : [ [ @@ -47,17 +21,43 @@ ], [ "Perl", - 5779 + 5781 ], [ "Raku", 3618 ] - ], - "name" : "Contributions" + ] } ], + "legend" : { + "enabled" : "false" + }, + "subtitle" : { + "text" : "Last updated at 2021-07-18 13:11:32 GMT" + }, + "chart" : { + "type" : "column" + }, + "yAxis" : { + "min" : 0, + "title" : { + "text" : null + } + }, "title" : { "text" : "The Weekly Challenge Contributions [2019 - 2021]" + }, + "xAxis" : { + "labels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + } + }, + "type" : "category" + }, + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index f6e5db90d7..6fe56814a2 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,15 +1,4 @@ { - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "chart" : { - "type" : "column" - }, - "legend" : { - "enabled" : "false" - }, "drilldown" : { "series" : [ { @@ -31,7 +20,7 @@ "name" : "001" }, { - "name" : "002", + "id" : "002", "data" : [ [ "Perl", @@ -46,10 +35,9 @@ 10 ] ], - "id" : "002" + "name" : "002" }, { - "name" : "003", "data" : [ [ "Perl", @@ -64,7 +52,8 @@ 9 ] ], - "id" : "003" + "id" : "003", + "name" : "003" }, { "name" : "004", @@ -85,7 +74,6 @@ ] }, { - "id" : "005", "data" : [ [ "Perl", @@ -100,6 +88,7 @@ 12 ] ], + "id" : "005", "name" : "005" }, { @@ -139,7 +128,6 @@ "id" : "007" }, { - "name" : "008", "id" : "008", "data" : [ [ @@ -154,7 +142,8 @@ "Blog", 12 ] - ] + ], + "name" : "008" }, { "data" : [ @@ -176,6 +165,7 @@ }, { "name" : "010", + "id" : "010", "data" : [ [ "Perl", @@ -189,11 +179,9 @@ "Blog", 11 ] - ], - "id" : "010" + ] }, { - "name" : "011", "id" : "011", "data" : [ [ @@ -208,10 +196,10 @@ "Blog", 10 ] - ] + ], + "name" : "011" }, { - "name" : "012", "data" : [ [ "Perl", @@ -226,10 +214,12 @@ 11 ] ], - "id" : "012" + "id" : "012", + "name" : "012" }, { "name" : "013", + "id" : "013", |
