diff options
| -rw-r--r-- | challenge-075/colin-crain/perl/ch-1.pl | 100 | ||||
| -rw-r--r-- | challenge-075/colin-crain/perl/ch-2.pl | 139 | ||||
| -rw-r--r-- | challenge-075/colin-crain/raku/ch-1.raku | 89 | ||||
| -rw-r--r-- | challenge-075/colin-crain/raku/ch-2.raku | 130 | ||||
| -rw-r--r-- | stats/pwc-current.json | 530 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 80 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 1076 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 730 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 110 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 28 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 108 | ||||
| -rw-r--r-- | stats/pwc-summary-181-210.json | 56 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 44 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 28 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 104 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 22 |
16 files changed, 1920 insertions, 1454 deletions
diff --git a/challenge-075/colin-crain/perl/ch-1.pl b/challenge-075/colin-crain/perl/ch-1.pl new file mode 100644 index 0000000000..acc48f6524 --- /dev/null +++ b/challenge-075/colin-crain/perl/ch-1.pl @@ -0,0 +1,100 @@ +#! /opt/local/bin/perl +# +# change_is_gonna_come.pl +# +# TASK #1 › Coins Sum +# Submitted by: Mohammad S Anwar +# You are given a set of coins @C, assuming you have infinite amount of each coin in the set. +# +# Write a script to find how many ways you make sum $S using the coins from the set @C. +# +# Example: +# Input: +# @C = (1, 2, 4) +# $S = 6 +# +# Output: 6 +# There are 6 possible ways to make sum 6. +# a) (1, 1, 1, 1, 1, 1) +# b) (1, 1, 1, 1, 2) +# c) (1, 1, 2, 2) +# d) (1, 1, 4) +# e) (2, 2, 2) +# f) (2, 4) +# +# method: +# Recursive routine that diminishes the options available in the +# coin bag as the total anount remaining decreases. Builds a +# branching tree of coin groupings until no more coins can be used +# or remaining amount to be tendered is 0. +# +# 2020 colin crain +## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## + +use warnings; +use strict; +use feature ":5.26"; + +## ## ## ## ## MAIN: + +## in +my $S = shift @ARGV // 27; +our @coins = sort { $a <=> $b} @ARGV; +@coins = (2,5,10,25) if ! @ARGV; +our @solutions; + +## work +get_coin_groups($S); + +## out +print_output(\@solutions); + +## ## ## ## ## SUBS: + +sub get_coin_groups { + my ($amt, $group, $bag) = @_; + $group //= []; + $bag //= \@coins; + + ## base case, cashed out + if ($amt == 0) { + push @solutions, $group; + return; + } + + ## limit coin bag to those smaller or equal to the current amount + my @coin_bag = grep { $_ <= $amt } $bag->@*; + + ## edge case, cannot complete group with remaining coins + if (@coin_bag == 0) { + return; + } + + for my $coin ( @coin_bag ) { + ## limit coin bag to this coin or smaller + ## keeps groups ordered and disallows duplicate rearrangements + my @smaller_coin_bag = grep { $_ <= $coin } $bag->@*; + get_coin_groups( $amt - $coin, [@$group, $coin], \@smaller_coin_bag ); + } +} + +sub print_output { +use Lingua::EN::Inflexion; + my ($output, $sum ) = @_; + my $count = scalar $output->@*; + + say<<"__EOD__"; +Input: + \@C = (@coins) + \$S = $S +__EOD__ + + say "Output: $count"; + my $str = inflect("<#d:$count>There <V:is> <#wnc:$count> possible <N:ways> to make the sum $S."); + say $str; + + my @letter_prefixes = ('a'..'z', 'aa'..'zz'); + say "\t", shift @letter_prefixes, ') (', (join ', ', $_->@*), ')' for @solutions; + +} + diff --git a/challenge-075/colin-crain/perl/ch-2.pl b/challenge-075/colin-crain/perl/ch-2.pl new file mode 100644 index 0000000000..d09c971d5c --- /dev/null +++ b/challenge-075/colin-crain/perl/ch-2.pl @@ -0,0 +1,139 @@ +#! /opt/local/bin/perl +# +# 75_2_windows_wide_open.pl +# +# TASK #2 › Largest Rectangle Histogram +# Submitted by: Mohammad S Anwar +# You are given an array of positive numbers @A. +# +# Write a script to find the larget rectangle histogram created by the +# given array. +# +# BONUS: Try to print the histogram as shown in the example, if +# possible. +# +# Example 1: +# +# Input: @A = (2, 1, 4, 5, 3, 7) +# 7 # +# 6 # +# 5 # # +# 4 # # # +# 3 # # # # +# 2 # # # # # +# 1 # # # # # # +# _ _ _ _ _ _ _ +# 2 1 4 5 3 7 +# +# Looking at the above histogram, the largest rectangle (4 x 3) is +# formed by columns (4, 5, 3 and 7). +# +# Output: 12 +# +# Example 2: +# +# Input: @A = (3, 2, 3, 5, 7, 5) +# 7 # +# 6 # +# 5 # # # +# 4 # # # +# 3 # # # # # +# 2 # # # # # # +# 1 # # # # # # +# _ _ _ _ _ _ _ +# 3 2 3 5 7 5 +# Looking at the above histogram, the largest rectangle (3 x 5) is +# formed by columns (5, 7 and 5). +# +# Output: 15 +# +# +## ## ## ## ## +# +# method: +# The rectangular area under a range is defined by the minimum value +# within that range and the width of the span. +# +# So by looking at each range set within the bounds of the array, we +# can find the corresponding minimum; multiplying that by the width +# of the window gives us the area of the rectangle. +# +# We are asked to find the maximum rectangle, but if we wish to +# allow for multiple equal areas, outputting all values, we need +# to keep all the rectangle data and review it before reporting. We +# can keep everything in an array of arrays, with a structure for +# [Area, Start, End, Height] and descending sort by area. Take the +# first value and compare to the next until it differs; these will +# be the maximum rectangles. +# +# We will choose to not consider a single data point to be a proper +# rectangle, more like a line, so in altering the input of example +# number 2 to the list (3, 2, 3, 5, 7, 16), the result would still +# be 15, being the rectangle with height 5 over (5,7,16), rather +# than just the 16 value. It would be easy enough to fudge the +# iterators to make it work that way, but I consider it to be a +# degenerate and slightly boring case, overly sensitive to outliers +# and signal noise. Let's keep it interesting and say rectangles +# need at minimum width 2. +# +# array 6 14 17 1 20 7 15 5 10 19 16 13 +# +# rectangle found at: +# start index 4 +# end index 11 +# height 5 +# width 8 +# area 40 +# +# rectangle found at: +# start index 8 +# end index 11 +# height 10 +# width 4 +# area 40 +# +# +# +# 2020 colin crain +## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## + + + +use warnings; +use strict; +use feature ":5.26"; + +use List::Util qw( min sample ); + +## ## ## ## ## MAIN: + +my @A = sample 12, (1..24); +my @windows; + +for my $start (0..@A-2) { + for my $end ($start+1..@A-1) { + my $min = min @A[$start..$end]; + push @windows, [$min*($end-$start+1), $start, $end, $min]; + } +} + +my @sorted = sort { $b->[0] <=> $a->[0] } @windows; +my @largest = grep { $_->[0] == $sorted[0]->[0] } @sorted; + +say "array (@A)"; + +for my $rect ( @largest ) { + my $width = $rect->[2] - $rect->[1] + 1; + say<<__EOD__; + +rectangle found at: + start index $rect->[1] + end index $rect->[2] + height $rect->[3] + width $width + area $rect->[0] +__EOD__ +} + + + diff --git a/challenge-075/colin-crain/raku/ch-1.raku b/challenge-075/colin-crain/raku/ch-1.raku new file mode 100644 index 0000000000..3c40079d02 --- /dev/null +++ b/challenge-075/colin-crain/raku/ch-1.raku @@ -0,0 +1,89 @@ +#!/usr/bin/env perl6 +# +# +# change_is_gonna_come.raku +# +# TASK #1 › Coins Sum +# Submitted by: Mohammad S Anwar +# You are given a set of coins @C, assuming you have infinite amount of each coin in the set. +# +# Write a script to find how many ways you make sum $S using the coins from the set @C. +# +# Example: +# Input: +# @C = (1, 2, 4) +# $S = 6 +# +# Output: 6 +# There are 6 possible ways to make sum 6. +# a) (1, 1, 1, 1, 1, 1) +# b) (1, 1, 1, 1, 2) +# c) (1, 1, 2, 2) +# d) (1, 1, 4) +# e) (2, 2, 2) +# f) (2, 4) +# +# method: +# Recursive routine that diminishes the options available in the +# coin bag as the total anount remaining decreases. Builds a +# branching tree of coin groupings until no more coins can be used +# or remaining amount to be tendered is 0. +# +# +# +# 2020 colin crain +## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## + + + +unit sub MAIN ($S = 27, *@coins) ; + +# cfg +@coins = (2,5,10,25) if @coins.elems == 0; +@coins .= sort( { $^a <=> $^b } ); +my @solutions; + +# work +get_coin_groups($S); + +# out +print_output(@solutions); + +## ## ## ## ## + +sub get_coin_groups ($amt, @group = [], @bag = @coins) { + + ## base case, cashed out + $amt == 0 and return @solutions.push: @group; + + ## limit coin bag to those smaller or equal to the current amount + my @coin_bag = @bag.grep: { $_ <= $amt } ; + + ## edge case, cannot complete group with remaining coins + @coin_bag == 0 and return; + + for @coin_bag -> $coin { + ## limit coin bag to this coin or smaller than this coin + ## keeps groups ordered and disallows duplicate rearrangements + my @smaller_coin_bag = @bag.grep: { $_ <= $coin } ; + get_coin_groups( $amt - $coin, ( |@group, $coin ) , @smaller_coin_bag ); + } +} + +sub print_output ($output) { + my $count = $output.elems; + + say "Input:\n \@C = ", @coins; + say " \$S = $S\n"; + say "Output: $count"; + say $count == 1 + ?? "There is one possible way to make sum $S" + !! "There are $count ways to make sum $S"; + + + my @letter_prefixes = |('a'..'z'), |('aa'..'zz'); + say "\t", @letter_prefixes.shift, ') ', $_ for @solutions; + +} + + diff --git a/challenge-075/colin-crain/raku/ch-2.raku b/challenge-075/colin-crain/raku/ch-2.raku new file mode 100644 index 0000000000..589c0ed895 --- /dev/null +++ b/challenge-075/colin-crain/raku/ch-2.raku @@ -0,0 +1,130 @@ +#!/usr/bin/env perl6 +# +# +# 75_2_windows_wide_open.raku +# +# TASK #2 › Largest Rectangle Histogram +# Submitted by: Mohammad S Anwar +# You are given an array of positive numbers @A. +# +# Write a script to find the larget rectangle histogram created by the +# given array. +# +# BONUS: Try to print the histogram as shown in the example, if +# possible. +# +# Example 1: +# +# Input: @A = (2, 1, 4, 5, 3, 7) +# 7 # +# 6 # +# 5 # # +# 4 # # # +# 3 # # # # +# 2 # # # # # +# 1 # # # # # # +# _ _ _ _ _ _ _ +# 2 1 4 5 3 7 +# +# Looking at the above histogram, the largest rectangle (4 x 3) is +# formed by columns (4, 5, 3 and 7). +# +# Output: 12 +# +# Example 2: +# +# Input: @A = (3, 2, 3, 5, 7, 5) +# 7 # +# 6 # +# 5 # # # +# 4 # # # +# 3 # # # # # +# 2 # # # # # # +# 1 # # # # # # +# _ _ _ _ _ _ _ +# 3 2 3 5 7 5 +# Looking at the above histogram, the largest rectangle (3 x 5) is +# formed by columns (5, 7 and 5). +# +# Output: 15 +# +# +## ## ## ## ## +# +# method: +# The rectangular area under a range is defined by the minimum value +# within that range and the width of the span. +# +# So by looking at each range set within the bounds of the array, we +# can find the corresponding minimum; multiplying that by the width +# of the window gives us the area of the rectangle. +# +# We are asked to find the maximum rectangle, but if we wish to +# allow for multiple equal areas, outputting all values, we need +# to keep all the rectangle data and review it before reporting. We +# can keep everything in an array of arrays, with a structure for +# [Area, Start, End, Height] and descending sort by area. Take the +# max value and find any others matching; these will +# be the maximum rectangles. +# +# We will choose to not consider a single data point to be a proper +# rectangle, more like a line, so in altering the input of example +# number 2 to the list (3, 2, 3, 5, 7, 16), the result would still +# be 15, being the rectangle with height 5 over (5,7,16), rather +# than just the 16 value. It would be easy enough to fudge the +# iterators to make it work that way, but I consider it to be a +# degenerate and slightly boring case, overly sensitive to outliers +# and signal noise. Let's keep it interesting and say rectangles +# need at minimum width 2. +# +# array 6 14 17 1 20 7 15 5 10 19 16 13 +# +# rectangle found at: +# start index 4 +# end index 11 +# height 5 +# width 8 +# area 40 +# +# rectangle found at: +# start index 8 +# end index 11 +# height 10 +# width 4 +# area 40# +# +# +# 2020 colin crain +## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## + +unit sub MAIN () ; + +## cfg +my @A = (^24).pick(12); +my @windows; + +## work +for (^@A.elems).combinations(2) -> ($start, $end) { + my $min = @A[$start..$end].min; + @windows.push: ($min*($start..$end).elems, $start, $end, $min); +} + +my $max = @windows.max({$_[0]}); +my @largest = @windows.grep({ $_[0] == $max[0] }); + + +## out +say "array ", @A, "\n"; +for @largest -> @r { + my $width = @r[2]-@r[1]+1; + + say qq:to/__EOD__/; + rectangle found at: + start index @r[1] + end index @r[2] + height @r[3] + width $width + area @r[0] + __EOD__ +} + diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 7496e60422..cc661380bb 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,18 +1,208 @@ { + "chart" : { + "type" : "column" + }, + "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 + }, + "subtitle" : { + "text" : "[Champions: 34] Last updated at 2020-08-30 21:22:52 GMT" + }, + "series" : [ + { + "name" : "Perl Weekly Challenge - 075", + "data" : [ + { + "drilldown" : "Adam Russell", + "y" : 4, + "name" : "Adam Russell" + }, + { + "y" : 2, + "name" : "Alex Mauney", + "drilldown" : "Alex Mauney" + }, + { + "y" : 2, + "name" : "Alexander Pankoff", + "drilldown" : "Alexander Pankoff" + }, + { + "drilldown" : "Andrew Shitov", + "y" : 5, + "name" : "Andrew Shitov" + }, + { + "y" : 4, + "name" : "Athanasius", + "drilldown" : "Athanasius" + }, + { + "drilldown" : "Cheok-Yin Fung", + "y" : 4, + "name" : "Cheok-Yin Fung" + }, + { + "y" : 5, + "name" : "Colin Crain", + "drilldown" : "Colin Crain" + }, + { + "y" : 2, + "name" : "Dave Jacoby", + "drilldown" : "Dave Jacoby" + }, + { + "y" : 2, + "name" : "E. Choroba", + "drilldown" : "E. Choroba" + }, + { + "drilldown" : "James Smith", + "y" : 2, + "name" : "James Smith" + }, + { + "drilldown" : "Jan Krnavek", + "name" : "Jan Krnavek", + "y" : 2 + }, + { + "drilldown" : "Jason Messer", + "name" : "Jason Messer", + "y" : 2 + }, + { + "y" : 5, + "name" : "Javier Luque", + "drilldown" : "Javier Luque" + }, + { + "name" : "Jorg Sommrey", + "y" : 2, + "drilldown" : "Jorg Sommrey" + }, + { + "name" : "Laurent Rosenfeld", + "y" : 5, + "drilldown" : "Laurent Rosenfeld" + }, + { + "y" : 2, + "name" : "Lubos Kolouch", + "drilldown" : "Lubos Kolouch" + }, + { + "drilldown" : "Luca Ferrari", + "name" : "Luca Ferrari", + "y" : 4 + }, + { + "drilldown" : "Mark Anderson", + "name" : "Mark Anderson", + "y" : 2 + }, + { + "name" : "Markus Holzer", + "y" : 2, + "drilldown" : "Markus Holzer" + }, + { + "name" : "Mohammad S Anwar", + "y" : 7, + "drilldown" : "Mohammad S Anwar" + }, + { + "name" : "Myoungjin Jeon", + "y" : 4, + "drilldown" : "Myoungjin Jeon" + }, + { + "drilldown" : "Niels van Dijke", + "y" : 2, + "name" : "Niels van Dijke" + }, + { + "y" : 2, + "name" : "Noud Aldenhoven", + "drilldown" : "Noud Aldenhoven" + }, + { + "drilldown" : "Nuno Vieira", + "name" : "Nuno Vieira", + "y" : 2 + }, + { + "drilldown" : "Pete Houston", + "name" : "Pete Houston", + "y" : 2 + }, + { + "drilldown" : "Roger Bell_West", + "name" : "Roger Bell_West", + "y" : 5 + }, + { + "drilldown" : "Shahed Nooshmand", + "y" : 3, + "name" : "Shahed Nooshmand" + }, + { + "drilldown" : "Shawn Wagner", + "y" : 2, + "name" : "Shawn Wagner" + }, + { + "drilldown" : "Simon Green", + "name" : "Simon Green", + "y" : 3 + }, + { + "name" : "Simon Proctor", + "y" : 2, + "drilldown" : "Simon Proctor" + }, + { + "y" : 2, + "name" : "Ulrich Rieke", + "drilldown" : "Ulrich Rieke" + }, + { + "name" : "Walt Mankowski", + "y" : 3, + "drilldown" : "Walt Mankowski" + }, + { + "drilldown" : "Wanderdoc", + "name" : "Wanderdoc", + "y" : 2 + }, + { + "y" : 2, + "name" : "Yet Ebreo", + "drilldown" : "Yet Ebreo" + } + ], + "colorByPoint" : 1 + } + ], "plotOptions" : { "series" : { - "borderWidth" : 0, "dataLabels" : { "enabled" : 1, "format" : "{point.y}" - } + }, + "borderWidth" : 0 } }, "drilldown" : { "series" : [ { - "id" : "Adam Russell", - "name" : "Adam Russell", "data" : [ [ "Perl", @@ -22,29 +212,32 @@ "Blog", 2 ] - ] + ], + "id" : "Adam Russell", + "name" : "Adam Russell" }, { - "name" : "Alex Mauney", - "id" : "Alex Mauney", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "Alex Mauney", + "name" : "Alex Mauney" }, { - "id" : "Alexander Pankoff", "name" : "Alexander Pankoff", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "Alexander Pankoff" }, { + "name" : "Andrew Shitov", "data" : [ [ "Raku", @@ -55,12 +248,9 @@ 3 ] ], - "name" : "Andrew Shitov", "id" : "Andrew Shitov" }, { - "name" : "Athanasius", - "id" : "Athanasius", "data" : [ [ "Perl", @@ -70,11 +260,11 @@ "Raku", 2 ] - ] + ], + "id" : "Athanasius", + "name" : "Athanasius" }, { - "id" : "Cheok-Yin Fung", - "name" : "Cheok-Yin Fung", "data" : [ [ "Perl", @@ -84,27 +274,37 @@ "Blog", 2 ] - ] + ], + "id" : "Cheok-Yin Fung", + "name" : "Cheok-Yin Fung" }, { + "id" : "Colin Crain", "data" : [ [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ "Blog", 1 ] ], - "name" : "Colin Crain", - "id" : "Colin Crain" + "name" : "Colin Crain" }, { + "name" : "Dave Jacoby", "data" : [ [ "Perl", 2 ] ], - "id" : "Dave Jacoby", - "name" : "Dave Jacoby" + "id" : "Dave Jacoby" }, { "data" : [ @@ -117,28 +317,28 @@ "name" : "E. Choroba" }, { - "name" : "James Smith", "id" : "James Smith", "data" : [ [ "Perl", 2 ] - ] + ], + "name" : "James Smith" }, { + "id" : "Jan Krnavek", "data" : [ [ "Raku", 2 ] ], - "name" : "Jan Krnavek", - "id" : "Jan Krnavek" + "name" : "Jan Krnavek" }, { - "id" : "Jason Messer", "name" : "Jason Messer", + "id" : "Jason Messer", "data" : [ [ "Raku", @@ -148,7 +348,6 @@ }, { "name" : "Javier Luque", - "id" : "Javier Luque", "data" : [ [ "Perl", @@ -162,19 +361,21 @@ "Blog", 1 ] - ] + ], + "id" : "Javier Luque" }, { + "id" : "Jorg Sommrey", "data" : [ [ "Perl", 2 ] ], - "id" : "Jorg Sommrey", "name" : "Jorg Sommrey" }, { + "name" : "Laurent Rosenfeld", "data" : [ [ "Perl", @@ -189,20 +390,21 @@ 1 ] ], - "name" : "Laurent Rosenfeld", "id" : "Laurent Rosenfeld" }, { - "id" : "Lubos Kolouch", "name" : "Lubos Kolouch", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "Lubos Kolouch" }, { + "name" : "Luca Ferrari", + "id" : "Luca Ferrari", "data" : [ [ "Raku", @@ -212,19 +414,17 @@ "Blog", 2 ] - ], - "name" : "Luca Ferrari", - "id" : "Luca Ferrari" + ] }, { - "id" : "Mark Anderson", "name" : "Mark Anderson", "data" : [ [ "Raku", 2 ] - ] + ], + "id" : "Mark Anderson" }, { "data" : [ @@ -237,8 +437,6 @@ "name" : "Markus Holzer" }, { - "name" : "Mohammad S Anwar", - "id" : "Mohammad S Anwar", "data" : [ [ "Perl", @@ -252,11 +450,13 @@ "Blog", 3 ] - ] + ], + "id" : "Mohammad S Anwar", + "name" : "Mohammad S Anwar" }, { - "id" : "Myoungjin Jeon", "name" : "Myoungjin Jeon", + "id" : "Myoungjin Jeon", "data" : [ [ "Perl", @@ -269,44 +469,44 @@ ] }, { - "name" : "Niels van Dijke", - "id" : "Niels van Dijke", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "Niels van Dijke", + "name" : "Niels van Dijke" }, { - "id" : "Noud Aldenhoven", "name" : "Noud Aldenhoven", "data" : [ [ "Raku", 2 ] - ] + ], + "id" : "Noud Aldenhoven" }, { - "id" : "Nuno Vieira", - "name" : "Nuno Vieira", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "Nuno Vieira", + "name" : "Nuno Vieira" }, { "name" : "Pete Houston", - "id" : "Pete Houston", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "Pete Houston" }, { "data" : [ @@ -323,11 +523,10 @@ 1 ] ], - "name" : "Roger Bell_West", - "id" : "Roger Bell_West" + "id" : "Roger Bell_West", + "name" : "Roger Bell_West" }, { - "name" : "Shahed Nooshmand", "id" : "Shahed Nooshmand", "data" : [ [ @@ -338,21 +537,21 @@ "Blog", 1 ] - ] + ], + "name" : "Shahed Nooshmand" }, { + "name" : "Shawn Wagner", "data" : [ [ "Perl", 2 ] ], - "name" : "Shawn Wagner", "id" : "Shawn Wagner" }, { "id" : "Simon Green", - "name" : "Simon Green", "data" : [ [ "Perl", @@ -362,7 +561,8 @@ "Blog", 1 ] - ] + ], + "name" : "Simon Green" }, { "data" : [ @@ -375,17 +575,16 @@ "name" : "Simon Proctor" }, { + "name" : "Ulrich Rieke", "data" : [ [ "Perl", 2 ] ], - "id" : "Ulrich Rieke", - "name" : "Ulrich Rieke" + "id" : "Ulrich Rieke" |
