diff options
| -rw-r--r-- | challenge-021/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-021/arne-sommer/perl6/ch-1.p6 | 20 | ||||
| -rwxr-xr-x | challenge-021/arne-sommer/perl6/ch-2.p6 | 109 | ||||
| -rwxr-xr-x | challenge-021/arne-sommer/perl6/finding-e-fatrat | 22 | ||||
| -rwxr-xr-x | challenge-021/arne-sommer/perl6/finding-e-fatrat-test | 55 | ||||
| -rwxr-xr-x | challenge-021/arne-sommer/perl6/finding-e-fatrat-test-cached | 67 | ||||
| -rwxr-xr-x | challenge-021/arne-sommer/perl6/finding-e-fixed | 20 | ||||
| -rwxr-xr-x | challenge-021/arne-sommer/perl6/finding-e-verbose | 22 | ||||
| -rw-r--r-- | stats/pwc-current.json | 323 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 64 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 192 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 832 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 38 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 36 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 106 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 48 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 270 |
17 files changed, 1280 insertions, 945 deletions
diff --git a/challenge-021/arne-sommer/blog.txt b/challenge-021/arne-sommer/blog.txt new file mode 100644 index 0000000000..af82960451 --- /dev/null +++ b/challenge-021/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://perl6.eu/eulers-url.html diff --git a/challenge-021/arne-sommer/perl6/ch-1.p6 b/challenge-021/arne-sommer/perl6/ch-1.p6 new file mode 100755 index 0000000000..d741dba7ee --- /dev/null +++ b/challenge-021/arne-sommer/perl6/ch-1.p6 @@ -0,0 +1,20 @@ +#! /usr/bin/env perl6 + +my $e-seq := gather +{ + take 1; + + my $current = 1; + + for 1 .. Inf + { + $current /= $_; + take $current; + } +} + +sub MAIN (:$steps = 10) +{ + say $e-seq[^$steps].sum; +} + diff --git a/challenge-021/arne-sommer/perl6/ch-2.p6 b/challenge-021/arne-sommer/perl6/ch-2.p6 new file mode 100755 index 0000000000..da361df95d --- /dev/null +++ b/challenge-021/arne-sommer/perl6/ch-2.p6 @@ -0,0 +1,109 @@ +#! /usr/bin/env perl6 + +grammar URL +{ + regex TOP { <SchemeW> <Hostinfo>? <Path>? <QueryW>? <FragmentW>? } + regex SchemeW { <Scheme> <SchemeS> } + regex SchemeS { ':' } + regex Scheme { <[a..z A..Z]><[a..z A..Z 0..9 + . : \-]>* } + regex Hostinfo { '//' <UserinfoW>? <Host> <PortW>? } + regex UserinfoW { <Userinfo> <UserinfoS> } + regex Userinfo { .*[\:.+]? } + regex UserinfoS { '@' } + regex Host { <[\w \. \-]>* } + regex PortW { <PortS> <Port> } + regex PortS { ':' } + regex Port { \d+ } + regex Path { '/'? <[\w \d / % \. - ] - [#?]>+ } + regex QueryW { <QueryS> <Query> } + regex QueryS { '?' } + regex Query { <[\w \d \- =]>* } + regex FragmentW { <FragmentS> <Fragment> } + regex FragmentS { '#' } + regex Fragment { .+ } +} + +sub MAIN ($url, :$verbose) +{ + my %ports = ( ftp => 20, http => 80, https => 443 ); + my Set $unreserved = ("41" ... "49", "4A" ... "4F", "50" ... "59", "5A", "30" ... "39", "2D", "2E", "5F", "7E").flat.Set; + + my %translate; %translate{'%' ~ $_} = chr( $_.parse-base(16) ) for $unreserved.keys; + + my $result = URL.parse($url); + + if $result + { + say $result, "\n" if $verbose; + + my $scheme = $result<SchemeW><Scheme>.lc; + my $new = $scheme ~ ":"; + say "scheme: $result<SchemeW><Scheme> -> $scheme" if $verbose; + + my $userinfo = ""; if $result<Hostinfo><UserinfoW><Userinfo> + { + $userinfo = $result<Hostinfo><UserinfoW><Userinfo>; + $new ~= $userinfo ~ '@'; + say "userinfo: $userinfo" if $verbose; + } + + my $host = ""; if $result<Hostinfo><Host> + { + $host = $result<Hostinfo><Host>.lc; + $new ~= "//$host" if $host; + say "host: $result<Hostinfo><Host> -> $host" if $verbose; + } + + my $port = ""; if $result<Hostinfo><PortW><Port> + { + $port = $result<Hostinfo><PortW><Port> unless %ports{$scheme} == $result<Hostinfo><PortW><Port>; + $new ~= ":$port" if $port; + say "port: $result<Hostinfo><PortW><Port> -> $port" if $verbose; + } + + my $path = ""; if $result<Path> + { + $path = $result<Path>; + my $new-path = $path; + + if $path ~~ /\%/ + { + $new-path .= subst(/\%../, *.uc, :g); + + for %translate.keys -> $key + { + if $new-path ~~ /$key/ + { + say " (path translate $key -> %translate{$key})" if $verbose; + $new-path .= subst($key, %translate{$key}, :g); + } + } + } + $new ~= $new-path; + say "path: $path -> $new-path" if $verbose; + } + + my $query; if $result<QueryW><Query> + { + $query = $result<QueryW><Query>; + $new ~= "?$query"; + say "query: $query" if $verbose; + } + + my $fragment = ""; if $result<FragmentW><Fragment> + { + $fragment = $result<FragmentW><Fragment>; + $new ~= "#$fragment"; + say "fragment: $fragment" if $verbose; + } + + print "\n" if $verbose; + + say "Original: $url"; + say "New: $new"; + } + else + { + say "Invalid URL."; + } +} diff --git a/challenge-021/arne-sommer/perl6/finding-e-fatrat b/challenge-021/arne-sommer/perl6/finding-e-fatrat new file mode 100755 index 0000000000..cbc9b9b6be --- /dev/null +++ b/challenge-021/arne-sommer/perl6/finding-e-fatrat @@ -0,0 +1,22 @@ +#! /usr/bin/env perl6 + +my $e-seq := gather +{ + take 1; + + my FatRat $current = 1.FatRat; + + for 1 .. Inf + { + $current /= $_; + take $current; + } +} + +sub MAIN (:$steps = 10, :$verbose) +{ + $verbose && say "{$_ + 1}: { $e-seq[$_].perl }" for ^$steps; + + say $e-seq[^$steps].sum; +} + diff --git a/challenge-021/arne-sommer/perl6/finding-e-fatrat-test b/challenge-021/arne-sommer/perl6/finding-e-fatrat-test new file mode 100755 index 0000000000..2a4cd7d413 --- /dev/null +++ b/challenge-021/arne-sommer/perl6/finding-e-fatrat-test @@ -0,0 +1,55 @@ +#! /usr/bin/env perl6 + +my $e-seq := gather +{ + take 1; + + my FatRat $current = 1.FatRat; + + for 1 .. Inf + { + $current /= $_; + take $current; + } +} + +sub MAIN (:$steps = 10, :$verbose, :$test) +{ + $verbose && say "{$_ + 1}: { $e-seq[$_].perl }" for ^$steps; + + my $value = $e-seq[^$steps].sum; + + if $test + { + my $long = get-euler-from-web; + + print "Answer: "; + for ^$value.chars -> $pos + { + $value.substr($pos, 1) eq $long.substr($pos, 1) + ?? print $value.substr($pos, 1) + !! print "\x1b[41m" ~ $value.substr($pos, 1) ~ "\x1b[0m"; + } + print "\n"; + say "Correct: " ~ $long.substr(0, $value.chars + 2) ~ "..."; + + } + else + { + say $e-seq[^$steps].sum; + } +} + +sub get-euler-from-web +{ + use LWP::Simple; + + my $e-string = ""; + + for LWP::Simple.get('http://www-history.mcs.st-and.ac.uk/HistTopics/e_10000.html').lines -> $line + { + $e-string ~= $line.trim unless $line ~~ /<[a .. z A .. Z]>/; # Skip lines with html tags + } + + return $e-string; +} diff --git a/challenge-021/arne-sommer/perl6/finding-e-fatrat-test-cached b/challenge-021/arne-sommer/perl6/finding-e-fatrat-test-cached new file mode 100755 index 0000000000..2d66fde1c7 --- /dev/null +++ b/challenge-021/arne-sommer/perl6/finding-e-fatrat-test-cached @@ -0,0 +1,67 @@ +#! /usr/bin/env perl6 + +my $e-seq := gather +{ + take 1; + + my FatRat $current = 1.FatRat; + + for 1 .. Inf + { + $current /= $_; + take $current; + } +} + +sub MAIN (:$steps = 10, :$verbose, :$test) +{ + $verbose && say "{$_ + 1}: { $e-seq[$_].perl }" for ^$steps; + + my $value = $e-seq[^$steps].sum; + + if $test + { + my $long = get-euler-from-web($test); + + print "Answer: "; + for ^$value.chars -> $pos + { + $value.substr($pos, 1) eq $long.substr($pos, 1) + ?? print $value.substr($pos, 1) + !! print "\x1b[41m" ~ $value.substr($pos, 1) ~ "\x1b[0m"; + } + print "\n"; + say "Correct: " ~ $long.substr(0, $value.chars + 2) ~ "..."; + + } + else + { + say $e-seq[^$steps].sum; + } +} + +sub get-euler-from-web ($test) +{ + use LWP::Simple; + + my $e-string = ""; + + if $test eq "cached" + { + say "Loaded cached e."; + return $*TMPDIR.add('euler_10000.txt').slurp if $*TMPDIR.add('euler_10000.txt').e; + } + + for LWP::Simple.get('http://www-history.mcs.st-and.ac.uk/HistTopics/e_10000.html').lines -> $line + { + $e-string ~= $line.trim unless $line ~~ /<[a .. z A .. Z]>/; # Skip lines with html tags + } + + if $test eq "cached" + { + $*TMPDIR.add('euler_10000.txt').spurt: $e-string; + say "Saved cached e."; + } + + return $e-string; +} diff --git a/challenge-021/arne-sommer/perl6/finding-e-fixed b/challenge-021/arne-sommer/perl6/finding-e-fixed new file mode 100755 index 0000000000..cdb8111819 --- /dev/null +++ b/challenge-021/arne-sommer/perl6/finding-e-fixed @@ -0,0 +1,20 @@ +#! /usr/bin/env perl6 + +my $e-seq := gather +{ + take 1; + + my FatRat $current = 1.FatRat; + + for 1 .. Inf + { + $current /= $_; + take $current; + } +} + +sub MAIN (:$steps = 10) +{ + say $e-seq[^$steps].sum; +} + diff --git a/challenge-021/arne-sommer/perl6/finding-e-verbose b/challenge-021/arne-sommer/perl6/finding-e-verbose new file mode 100755 index 0000000000..ae3a45b530 --- /dev/null +++ b/challenge-021/arne-sommer/perl6/finding-e-verbose @@ -0,0 +1,22 @@ +#! /usr/bin/env perl6 + +my $e-seq := gather +{ + take 1; + + my $current = 1; + + for 1 .. Inf + { + $current /= $_; + take $current; + } +} + +sub MAIN (:$steps = 10, :$verbose) +{ + $verbose && say "{ $_ + 1 }: { $e-seq[$_].perl }" for ^$steps; + + say $e-seq[^$steps].sum; +} + diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 62854d8341..1338178c15 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,127 +1,34 @@ { - "title" : { - "text" : "Perl Weekly Challenge - 021" - }, "subtitle" : { - "text" : "[Champions: 19] Last updated at 2019-08-18 16:28:15 GMT" + "text" : "[Champions: 20] Last updated at 2019-08-18 21:25:09 GMT" }, - "series" : [ - { - "name" : "Perl Weekly Challenge - 021", - "data" : [ - { - "drilldown" : "Andrezgz", - "name" : "Andrezgz", - "y" : 2 - }, - { - "drilldown" : "Athanasius", - "name" : "Athanasius", - "y" : 2 - }, - { - "name" : "Daniel Mantovani", - "drilldown" : "Daniel Mantovani", - "y" : 2 - }, - { - "y" : 2, - "name" : "Dave Cross", - "drilldown" : "Dave Cross" - }, - { - "y" : 2, - "name" : "Dave Jacoby", - "drilldown" : "Dave Jacoby" - }, - { - "y" : 2, - "name" : "Duane Powell", - "drilldown" : "Duane Powell" - }, - { - "y" : 2, - "drilldown" : "E. Choroba", - "name" : "E. Choroba" - }, - { - "y" : 2, - "name" : "Guillermo Ramos", - "drilldown" : "Guillermo Ramos" - }, - { - "y" : 2, - "drilldown" : "Joelle Maslak", - "name" : "Joelle Maslak" - }, - { - "y" : 1, - "name" : "Kian-Meng Ang", - "drilldown" : "Kian-Meng Ang" - }, - { - "drilldown" : "Laurent Rosenfeld", - "name" : "Laurent Rosenfeld", - "y" : 5 - }, - { - "y" : 2, - "drilldown" : "Lubos Kolouch", - "name" : "Lubos Kolouch" - }, - { - "y" : 2, - "name" : "Noud", - "drilldown" : "Noud" - }, - { - "drilldown" : "Ozzy", - "name" : "Ozzy", - "y" : 1 - }, - { - "name" : "Randy Lauen", - "drilldown" : "Randy Lauen", - "y" : 4 - }, - { - "name" : "Roger Bell West", - "drilldown" : "Roger Bell West", - "y" : 4 - }, - { - "y" : 4, - "name" : "Ruben Westerberg", - "drilldown" : "Ruben Westerberg" - }, - { - "y" : 1, - "name" : "Simon Proctor", - "drilldown" : "Simon Proctor" - }, - { - "drilldown" : "Steven Wilson", - "name" : "Steven Wilson", - "y" : 1 - } - ], - "colorByPoint" : 1 - } - ], "drilldown" : { "series" : [ { + "id" : "Andrezgz", "name" : "Andrezgz", "data" : [ [ "Perl 5", 2 ] + ] + }, + { + "id" : "Arne Sommer", + "data" : [ + [ + "Perl 6", + 2 + ], + [ + "Blog", + 1 + ] ], - "id" : "Andrezgz" + "name" : "Arne Sommer" }, { - "id" : "Athanasius", "data" : [ [ "Perl 5", @@ -132,21 +39,22 @@ 1 ] ], - "name" : "Athanasius" + "name" : "Athanasius", + "id" : "Athanasius" }, { "name" : "Daniel Mantovani", - "id" : "Daniel Mantovani", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Daniel Mantovani" }, { - "name" : "Dave Cross", "id" : "Dave Cross", + "name" : "Dave Cross", "data" : [ [ "Perl 5", @@ -155,7 +63,6 @@ ] }, { - "name" : "Dave Jacoby", "id" : "Dave Jacoby", "data" : [ [ @@ -166,7 +73,8 @@ "Blog", 1 ] - ] + ], + "name" : "Dave Jacoby" }, { "data" : [ @@ -175,30 +83,31 @@ 2 ] ], - "id" : "Duane Powell", - "name" : "Duane Powell" + "name" : "Duane Powell", + "id" : "Duane Powell" }, { - "name" : "E. Choroba", "id" : "E. Choroba", "data" : [ [ "Perl 5", 2 ] - ] + ], + "name" : "E. Choroba" }, { + "id" : "Guillermo Ramos", + "name" : "Guillermo Ramos", "data" : [ [ "Perl 5", 2 ] - ], - "id" : "Guillermo Ramos", - "name" : "Guillermo Ramos" + ] }, { + "id" : "Joelle Maslak", "name" : "Joelle Maslak", "data" : [ [ @@ -209,21 +118,19 @@ "Perl 6", 1 ] - ], - "id" : "Joelle Maslak" + ] }, { - "id" : "Kian-Meng Ang", + "name" : "Kian-Meng Ang", "data" : [ [ "Perl 5", 1 ] ], - "name" : "Kian-Meng Ang" + "id" : "Kian-Meng Ang" }, { - "id" : "Laurent Rosenfeld", "data" : [ [ "Perl 5", @@ -238,39 +145,41 @@ 1 ] ], - "name" : "Laurent Rosenfeld" + "name" : "Laurent Rosenfeld", + "id" : "Laurent Rosenfeld" }, { - "name" : "Lubos Kolouch", - "id" : "Lubos Kolouch", "data" : [ [ "Perl 5", 2 ] - ] + ], + "name" : "Lubos Kolouch", + "id" : "Lubos Kolouch" }, { "id" : "Noud", + "name" : "Noud", "data" : [ [ "Perl 6", 2 ] - ], - "name" : "Noud" + ] }, { - "name" : "Ozzy", "data" : [ [ "Perl 6", 1 ] ], + "name" : "Ozzy", "id" : "Ozzy" }, { + "id" : "Randy Lauen", "name" : "Randy Lauen", "data" : [ [ @@ -281,12 +190,11 @@ "Perl 6", 2 ] - ], - "id" : "Randy Lauen" + ] }, { - "name" : "Roger Bell West", "id" : "Roger Bell West", + "name" : "Roger Bell West", "data" : [ [ "Perl 5", @@ -304,6 +212,7 @@ }, { "id" : "Ruben Westerberg", + "name" : "Ruben Westerberg", "data" : [ [ "Perl 5", @@ -313,57 +222,167 @@ "Perl 6", 2 ] - ], - "name" : "Ruben Westerberg" + ] }, { - "id" : "Simon Proctor", "data" : [ [ "Perl 6", 1 ] ], - "name" : "Simon Proctor" + "name" : "Simon Proctor", + "id" : "Simon Proctor" }, { - "id" : "Steven Wilson", + "name" : "Steven Wilson", "data" : [ [ "Perl 5", 1 ] ], - "name" : "Steven Wilson" + "id" : "Steven Wilson" } ] }, + "series" : [ + { + "colorByPoint" : 1, + "data" : [ + { + "name" : "Andrezgz", + "y" : 2, + "drilldown" : "Andrezgz" + }, + { + "name" : "Arne Sommer", + "drilldown" : "Arne Sommer", + "y" : 3 + }, + { + "name" : "Athanasius", + "drilldown" : "Athanasius", + "y" : 2 + }, + { + "drilldown" : "Daniel Mantovani", + "y" : 2, + "name" : "Daniel Mantovani" + }, + { + "drilldown" : "Dave Cross", + "y" : 2, + "name" : "Dave Cross" + }, + { + "drilldown" : "Dave Jacoby", + "y" : 2, + "name" : "Dave Jacoby" + }, + { + "drilldown" : "Duane Powell", + "y" : 2, + "name" : "Duane Powell" + }, + { + "name" : "E. Choroba", + "y" : 2, + "drilldown" : "E. Choroba" + }, + { + "drilldown" : "Guillermo Ramos", + "y" : 2, + "name" : "Guillermo Ramos" + }, + { + "y" : 2, + "drilldown" : "Joelle Maslak", + "name" : "Joelle Maslak" + }, + { + "name" : "Kian-Meng Ang", + "drilldown" : "Kian-Meng Ang", + "y" : 1 + }, + { + "drilldown" : "Laurent Rosenfeld", + "y" : 5, + "name" : "Laurent Rosenfeld" + }, + { + "drilldown" : "Lubos Kolouch", + "y" : 2, + "name" : "Lubos Kolouch" + }, + { + "name" : "Noud", + "y" : 2, + "drilldown" : "Noud" + }, + { + "name" : "Ozzy", + "y" : 1, + "drilldown" : "Ozzy" + }, + { + "name" : "Randy Lauen", + "drilldown" : "Randy Lauen", + "y" : 4 + }, + { + "drilldown" : "Roger Bell West", + "y" : 4, + "name" : "Roger Bell West" + }, + { + "name" : "Ruben Westerberg", + "drilldown" : "Ruben Westerberg", + "y" : 4 + }, + { + "name" : "Simon Proctor", + "drilldown" : "Simon Proctor", + "y" : 1 + }, + { + "name" : "Steven Wilson", + "y" : 1, + "drilldown" : "Steven Wilson" + } + ], + "name" : "Perl Weekly Challenge - 021" + } + ], "yAxis" : { "title" : { "text" : "Total Solutions" } }, - "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/>" + "title" : { + "text" : "Perl Weekly Challenge - 021" }, "legend" : { "enabled" : 0 }, "plotOptions" : { "series" : { + "borderWidth" : 0, "dataLabels" : { "format" : "{point.y}", "enabled" : 1 - }, - "borderWidth" : 0 + } } }, + "xAxis" : { + "type" : "category" + }, "chart" : { "type" : "column" + }, + "tooltip" : { + "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 } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 72010f7d14..49c7e06a6a 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,10 +1,26 @@ { + "chart" : { + "type" : "column" + }, "series" : [ { + "dataLabels" : { + "color" : "#FFFFFF", + "align" : "right", + "format" : "{point.y:.0f}", + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + }, + "rotation" : -90, + "enabled" : "true", + "y" : 10 + }, + "name" : "Contributions", "data" : [ [ "Blog", - 196 + 197 ], [ "Perl 5", @@ -12,52 +28,36 @@ ], [ "Perl 6", - 517 + 519 ] - ], - "dataLabels" : { - "format" : "{point.y:.0f}", - "rotation" : -90, - "y" : 10, - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - }, - "color" : "#FFFFFF", - "enabled" : "true", - "align" : "right" - }, - "name" : "Contributions" + ] } ], - "legend" : { - "enabled" : "false" + "title" : { + "text" : "Perl Weekly Challenge Contributions - 2019" + }, + "yAxis" : { + "title" : { + "text" : null + }, + "min" : 0 }, "xAxis" : { "type" : "category", "labels" : { "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" } } }, "tooltip" : { "pointFormat" : "<b>{point.y:.0f}</b>" }, - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 - }, - "chart" : { - "type" : "column" - }, "subtitle" : { - "text" : "Last updated at 2019-08-18 16:28:34 GMT" + "text" : "Last updated at 2019-08-18 21:25:54 GMT" }, - "title" : { - "text" : "Perl Weekly Challenge Contributions - 2019" + "legend" : { + "enabled" : "false" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 57e9a33872..8559b705f1 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,12 +1,7 @@ { - "legend" : { - "enabled" : "false" - }, "drilldown" : { "series" : [ { - "name" : "001", - "id" : "001", "data" : [ [ "Perl 5", @@ -20,9 +15,13 @@ "Blog", 10 ] - ] + ], + "id" : "001", + "name" : "001" }, { + "id" : "002", + "name" : "002", "data" : [ [ "Perl 5", @@ -36,12 +35,9 @@ "Blog", 9 ] - ], - "id" : "002", - "name" : "002" + ] }, { - "name" : "003", "data" : [ [ "Perl 5", @@ -56,10 +52,10 @@ 8 ] ], - "id" : "003" + "id" : "003", + "name" : "003" }, { - "name" : "004", "data" : [ [ "Perl 5", @@ -74,10 +70,10 @@ 9 ] ], + "name" : "004", "id" : "004" }, { - "id" : "005", "data" : [ [ "Perl 5", @@ -92,10 +88,12 @@ 11 ] ], - "name" : "005" + "name" : "005", + "id" : "005" }, { "name" : "006", + "id" : "006", "data" : [ [ "Perl 5", @@ -109,12 +107,9 @@ "Blog", 6 ] - ], - "id" : "006" + ] }, { - "name" : "007", - "id" : "007", "data" : [ [ "Perl 5", @@ -128,11 +123,11 @@ "Blog", 8 ] - ] + ], + "name" : "007", + "id" : "007" }, { - "name" : "008", - "id" : "008", "data" : [ [ "Perl 5", @@ -146,10 +141,13 @@ "Blog", 9 ] - ] + ], + "name" : "008", + "id" : "008" }, { "id" : "009", + "name" : "009", "data" : [ [ "Perl 5", @@ -163,8 +161,7 @@ "Blog", 11 ] - ], |
