diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-05-09 16:54:34 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-05-09 16:54:34 +0100 |
| commit | b6dfe831cbda4c869683fe3c5ca9ae33576c8c6f (patch) | |
| tree | 587e17a723a25a71d2e320e11b67ca99d0f75954 | |
| parent | b581120077cdaeafad72cebe2f41d98c42199584 (diff) | |
| download | perlweeklychallenge-club-b6dfe831cbda4c869683fe3c5ca9ae33576c8c6f.tar.gz perlweeklychallenge-club-b6dfe831cbda4c869683fe3c5ca9ae33576c8c6f.tar.bz2 perlweeklychallenge-club-b6dfe831cbda4c869683fe3c5ca9ae33576c8c6f.zip | |
- Added solutions by Athanasius.
| -rw-r--r-- | challenge-007/athanasius/perl5/ch-1.pl | 17 | ||||
| -rw-r--r-- | challenge-007/athanasius/perl5/ch-2.pl | 188 | ||||
| -rw-r--r-- | stats/pwc-current.json | 155 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 110 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 868 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 122 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 102 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 42 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 38 |
9 files changed, 931 insertions, 711 deletions
diff --git a/challenge-007/athanasius/perl5/ch-1.pl b/challenge-007/athanasius/perl5/ch-1.pl new file mode 100644 index 0000000000..2d8cfb21dc --- /dev/null +++ b/challenge-007/athanasius/perl5/ch-1.pl @@ -0,0 +1,17 @@ +use strict; +use warnings; +use Const::Fast; + +const my $FIRST => 0; +const my $LAST => 50; + +for my $n ($FIRST .. $LAST) +{ + next if $n == 0; # Because 0/0 is undefined + + my $sum = 0; + $sum += $_ for split //, $n; + + print "$n\n" if $n % $sum == 0; +} + diff --git a/challenge-007/athanasius/perl5/ch-2.pl b/challenge-007/athanasius/perl5/ch-2.pl new file mode 100644 index 0000000000..2dc3d014a2 --- /dev/null +++ b/challenge-007/athanasius/perl5/ch-2.pl @@ -0,0 +1,188 @@ +use strict; +use warnings; +use Const::Fast; +use List::Util; + +# Download from https://crosswordman.com/wordlist.html :- + +const my $WORD_FILE => 'UK Advanced Cryptics Dictionary.txt'; +const my $MAX_LADDER_SZ => 10; +const my $DEFAULT_WORD1 => 'cold'; +const my $DEFAULT_WORD2 => 'warm'; + +MAIN: +{ + my $word1 = $ARGV[0] // $DEFAULT_WORD1; + my $word2 = $ARGV[1] // $DEFAULT_WORD2; + my $dictionary = init_dictionary(); + my $wordlist = $dictionary->[ length $word1 ]; + + if (my @ladder = find_shortest_ladder($word1, $word2, $wordlist)) + { + print "\nShortest ladder found:\n(", + join(', ', map { '"' . $_ . '"' } @ladder), ")\n"; + } + else + { + print "\nNo ladder found from '$word1' to '$word2'\n"; + } +} + +sub init_dictionary +{ + my @dictionary; + + open(my $fh, '<', $WORD_FILE) + or die "Cannot open file '$WORD_FILE' for reading, stopped"; + + while (<$fh>) + { + next if 1 .. / ^ -+ $ /x; # Skip header + chomp; + next if /[^a-z]/; # Skip capital letters, apostrophes, + # hyphens, and phrases (whitespace) + push $dictionary[ length ]->@*, $_; + } + + close $fh + or die "Cannot close file '$WORD_FILE', stopped"; + + return \@dictionary; +} + +sub find_shortest_ladder +{ + my ($word1, $word2, $wordlist) = @_; + my @solution; + + if (args_are_valid($word1, $word2, $wordlist)) + { + my @ladders = ( Ladder->new($word1, $word2, [ $word1 ], $wordlist) ); + + OUTER: + for (1 .. $MAX_LADDER_SZ) + { + my @new_ladders; + + while (my $ladder = shift @ladders) + { + for my $next ($ladder->get_next_words()->@*) + { + my @new_ladder = ($ladder->get_ladder()->@*, $next); + + if ($next eq $word2) + { + @solution = @new_ladder; + last OUTER; + } + + push @new_ladders, + Ladder->new($next, $word2, \@new_ladder, $wordlist); + } + } + + @ladders = @new_ladders; + } + } + + return @solution; +} + +sub args_are_valid +{ + my ($w1, $w2, $list) = @_; + my $args_are_valid = 0; + + if (!defined $w1) + { + warn "\nFirst word is undefined"; + } + elsif (!defined $w2) + { + warn "\nSecond word is undefined"; + } + elsif ((my $l1 = length $w1) != (my $l2 = length $w2)) + { + warn "\nUnequal word lengths: $w1($l1) and $w2($l2)"; + } + elsif ($w1 eq $w2) + { + warn "\nInput words are equal"; + } + elsif ((my $size = scalar @$list) <= 2) + { + warn sprintf("\nWord list contains %d element%s", + $size, ($size == 1) ? '' : 's'); + } + elsif ($l1 != (my $l3 = length (my $w0 = $list->[0]))) + { + warn "\nUnequal word lengths: $w1 ($l1) and $w0 ($l3) " . + '[the first word in the list]'; + } + elsif (List::Util::none { $w1 eq $_ } @$list) + { + warn "\n'$w1' not found in word list"; + } + elsif (List::Util::none { $w2 eq $_ } @$list) + { + warn "\n'$w2' not found in word list"; + } + else + { + $args_are_valid = 1; + } + + return $args_are_valid; +} + +package Ladder +{ + sub new + { + my ($class, $first, $last, $ladder, $wordlist) = @_; + my $self = + { + start_word => $first, + end_word => $last, + ladder => $ladder, + wordlist => $wordlist, + }; + + return bless $self, $class; + } + + sub get_ladder + { + my ($self) = @_; + + return $self->{ladder}; + } + + sub get_next_words + { + my ($self) = @_; + my $word1 = $self->{start_word}; + my @ladder = $self->{ladder}->@*; + my @word1 = split //, $word1; + my $max_i = length($word1) - 1; + my @candidates; + + for my $word2 ( $self->{wordlist}->@* ) + { + next if List::Util::any { $word2 eq $_ } @ladder; + + + my @word2 = split //, $word2; + my $diffs = 0; + + for my $i (0 .. $max_i) + { + ++$diffs if $word1[$i] ne $word2[$i]; + } + + push @candidates, $word2 if $diffs == 1; + } + + return \@candidates; + } +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 05392493f0..e74042d289 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,51 +1,109 @@ { - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } - } + "subtitle" : { + "text" : "[Champions: 6] Last updated at 2019-05-09 15:54:18 GMT" }, - "chart" : { - "type" : "column" + "series" : [ + { + "colorByPoint" : 1, + "name" : "Champions", + "data" : [ + { + "drilldown" : "Athanasius", + "y" : 2, + "name" : "Athanasius" + }, + { + "y" : 2, + "drilldown" : "Dave Jacoby", + "name" : "Dave Jacoby" + }, + { + "drilldown" : "Gustavo Chaves", + "y" : 2, + "name" : "Gustavo Chaves" + }, + { + "name" : "Joelle Maslak", + "drilldown" : "Joelle Maslak", + "y" : 2 + }, + { + "drilldown" : "Ozzy", + "y" : 1, + "name" : "Ozzy" + }, + { + "y" : 1, + "drilldown" : "Simon Proctor", + "name" : "Simon Proctor" + } + ] + } + ], + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } }, "legend" : { "enabled" : 0 }, + "title" : { + "text" : "Perl Weekly Challenge - 007" + }, "tooltip" : { + "pointerFormat" : "<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/>", - "pointerFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>" + "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>" }, - "title" : { - "text" : "Perl Weekly Challenge - 007" + "chart" : { + "type" : "column" + }, + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } + } + }, + "xAxis" : { + "type" : "category" }, "drilldown" : { "series" : [ { - "id" : "Dave Jacoby", "data" : [ [ "Perl 5", 2 ] ], - "name" : "Dave Jacoby" + "id" : "Athanasius", + "name" : "Athanasius" }, { - "id" : "Gustavo Chaves", + "name" : "Dave Jacoby", "data" : [ [ "Perl 5", 2 ] ], - "name" : "Gustavo Chaves" + "id" : "Dave Jacoby" + }, + { + "name" : "Gustavo Chaves", + "id" : "Gustavo Chaves", + "data" : [ + [ + "Perl 5", + 2 + ] + ] }, { - "name" : "Joelle Maslak", "data" : [ [ "Perl 5", @@ -56,72 +114,29 @@ 1 ] ], - "id" : "Joelle Maslak" + "id" : "Joelle Maslak", + "name" : "Joelle Maslak" }, { - "id" : "Ozzy", - "name" : "Ozzy", "data" : [ [ "Perl 6", 1 ] - ] + ], + "id" : "Ozzy", + "name" : "Ozzy" }, { "name" : "Simon Proctor", + "id" : "Simon Proctor", "data" : [ [ "Perl 6", 1 ] - ], - "id" : "Simon Proctor" + ] } ] - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "subtitle" : { - "text" : "[Champions: 5] Last updated at 2019-05-09 10:07:03 GMT" - }, - "xAxis" : { - "type" : "category" - }, - "series" : [ - { - "colorByPoint" : 1, - "data" : [ - { - "y" : 2, - "drilldown" : "Dave Jacoby", - "name" : "Dave Jacoby" - }, - { - "drilldown" : "Gustavo Chaves", - "name" : "Gustavo Chaves", - "y" : 2 - }, - { - "y" : 2, - "name" : "Joelle Maslak", - "drilldown" : "Joelle Maslak" - }, - { - "y" : 1, - "drilldown" : "Ozzy", - "name" : "Ozzy" - }, - { - "y" : 1, - "drilldown" : "Simon Proctor", - "name" : "Simon Proctor" - } - ], - "name" : "Champions" - } - ] + } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 2eca40489a..c23602de25 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,17 +1,4 @@ { - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "xAxis" : { - "type" : "category" - }, - "tooltip" : { - "headerFormat" : "<span style=\"font-size:11px\"></span>", - "followPointer" : "true", - "pointFormat" : "<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:f}</b><br/>" - }, "series" : [ { "data" : [ @@ -21,64 +8,47 @@ "name" : "#001 [P5=76 P6=37]" }, { - "y" : 95, + "name" : "#002 [P5=63 P6=32]", "drilldown" : "002", - "name" : "#002 [P5=63 P6=32]" + "y" : 95 }, { - "name" : "#003 [P5=32 P6=26]", + "y" : 58, "drilldown" : "003", - "y" : 58 + "name" : "#003 [P5=32 P6=26]" }, { + "name" : "#004 [P5=46 P6=29]", "drilldown" : "004", - "y" : 75, - "name" : "#004 [P5=46 P6=29]" + "y" : 75 }, { "name" : "#005 [P5=33 P6=22]", - "drilldown" : "005", - "y" : 55 + "y" : 55, + "drilldown" : "005" }, { - "y" : 41, + "name" : "#006 [P5=27 P6=14]", "drilldown" : "006", - "name" : "#006 [P5=27 P6=14]" + "y" : 41 }, { - "name" : "#007 [P5=5 P6=3]", + "name" : "#007 [P5=7 P6=3]", "drilldown" : "007", - "y" : 8 + "y" : 10 } ], - "colorByPoint" : "true", - "name" : "Perl Weekly Challenge Languages" + "name" : "Perl Weekly Challenge Languages", + "colorByPoint" : "true" } ], "legend" : { "enabled" : "false" }, - "chart" : { - "type" : "column" - }, - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-05-09 10:07:31 GMT" - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } - }, - "title" : { - "text" : "Perl Weekly Challenge Language" - }, "drilldown" : { "series" : [ { + "name" : "001", "id" : "001", "data" : [ [ @@ -89,11 +59,10 @@ "Perl 6", 37 ] - ], - "name" : "001" + ] }, { - "name" : "002", + "id" : "002", "data" : [ [ "Perl 5", @@ -104,9 +73,10 @@ 32 ] ], - "id" : "002" + "name" : "002" }, { + "id" : "003", "data" : [ [ "Perl 5", @@ -117,11 +87,9 @@ 26 ] ], - "name" : "003", - "id" : "003" + "name" : "003" }, { - "id" : "004", "name" : "004", "data" : [ [ @@ -132,10 +100,10 @@ "Perl 6", 29 ] - ] + ], + "id" : "004" }, { - "id" : "005", "data" : [ [ "Perl 5", @@ -146,6 +114,7 @@ 22 ] ], + "id" : "005", "name" : "005" }, { @@ -167,7 +136,7 @@ "data" : [ [ "Perl 5", - 5 + 7 ], [ "Perl 6", @@ -177,5 +146,36 @@ "name" : "007" } ] + }, + "xAxis" : { + "type" : "category" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-05-09 15:54:28 GMT" + }, + "tooltip" : { + "headerFormat" : "<span style=\"font-size:11px\"></span>", + "pointFormat" : "<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:f}</b><br/>", + "followPointer" : "true" + }, + "chart" : { + "type" : "column" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 + } + }, + "title" : { + "text" : "Perl Weekly Challenge Language" } } diff --git a/stats/pwc-leaders.json b/stats/pwc-leaders.json index c0d500b3d2..4d36e9aff4 100644 --- a/stats/pwc-leaders.json +++ b/stats/pwc-leaders.json @@ -1,111 +1,394 @@ { + "yAxis" : { + "title" : { + "text" : "Total Score" + } + }, "xAxis" : { "type" : "category" }, + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + } + } + }, + "title" : { + "text" : "Perl Weekly Challenge Leaders (TOP 50)" + }, + "series" : [ + { + "colorByPoint" : "true", + "data" : [ + { + "drilldown" : "Laurent Rosenfeld", + "y" : 60, + "name" : "#1: Laurent Rosenfeld" + }, + { + "drilldown" : "Joelle Maslak", + "y" : 54, + "name" : "#2: Joelle Maslak" + }, + { + "drilldown" : "Jaldhar H. Vyas", + "y" : 48, + "name" : "#3: Jaldhar H. Vyas" + }, + { + "drilldown" : "Simon Proctor", + "y" : 42, + "name" : "#4: Simon Proctor" + }, + { + "y" : 40, + "drilldown" : "Ruben Westerberg", + "name" : "#5: Ruben Westerberg" + }, + { + "drilldown" : "Adam Russell", + "y" : 36, + "name" : "#6: Adam Russell" + }, + { + "y" : 36, + "drilldown" : "Dr James A. Smith", + "name" : "#7: Dr James A. Smith" + }, + { + "y" : 36, + "drilldown" : "Jo Christian Oterhals", + "name" : "#8: Jo Christian Oterhals" + }, + { + "name" : "#9: Kian-Meng Ang", + "drilldown" : "Kian-Meng Ang", + "y" : 32 + }, + { + "name" : "#10: Nick Logan", + "drilldown" : "Nick Logan", + "y" : 32 + }, + { + "y" : 30, + "drilldown" : "Arne Sommer", + "name" : "#11: Arne Sommer" + }, + { + "name" : "#12: Gustavo Chaves", + "drilldown" : "Gustavo Chaves", + "y" : 30 + }, + { + "drilldown" : "Athanasius", + "y" : 28, + "name" : "#13: Athanasius" + }, + { + "name" : "#14: Lars Balker", + "drilldown" : "Lars Balker", + "y" : 28 + }, + { + "drilldown" : "Mark Senn", + "y" : 26, + "name" : "#15: Mark Senn" + }, + { + "y" : 24, + "drilldown" : "Andrezgz", + "name" : "#16: Andrezgz" + }, + { + "name" : "#17: Doug Schrag", + "drilldown" : "Doug Schrag", + "y" : 20 + }, + { + "name" : "#18: Duncan C. White", + "drilldown" : "Duncan C. White", + "y" : 20 + }, + { + "drilldown" : "Francis Whittle", + "y" : 18, + "name" : "#19: Francis Whittle" + }, + { + "drilldown" : "Robert Gratza", + "y" : 16, + "name" : "#20: Robert Gratza" + }, + { + "name" : "#21: Daniel Mantovani", + "drilldown" : "Daniel Mantovani", + "y" : 14 + }, + { + "drilldown" : "Dave Jacoby", + "y" : 14, + "name" : "#22: Dave Jacoby" + }, + { + "name" : "#23: John Barrett", + "drilldown" : "John Barrett", + "y" : 14 + }, + { + "name" : "#24: E. Choroba", + "y" : 12, + "drilldown" : "E. Choroba" + }, + { + "name" : "#25: Maxim Kolodyazhny", + "drilldown" : "Maxim Kolodyazhny", + "y" : 12 + }, + { + "drilldown" : "Ozzy", + "y" : 12, + "name" : "#26: Ozzy" + }, + { + "y" : 12, + "drilldown" : "Philippe Bruhat", + "name" : "#27: Philippe Bruhat" + }, + { + "name" : "#28: Sergio Iglesias", + "y" : 12, + "drilldown" : "Sergio Iglesias" + }, + { + "y" : 10, + "drilldown" : "Arpad Toth", + "name" : "#29: Arpad Toth" + }, + { + "name" : "#30: Khalid", + "drilldown" : "Khalid", + "y" : 10 + }, + { + "name" : "#31: Steve Rogerson", + "y" : 10, + "drilldown" : "Steve Rogerson" + }, + { + "name" : "#32: Veesh Goldman", + "y" : 10, + "drilldown" : "Veesh Goldman" + }, + { + "name" : "#33: Alex Daniel", + "drilldown" : "Alex Daniel", + "y" : 8 + }, + { + "drilldown" : "Bob Kleemann", + "y" : 8, + "name" : "#34: Bob Kleemann" + }, + { + "drilldown" : "Chenyf", + "y" : 8, + "name" : "#35: Chenyf" + }, + { + "name" : "#36: David Kayal", + "y" : 8, + "drilldown" : "David Kayal" + }, + { + "y" : 8, + "drilldown" : "Jaime Corchado", + "name" : "#37: Jaime Corchado" + }, + { + "name" : "#38: Matt Latusek", + "y" : 8, + "drilldown" : "Matt Latusek" + }, + { + "name" : "#39: Simon Reinhardt", + "y" : 8, + "drilldown" : "Simon Reinhardt" + }, + { + "drilldown" : "Steven Wilson", + "y" : 8, + "name" : "#40: Steven Wilson" + }, + { + "y" : 8, + "drilldown" : "Tim Smith", + "name" : "#41: Tim Smith" + }, + { + "name" : "#42: Ailbhe Tweedie", + "y" : 6, + "drilldown" : "Ailbhe Tweedie" + }, + { + "name" : "#43: Alicia Bielsa", + "y" : 6, + "drilldown" : "Alicia Bielsa" + }, + { + "name" : "#44: Dave Cross", + "drilldown" : "Dave Cross", + "y" : 6 + }, + { + "y" : 6, + "drilldown" : "Freddie B", + "name" : "#45: Freddie B" + }, + { + "y" : 6, + "drilldown" : "Jeremy Carman", + "name" : "#46: Jeremy Carman" + }, + { + "y" : 6, + "drilldown" : "Kivanc Yazan", + "name" : "#47: Kivanc Yazan" + }, + { + "name" : "#48: Neil Bowers", + "drilldown" : "Neil Bowers", + "y" : 6 + }, + { + "name" : "#49: Pete Houston", + "y" : 6, + "drilldown" : "Pete Houston" + }, + { + "y" : 6, + "drilldown" : "Sean Meininger", + "name" : "#50: Sean Meininger" + } + ], + "name" : "Perl Weekly Challenge Leaders" + } + ], + "tooltip" : { + "pointFormat" : "<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:f}</b><br/>", + "followPointer" : "true", + "headerFormat" : "<span style=\"font-size:11px\"></span>" + }, "chart" : { "type" : "column" }, + "subtitle" : { + "text" : "Click the columns to drilldown the score breakdown. Last updated at 2019-05-09 15:54:24 GMT" + }, "drilldown" : { "series" : [ { + "id" : "Laurent Rosenfeld", "data" : [ [ - "Perl 6", - 11 - ], - [ "Perl 5", 12 ], [ + "Perl 6", + 11 + ], + [ "Blog", 7 ] ], - "id" : "Laurent Rosenfeld", "name" : "Laurent Rosenfeld" }, { "data" : [ [ - "Blog", - 1 - ], - [ "Perl 5", 13 ], [ "Perl 6", 13 + ], + [ + "Blog", + 1 ] ], - "name" : "Joelle Maslak", - "id" : "Joelle Maslak" + "id" : "Joelle Maslak", + "name" : "Joelle Maslak" }, { "data" : [ [ - "Perl 5", + "Perl 6", 12 ], [ - "Perl 6", + "Perl 5", 12 ] ], - "name" : "Jaldhar H. Vyas", - "id" : "Jaldhar H. Vyas" + "id" : "Jaldhar H. Vyas", + "name" : "Jaldhar H. Vyas" }, { + "id" : "Simon Proctor", "data" : [ [ "Blog", 5 ], [ - "Perl 6", - 12 - ], - [ "Perl 5", 4 + ], + [ + "Perl 6", + 12 ] ], - "id" : "Simon Proctor", "name" : "Simon Proctor" }, { + "name" : "Ruben Westerberg", "data" : [ [ - "Perl 6", + "Perl 5", 10 ], [ - "Perl 5", + "Perl 6", 10 ] ], - "id" : "Ruben Westerberg", - "name" : "Ruben Westerberg" + "id" : "Ruben Westerberg" }, { + "name" : "Adam Russell", + "id" : "Adam Russell", "data" : [ [ - "Blog", - 6 - ], - [ "Perl 5", 12 + ], + [ + "Blog", + 6 ] - ], - "name" : "Adam Russell", - "id" : "Adam Russell" + ] }, { - "id" : "Dr James A. Smith", "name" : "Dr James A. Smith", + "id" : "Dr James A. Smith", "data" : [ [ "Perl 5", @@ -118,45 +401,45 @@ ] }, { - "id" : "Jo Christian Oterhals", "name" : "Jo Christian Oterhals", "data" : [ [ - "Blog", - 4 - ], - [ "Perl 6", 8 ], [ "Perl 5", 6 + ], + [ + "Blog", + 4 ] - ] + ], + "id" : "Jo Christian Oterhals" }, { + "name" : "Kian-Meng Ang", "data" : [ [ - "Perl 5", - 11 - ], - [ "Blog", 5 + ], + [ + "Perl 5", + 11 ] ], - "id" : "Kian-Meng Ang", - "name" : "Kian-Meng Ang" + "id" : "Kian-Meng Ang" }, { "data" : [ [ - "Perl 6", + "Perl 5", 8 ], [ - "Perl 5", + "Perl 6", 8 ] ], @@ -164,142 +447,141 @@ "name" : "Nick Logan" }, { + "id" : "Arne Sommer", |
