diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-11-11 17:25:42 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-11-11 17:25:42 +0000 |
| commit | 7c7aa787fa7c346e63ef41238acc7e923e6c60ee (patch) | |
| tree | 50066d49d2f6a9b34776b8a6f8397cfd3008ee16 | |
| parent | e04b476874865735812bf25a91751474d53769fb (diff) | |
| download | perlweeklychallenge-club-7c7aa787fa7c346e63ef41238acc7e923e6c60ee.tar.gz perlweeklychallenge-club-7c7aa787fa7c346e63ef41238acc7e923e6c60ee.tar.bz2 perlweeklychallenge-club-7c7aa787fa7c346e63ef41238acc7e923e6c60ee.zip | |
- Added solutions by Duane Powell.
| -rwxr-xr-x | challenge-034/duane-powell/perl5/ch-1.pl | 141 | ||||
| -rwxr-xr-x | challenge-034/duane-powell/perl5/ch-2.pl | 141 | ||||
| -rw-r--r-- | stats/pwc-current.json | 99 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 54 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 518 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 526 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 110 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 44 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 98 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 30 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 44 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 56 |
12 files changed, 1079 insertions, 782 deletions
diff --git a/challenge-034/duane-powell/perl5/ch-1.pl b/challenge-034/duane-powell/perl5/ch-1.pl new file mode 100755 index 0000000000..8328a4a3b9 --- /dev/null +++ b/challenge-034/duane-powell/perl5/ch-1.pl @@ -0,0 +1,141 @@ +#!/usr/bin/perl +use warnings; +use strict; +use feature qw( say ); + +# Write a program that demonstrates using hash slices and/or array slices. +# Write a program that demonstrates a dispatch table. + +my @CARD; # Global deck of 52 playing cards +sub new_deck { + @CARD = (); + foreach my $suite ('H','S','C','D') { + foreach my $rank ('2'..'9','T','J','Q','K','A') { + my $card = $rank.$suite; + push @CARD, $card; + } + } + return "\nNew deck generated."; +} + +sub shuffle_riffle { + # riffle shuffe deck random between 100 and 500 times + cut(); + my $loop = int(rand(501-100)+100); + foreach (1 .. $loop) { + # split deck into left and right hand using array slices + my @left = @CARD[0 .. 25]; + my @right = @CARD[26 .. 51]; + my @temp; + foreach (1..26) { + push @temp, shift @left; + push @temp, shift @right; + } + @CARD = @temp; + } + return "Cards riffle shuffled $loop times."; +} + +sub shuffle_reverse_cut { + # Reverse cut shuffle using array slices between 1 and 10 times + foreach (1 .. int(rand(10))+1) { + cut(); + @CARD = (@CARD[40..51],@CARD[30..39],@CARD[20..29],@CARD[10..19],@CARD[0..9]); + } + return "Cards reverse cut shuffled."; +} + +sub cut { + # Don't cut deck perfectly, generated random number near middle of deck between 32 and 20 + my $rand = int(rand(33-20)+20); + # Split deck into left and right hands using array slices + my @left = @CARD[0 .. $rand]; + my @right = @CARD[$rand+1 .. 51]; + @CARD = (@right, @left); + return "Cards cut."; +} + +sub deal { + my ($cards, $hands) = @_; + foreach (1 .. $cards) { + foreach (1 .. $hands) { + my $card = shift @CARD; + print "\t$card"; + } + say ""; + } + return "$hands hands of $cards cards dealt."; +} + +sub deck_list { + return "Remaining cards are: ". join(',',@CARD); +} + +# Dispatch table +my %dispatcher = ( + 'new_deck' => \&new_deck, + 'shuffle_riffle' => \&shuffle_riffle, + 'shuffle_reverse_cut' => \&shuffle_reverse_cut, + 'cut' => \&cut, + 'deal' => \&deal, + 'deck_list' => \&deck_list, +); + +# Call subs via dispatcher +say $dispatcher{'new_deck'}->(); +foreach (1 .. int(rand(11-3)+3)) { # randomly call shuffle methods 3 to 10 times + my $shuffle = (rand() < 0.5) ? "shuffle_riffle" :"shuffle_reverse_cut"; + say $dispatcher{$shuffle}->(); +} +say $dispatcher{'cut'}->(); +say $dispatcher{'deal'}->(5,5); +say $dispatcher{'deck_list'}->(); + +say $dispatcher{'new_deck'}->(); +foreach (1 .. int(rand(11-3)+3)) { # randomly call shuffle methods 3 to 10 times + my $shuffle = (rand() < 0.5) ? "shuffle_riffle" :"shuffle_reverse_cut"; + say $dispatcher{$shuffle}->(); +} +say $dispatcher{'cut'}->(); +say $dispatcher{'deal'}->(7,4); +say $dispatcher{'deck_list'}->(); + +__END__ + +./ch-1-and-2.pl + +New deck generated. +Cards riffle shuffled 435 times. +Cards reverse cut shuffled. +Cards reverse cut shuffled. +Cards riffle shuffled 260 times. +Cards cut. + JC 7C 6C 4D KD + QD TD 9D 8C 3H + AS KS 9H 9C 7H + KC 2D KH 3S 6D + 7D TC TS 3C 3D +5 hands of 5 cards dealt. +Remaining cards are: AH,8H,8S,7S,JS,2S,4C,5C,JD,6S,QS,4H,4S,2C,TH,9S,5S,AC,QC,AD,5H,8D,5D,JH,QH,2H,6H + +New deck generated. +Cards riffle shuffled 207 times. +Cards reverse cut shuffled. +Cards riffle shuffled 300 times. +Cards reverse cut shuffled. +Cards reverse cut shuffled. +Cards riffle shuffled 480 times. +Cards riffle shuffled 303 times. +Cards reverse cut shuffled. +Cards riffle shuffled 488 times. +Cards cut. + 4D 7S 3S 5D + JH 9H 4H 6H + KC AS 8C KS + 3C 5H 2D TC + 3H 2H 6D 5S + 8S AC 5C KD + 8D AH 9S 6S +4 hands of 7 cards dealt. +Remaining cards are: 2S,6C,TD,8H,7D,QD,7C,4C,AD,JS,9D,QH,TH,JD,JC,4S,QC,2C,QS,9C,3D,7H,KH,TS + diff --git a/challenge-034/duane-powell/perl5/ch-2.pl b/challenge-034/duane-powell/perl5/ch-2.pl new file mode 100755 index 0000000000..8328a4a3b9 --- /dev/null +++ b/challenge-034/duane-powell/perl5/ch-2.pl @@ -0,0 +1,141 @@ +#!/usr/bin/perl +use warnings; +use strict; +use feature qw( say ); + +# Write a program that demonstrates using hash slices and/or array slices. +# Write a program that demonstrates a dispatch table. + +my @CARD; # Global deck of 52 playing cards +sub new_deck { + @CARD = (); + foreach my $suite ('H','S','C','D') { + foreach my $rank ('2'..'9','T','J','Q','K','A') { + my $card = $rank.$suite; + push @CARD, $card; + } + } + return "\nNew deck generated."; +} + +sub shuffle_riffle { + # riffle shuffe deck random between 100 and 500 times + cut(); + my $loop = int(rand(501-100)+100); + foreach (1 .. $loop) { + # split deck into left and right hand using array slices + my @left = @CARD[0 .. 25]; + my @right = @CARD[26 .. 51]; + my @temp; + foreach (1..26) { + push @temp, shift @left; + push @temp, shift @right; + } + @CARD = @temp; + } + return "Cards riffle shuffled $loop times."; +} + +sub shuffle_reverse_cut { + # Reverse cut shuffle using array slices between 1 and 10 times + foreach (1 .. int(rand(10))+1) { + cut(); + @CARD = (@CARD[40..51],@CARD[30..39],@CARD[20..29],@CARD[10..19],@CARD[0..9]); + } + return "Cards reverse cut shuffled."; +} + +sub cut { + # Don't cut deck perfectly, generated random number near middle of deck between 32 and 20 + my $rand = int(rand(33-20)+20); + # Split deck into left and right hands using array slices + my @left = @CARD[0 .. $rand]; + my @right = @CARD[$rand+1 .. 51]; + @CARD = (@right, @left); + return "Cards cut."; +} + +sub deal { + my ($cards, $hands) = @_; + foreach (1 .. $cards) { + foreach (1 .. $hands) { + my $card = shift @CARD; + print "\t$card"; + } + say ""; + } + return "$hands hands of $cards cards dealt."; +} + +sub deck_list { + return "Remaining cards are: ". join(',',@CARD); +} + +# Dispatch table +my %dispatcher = ( + 'new_deck' => \&new_deck, + 'shuffle_riffle' => \&shuffle_riffle, + 'shuffle_reverse_cut' => \&shuffle_reverse_cut, + 'cut' => \&cut, + 'deal' => \&deal, + 'deck_list' => \&deck_list, +); + +# Call subs via dispatcher +say $dispatcher{'new_deck'}->(); +foreach (1 .. int(rand(11-3)+3)) { # randomly call shuffle methods 3 to 10 times + my $shuffle = (rand() < 0.5) ? "shuffle_riffle" :"shuffle_reverse_cut"; + say $dispatcher{$shuffle}->(); +} +say $dispatcher{'cut'}->(); +say $dispatcher{'deal'}->(5,5); +say $dispatcher{'deck_list'}->(); + +say $dispatcher{'new_deck'}->(); +foreach (1 .. int(rand(11-3)+3)) { # randomly call shuffle methods 3 to 10 times + my $shuffle = (rand() < 0.5) ? "shuffle_riffle" :"shuffle_reverse_cut"; + say $dispatcher{$shuffle}->(); +} +say $dispatcher{'cut'}->(); +say $dispatcher{'deal'}->(7,4); +say $dispatcher{'deck_list'}->(); + +__END__ + +./ch-1-and-2.pl + +New deck generated. +Cards riffle shuffled 435 times. +Cards reverse cut shuffled. +Cards reverse cut shuffled. +Cards riffle shuffled 260 times. +Cards cut. + JC 7C 6C 4D KD + QD TD 9D 8C 3H + AS KS 9H 9C 7H + KC 2D KH 3S 6D + 7D TC TS 3C 3D +5 hands of 5 cards dealt. +Remaining cards are: AH,8H,8S,7S,JS,2S,4C,5C,JD,6S,QS,4H,4S,2C,TH,9S,5S,AC,QC,AD,5H,8D,5D,JH,QH,2H,6H + +New deck generated. +Cards riffle shuffled 207 times. +Cards reverse cut shuffled. +Cards riffle shuffled 300 times. +Cards reverse cut shuffled. +Cards reverse cut shuffled. +Cards riffle shuffled 480 times. +Cards riffle shuffled 303 times. +Cards reverse cut shuffled. +Cards riffle shuffled 488 times. +Cards cut. + 4D 7S 3S 5D + JH 9H 4H 6H + KC AS 8C KS + 3C 5H 2D TC + 3H 2H 6D 5S + 8S AC 5C KD + 8D AH 9S 6S +4 hands of 7 cards dealt. +Remaining cards are: 2S,6C,TD,8H,7D,QD,7C,4C,AD,JS,9D,QH,TH,JD,JC,4S,QC,2C,QS,9C,3D,7H,KH,TS + diff --git a/stats/pwc-current.json b/stats/pwc-current.json index a274d890b4..2d54749933 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,61 +1,63 @@ { - "title" : { - "text" : "Perl Weekly Challenge - 034" + "subtitle" : { + "text" : "[Champions: 4] Last updated at 2019-11-11 17:25:31 GMT" }, "plotOptions" : { "series" : { - "borderWidth" : 0, "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } + }, + "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 + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" } }, + "xAxis" : { + "type" : "category" + }, + "legend" : { + "enabled" : 0 + }, + "title" : { + "text" : "Perl Weekly Challenge - 034" + }, "series" : [ { + "name" : "Perl Weekly Challenge - 034", "data" : [ { + "name" : "Duane Powell", + "y" : 2, + "drilldown" : "Duane Powell" + }, + { + "name" : "Javier Luque", "y" : 5, - "drilldown" : "Javier Luque", - "name" : "Javier Luque" + "drilldown" : "Javier Luque" }, { + "name" : "Mark Anderson", "y" : 1, - "drilldown" : "Mark Anderson", - "name" : "Mark Anderson" + "drilldown" : "Mark Anderson" }, { - "name" : "Simon Proctor", "drilldown" : "Simon Proctor", - "y" : 2 + "y" : 2, + "name" : "Simon Proctor" } ], - "colorByPoint" : 1, - "name" : "Perl Weekly Challenge - 034" + "colorByPoint" : 1 } ], - "legend" : { - "enabled" : 0 - }, - "chart" : { - "type" : "column" - }, - "subtitle" : { - "text" : "[Champions: 3] Last updated at 2019-11-11 11:44:47 GMT" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "xAxis" : { - "type" : "category" - }, - "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 - }, "drilldown" : { "series" : [ { @@ -63,6 +65,16 @@ [ "Perl 5", 2 + ] + ], + "name" : "Duane Powell", + "id" : "Duane Powell" + }, + { + "data" : [ + [ + "Perl 5", + 2 ], [ "Perl 6", @@ -73,29 +85,32 @@ 1 ] ], - "id" : "Javier Luque", - "name" : "Javier Luque" + "name" : "Javier Luque", + "id" : "Javier Luque" }, { - "name" : "Mark Anderson", "id" : "Mark Anderson", "data" : [ [ "Perl 5", 1 ] - ] + ], + "name" : "Mark Anderson" }, { "id" : "Simon Proctor", + "name" : "Simon Proctor", "data" : [ [ "Perl 6", 2 ] - ], - "name" : "Simon Proctor" + ] } ] + }, + "chart" : { + "type" : "column" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 0a1e2234dc..2c7802e8b6 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,40 +1,49 @@ { + "chart" : { + "type" : "column" + }, + "legend" : { + "enabled" : "false" + }, + "subtitle" : { + "text" : "Last updated at 2019-11-11 17:25:37 GMT" + }, "tooltip" : { "pointFormat" : "<b>{point.y:.0f}</b>" }, - "title" : { - "text" : "Perl Weekly Challenge Contributions - 2019" - }, "xAxis" : { + "type" : "category", "labels" : { "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" } - }, - "type" : "category" + } }, - "legend" : { - "enabled" : "false" + "yAxis" : { + "min" : 0, + "title" : { + "text" : null + } }, - "chart" : { - "type" : "column" + "title" : { + "text" : "Perl Weekly Challenge Contributions - 2019" }, "series" : [ { + "name" : "Contributions", "dataLabels" : { "format" : "{point.y:.0f}", - "color" : "#FFFFFF", - "align" : "right", - "enabled" : "true", - "y" : 10, "style" : { "fontFamily" : "Verdana, sans-serif", "fontSize" : "13px" }, + "y" : 10, + "color" : "#FFFFFF", + "align" : "right", + "enabled" : "true", "rotation" : -90 }, - "name" : "Contributions", "data" : [ [ "Blog", @@ -42,7 +51,7 @@ ], [ "Perl 5", - 1426 + 1428 ], [ "Perl 6", @@ -50,14 +59,5 @@ ] ] } - ], - "subtitle" : { - "text" : "Last updated at 2019-11-11 11:44:55 GMT" - }, - "yAxis" : { - "min" : 0, - "title" : { - "text" : null - } - } + ] } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index fee5c95d2a..aa4eb212ad 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,220 +1,12 @@ { - "xAxis" : { - "type" : "category" - }, - "legend" : { - "enabled" : "false" - }, "chart" : { "type" : "column" }, - "tooltip" : { - "headerFormat" : "<span style=\"font-size:11px\"></span>", - "followPointer" : "true", - "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>" - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } - } - }, - "title" : { - "text" : "Perl Weekly Challenge Language" - }, - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-11-11 11:44:55 GMT" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "series" : [ - { - "name" : "Perl Weekly Challenge Languages", - "colorByPoint" : "true", - "data" : [ - { - "y" : 132, - "drilldown" : "001", - "name" : "#001" - }, - { - "name" : "#002", - "y" : 104, - "drilldown" : "002" - }, - { - "y" : 67, - "drilldown" : "003", - "name" : "#003" - }, - { - "name" : "#004", - "y" : 87, - "drilldown" : "004" - }, - { - "drilldown" : "005", - "y" : 66, - "name" : "#005" - }, - { - "y" : 48, - "drilldown" : "006", - "name" : "#006" - }, - { - "drilldown" : "007", - "y" : 56, - "name" : "#007" - }, - { - "name" : "#008", - "drilldown" : "008", - "y" : 70 - }, - { - "drilldown" : "009", - "y" : 68, - "name" : "#009" - }, - { - "y" : 60, - "drilldown" : "010", - "name" : "#010" - }, - { - "y" : 78, - "drilldown" : "011", - "name" : "#011" - }, - { - "drilldown" : "012", - "y" : 83, - "name" : "#012" - }, - { - "name" : "#013", - "y" : 76, - "drilldown" : "013" - }, - { - "name" : "#014", - "drilldown" : "014", - "y" : 96 - }, - { - "name" : "#015", - "drilldown" : "015", - "y" : 93 - }, - { - "y" : 66, - "drilldown" : "016", - "name" : "#016" - }, - { - "name" : "#017", - "y" : 79, - "drilldown" : "017" - }, - { - "name" : "#018", - "y" : 76, - "drilldown" : "018" - }, - { - "name" : "#019", - "y" : 95, - "drilldown" : "019" - }, - { - "name" : "#020", - "y" : 95, - "drilldown" : "020" - }, - { - "name" : "#021", - "y" : 67, - "drilldown" : "021" - }, - { - "name" : "#022", - "y" : 63, - "drilldown" : "022" - }, - { - "drilldown" : "023", - "y" : 91, - "name" : "#023" - }, - { - "y" : 70, - "drilldown" : "024", - "name" : "#024" - }, - { - "name" : "#025", - "y" : 55, - "drilldown" : "025" - }, - { - "name" : "#026", - "drilldown" : "026", - "y" : 70 - }, - { - "name" : "#027", - "drilldown" : "027", - "y" : 58 - }, - { - "name" : "#028", - "y" : 78, - "drilldown" : "028" - }, - { - "drilldown" : "029", - "y" : 77, - "name" : "#029" - }, - { - "name" : "#030", - "y" : 115, - "drilldown" : "030" - }, - { - "name" : "#031", - "drilldown" : "031", - "y" : 87 - }, - { - "name" : "#032", - "drilldown" : "032", - "y" : 92 - }, - { - "y" : 106, - "drilldown" : "033", - "name" : "#033" - }, - { - "y" : 8, - "drilldown" : "034", - "name" : "#034" - } - ] - } - ], "drilldown" : { "series" : [ { "name" : "001", + "id" : "001", "data" : [ [ "Perl 5", @@ -228,11 +20,9 @@ "Blog", 11 ] - ], - "id" : "001" + ] }, { - "id" : "002", "data" : [ [ "Perl 5", @@ -247,10 +37,10 @@ 9 ] ], + "id" : "002", "name" : "002" }, { - "name" : "003", "id" : "003", "data" : [ [ @@ -265,7 +55,8 @@ "Blog", 9 ] - ] + ], + "name" : "003" }, { "name" : "004", @@ -286,7 +77,7 @@ ] }, { - "id" : "005", + "name" : "005", "data" : [ [ "Perl 5", @@ -301,9 +92,10 @@ 11 ] ], - "name" : "005" + "id" : "005" }, { + "id" : "006", "data" : [ [ "Perl 5", @@ -318,11 +110,9 @@ 7 ] ], - "id" : "006", "name" : "006" }, { - "id" : "007", "data" : [ [ "Perl 5", @@ -337,6 +127,7 @@ 10 ] ], + "id" : "007", "name" : "007" }, { @@ -358,6 +149,7 @@ ] }, { + "id" : "009", "data" : [ [ "Perl 5", @@ -372,7 +164,6 @@ 13 ] ], - "id" : "009", "name" : "009" }, { @@ -412,7 +203,7 @@ "id" : "011" }, { - "id" : "012", + "name" : "012", "data" : [ [ "Perl 5", @@ -427,9 +218,10 @@ 11 ] ], - "name" : "012" + "id" : "012" }, { + "name" : "013", "data" : [ [ "Perl 5", @@ -444,8 +236,7 @@ 13 ] ], - "id" : "013", - "name" : "013" + "id" : "013" }, { "name" : "014", @@ -466,6 +257,7 @@ ] }, { + "name" : "015", "data" : [ [ "Perl 5", @@ -480,11 +272,10 @@ 15 ] ], - "id" : "015", - "name" : "015" + "id" : "015" }, { - "id" : "016", + "name" : "016", "data" : [ [ "Perl 5", @@ -499,9 +290,10 @@ 12 ] ], - "name" : "016" + "id" : "016" }, { + "name" : "017", "data" : [ [ "Perl 5", @@ -516,11 +308,9 @@ 12 ] ], - "id" : "017", - "name" : "017" + "id" : "017" }, { - "name" : "018", "data" : [ [ "Perl 5", @@ -535,10 +325,11 @@ 14 ] ], - "id" : "018" + "id" : "018", + "name" : "018" }, { - "name" : "019", + "id" : "019", "data" : [ [ "Perl 5", @@ -553,7 +344,7 @@ 13 ] ], - "id" : "019" + "name" : "019" }, { "name" : "020", @@ -574,6 +365,7 @@ ] }, { + "name" : "021", "data" : [ [ "Perl 5", @@ -588,11 +380,11 @@ 10 ] ], - "id" : "021", - "name" : "021" + "id" : "021" }, { "name" : "022", + "id" : "022", "data" : [ [ "Perl 5", @@ -606,11 +398,9 @@ "Blog", 10 ] - ], - "id" : "022" + ] }, { - "name" : "023", "id" : "023", "data" : [ [ @@ -625,7 +415,8 @@ "Blog", 12 ] - ] + ], + "name" : "023" }, { "id" : "024", @@ -646,6 +437,7 @@ "name" : "024" }, { + "name" : "025", "id" : "025", "data" : [ [ @@ -660,11 +452,10 @@ "Blog", 12 ] - ], - "name" : "025" + ] }, { - "id" : "026", + "name" : "026", "data" : [ [ "Perl 5", @@ -679,10 +470,9 @@ 10 ] ], - "name" : "026" + "id" : "026" }, { - "id" : "027", "data" : [ [ "Perl 5", @@ -697,10 +487,11 @@ 9 ] ], + "id" : "027", "name" : "027" }, { - "name" : "028", + "id" : "028", "data" : [ [ "Perl 5", @@ -715,9 +506,10 @@ 9 ] ], - "id" : "028" + "name" : "028" }, { + "name" : "029", "data" : [ [ "Perl 5", @@ -732,11 +524,9 @@ 12 ] ], - "id" : "029", - "name" : "029" + "id" : "029" }, { - "name" : "030", "id" : "030", "data" : [ [ @@ -751,10 +541,10 @@ "Blog", 10 ] - ] + ], + "name" : "030" }, { - "id" : "031", "data" : [ [ "Perl 5", @@ -769,10 +559,12 @@ 9 ] ], + "id" : "031", "name" : "031" }, { "name" : "032", + "id" : "032", "data" : [ [ "Perl 5", @@ -786,12 +578,9 @@ "Blog", 10 ] - ], - "id" : "032" + ] }, { - "name" : "033", - "id" : "033", "data" : [ [ "Perl 5", @@ -805,14 +594,17 @@ "Blo |
