aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2024-02-13 01:29:34 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2024-02-13 01:29:34 +0000
commit94d2ed24dcd44638355ac7c5084e05d8b8ca9f41 (patch)
treec464d8b2de64858f820db20ffd1e4ca3989cca99
parent5f9ad3eb76b08a6e2adbae41552dbeb88d122485 (diff)
downloadperlweeklychallenge-club-94d2ed24dcd44638355ac7c5084e05d8b8ca9f41.tar.gz
perlweeklychallenge-club-94d2ed24dcd44638355ac7c5084e05d8b8ca9f41.tar.bz2
perlweeklychallenge-club-94d2ed24dcd44638355ac7c5084e05d8b8ca9f41.zip
- Added solutions by Eric Cheung.
- Added solutions by Ulrich Rieke. - Added solutions by Laurent Rosenfeld. - Added solutions by Ali Moradi. - Added solutions by Mark Anderson. - Added solutions by Niels van Dijke. - Added solutions by E. Choroba. - Added solutions by PokGoPun. - Added solutions by Stephen G Lynn. - Added solutions by Stevem Wilson. - Added solutions by Peter Campbell Smith. - Added solutions by Peter Meszaros. - Added solutions by Andrew Shitov. - Added solutions by Thomas Kohler. - Added solutions by Matthew Neleigh. - Added solutions by Arne Sommer.
-rwxr-xr-xchallenge-256/eric-cheung/python/ch-1.py8
-rwxr-xr-xchallenge-256/eric-cheung/python/ch-2.py17
-rw-r--r--challenge-256/laurent-rosenfeld/blog.txt1
-rw-r--r--challenge-256/laurent-rosenfeld/perl/ch-1.pl21
-rw-r--r--challenge-256/laurent-rosenfeld/raku/ch-1.raku15
-rwxr-xr-xchallenge-256/perlboy1967/perl/ch-1.pl (renamed from challenge-256/perlboy1967/perl/ch1.pl)0
-rwxr-xr-xchallenge-256/perlboy1967/perl/ch-2.pl (renamed from challenge-256/perlboy1967/perl/ch2.pl)0
-rwxr-xr-xchallenge-256/ulrich-rieke/cpp/ch-1.cpp40
-rwxr-xr-xchallenge-256/ulrich-rieke/cpp/ch-2.cpp52
-rwxr-xr-xchallenge-256/ulrich-rieke/haskell/ch-1.hs15
-rwxr-xr-xchallenge-256/ulrich-rieke/haskell/ch-2.hs11
-rwxr-xr-xchallenge-256/ulrich-rieke/perl/ch-1.pl24
-rwxr-xr-xchallenge-256/ulrich-rieke/perl/ch-2.pl39
-rwxr-xr-xchallenge-256/ulrich-rieke/raku/ch-1.raku8
-rwxr-xr-xchallenge-256/ulrich-rieke/raku/ch-2.raku24
-rwxr-xr-xchallenge-256/ulrich-rieke/rust/ch-1.rs33
-rwxr-xr-xchallenge-256/ulrich-rieke/rust/ch-2.rs33
-rw-r--r--stats/pwc-challenge-255.json669
-rw-r--r--stats/pwc-current.json626
-rw-r--r--stats/pwc-language-breakdown-summary.json68
-rw-r--r--stats/pwc-language-breakdown.json3311
-rw-r--r--stats/pwc-leaders.json794
-rw-r--r--stats/pwc-summary-1-30.json62
-rw-r--r--stats/pwc-summary-121-150.json50
-rw-r--r--stats/pwc-summary-151-180.json52
-rw-r--r--stats/pwc-summary-181-210.json46
-rw-r--r--stats/pwc-summary-211-240.json132
-rw-r--r--stats/pwc-summary-241-270.json58
-rw-r--r--stats/pwc-summary-271-300.json60
-rw-r--r--stats/pwc-summary-301-330.json78
-rw-r--r--stats/pwc-summary-31-60.json48
-rw-r--r--stats/pwc-summary-61-90.json50
-rw-r--r--stats/pwc-summary-91-120.json122
-rw-r--r--stats/pwc-summary.json80
34 files changed, 3647 insertions, 3000 deletions
diff --git a/challenge-256/eric-cheung/python/ch-1.py b/challenge-256/eric-cheung/python/ch-1.py
new file mode 100755
index 0000000000..7fad78fbe6
--- /dev/null
+++ b/challenge-256/eric-cheung/python/ch-1.py
@@ -0,0 +1,8 @@
+
+## arrWords = ["ab", "de", "ed", "bc"] ## Example 1
+## arrWords = ["aa", "ba", "cd", "ed"] ## Example 2
+arrWords = ["uv", "qp", "st", "vu", "mn", "pq"] ## Example 3
+
+arrOutput = [arrWords[nRowLoop] for nRowLoop in range(len(arrWords) - 1) for nColLoop in range(nRowLoop + 1, len(arrWords)) if arrWords[nRowLoop] == arrWords[nColLoop][::-1]]
+
+print (len(arrOutput))
diff --git a/challenge-256/eric-cheung/python/ch-2.py b/challenge-256/eric-cheung/python/ch-2.py
new file mode 100755
index 0000000000..ca9867af98
--- /dev/null
+++ b/challenge-256/eric-cheung/python/ch-2.py
@@ -0,0 +1,17 @@
+
+## Example 1
+## strIn_01 = "abcd"
+## strIn_02 = "1234"
+
+## Example 2
+## strIn_01 = "abc"
+## strIn_02 = "12345"
+
+## Example 3
+strIn_01 = "abcde"
+strIn_02 = "123"
+
+nMinLen = min(len(strIn_01), len(strIn_02))
+strOutput = "".join([strLoop_01 + strLoop_02 for strLoop_01, strLoop_02 in zip(strIn_01[:nMinLen], strIn_02[:nMinLen])]) + (strIn_01[nMinLen:] if len(strIn_01) > len(strIn_02) else strIn_02[nMinLen:] if len(strIn_02) > len(strIn_01) else "")
+
+print (strOutput)
diff --git a/challenge-256/laurent-rosenfeld/blog.txt b/challenge-256/laurent-rosenfeld/blog.txt
new file mode 100644
index 0000000000..f7e948cb8e
--- /dev/null
+++ b/challenge-256/laurent-rosenfeld/blog.txt
@@ -0,0 +1 @@
+https://blogs.perl.org/users/laurent_r/2024/02/perl-weekly-challenge-256-maximum-pairs.html
diff --git a/challenge-256/laurent-rosenfeld/perl/ch-1.pl b/challenge-256/laurent-rosenfeld/perl/ch-1.pl
new file mode 100644
index 0000000000..a6e07491fc
--- /dev/null
+++ b/challenge-256/laurent-rosenfeld/perl/ch-1.pl
@@ -0,0 +1,21 @@
+use strict;
+use warnings;
+use feature 'say';
+
+sub find_pairs {
+ my @in = @_;
+ my $nb_pairs = 0;
+ for my $i (0..$#in) {
+ for my $j ($i + 1 ..$#in) {
+ $nb_pairs++ if $in[$i] eq reverse $in[$j];
+ }
+ }
+ return $nb_pairs;
+}
+
+my @tests = ([<ab de ed bc>], [<aa ba cd ed>],
+ [<uv qp st vu mn pq>]);
+for my $test (@tests) {
+ printf "%-20s => ", "@$test";
+ say find_pairs @$test;
+}
diff --git a/challenge-256/laurent-rosenfeld/raku/ch-1.raku b/challenge-256/laurent-rosenfeld/raku/ch-1.raku
new file mode 100644
index 0000000000..92209aae8a
--- /dev/null
+++ b/challenge-256/laurent-rosenfeld/raku/ch-1.raku
@@ -0,0 +1,15 @@
+sub find-pairs (@in) {
+ my $nb-pairs = 0;
+ for 0..@in.end -> $i {
+ for $i^..@in.end -> $j {
+ $nb-pairs++ if @in[$i] eq @in[$j].flip;
+ }
+ }
+ return $nb-pairs;
+}
+
+my @tests = <ab de ed bc>, <aa ba cd ed>, <uv qp st vu mn pq> ;
+for @tests -> @test {
+ printf "%-20s => ", "@test[]";
+ say find-pairs @test;
+}
diff --git a/challenge-256/perlboy1967/perl/ch1.pl b/challenge-256/perlboy1967/perl/ch-1.pl
index e08c285dd4..e08c285dd4 100755
--- a/challenge-256/perlboy1967/perl/ch1.pl
+++ b/challenge-256/perlboy1967/perl/ch-1.pl
diff --git a/challenge-256/perlboy1967/perl/ch2.pl b/challenge-256/perlboy1967/perl/ch-2.pl
index 0d47872c79..0d47872c79 100755
--- a/challenge-256/perlboy1967/perl/ch2.pl
+++ b/challenge-256/perlboy1967/perl/ch-2.pl
diff --git a/challenge-256/ulrich-rieke/cpp/ch-1.cpp b/challenge-256/ulrich-rieke/cpp/ch-1.cpp
new file mode 100755
index 0000000000..3fe241b75b
--- /dev/null
+++ b/challenge-256/ulrich-rieke/cpp/ch-1.cpp
@@ -0,0 +1,40 @@
+#include <vector>
+#include <iostream>
+#include <set>
+#include <string>
+#include <algorithm>
+#include <iterator>
+
+std::vector<std::string> split( const std::string & startline ,
+ const std::string & sep ) {
+ std::vector<std::string> separated ;
+ std::string::size_type start { 0 } ;
+ std::string::size_type pos ;
+ do {
+ pos = startline.find_first_of( sep , start ) ;
+ separated.push_back( startline.substr(start , pos - start )) ;
+ start = pos + 1 ;
+ } while ( pos != std::string::npos ) ;
+ return separated ;
+}
+
+int main( ) {
+ std::cout << "Enter some strings, separated by blanks!\n" ;
+ std::string line ;
+ std::getline( std::cin , line ) ;
+ std::vector<std::string> words { split( line , " " ) } ;
+ std::set<std::string> ortho( words.begin( ) , words.end( ) ) ;
+ std::set<std::string> reversed ;
+ for ( auto w : words ) {
+ std::string for_reverse { w } ;
+ std::reverse( for_reverse.begin( ) , for_reverse.end( ) ) ;
+ reversed.insert( for_reverse ) ;
+ }
+ std::set<std::string> common ;
+ std::set_intersection( ortho.begin( ) , ortho.end( ) ,
+ reversed.begin( ) , reversed.end( ) , std::inserter( common ,
+ common.begin( ) ) ) ;
+ std::cout << common.size( ) / 2 << '\n' ;
+ return 0 ;
+}
+
diff --git a/challenge-256/ulrich-rieke/cpp/ch-2.cpp b/challenge-256/ulrich-rieke/cpp/ch-2.cpp
new file mode 100755
index 0000000000..a07ffad95a
--- /dev/null
+++ b/challenge-256/ulrich-rieke/cpp/ch-2.cpp
@@ -0,0 +1,52 @@
+#include <iostream>
+#include <vector>
+#include <string>
+#include <algorithm>
+
+std::vector<std::string> split( const std::string & startline ,
+ const std::string & sep ) {
+ std::vector<std::string> separated ;
+ std::string::size_type start { 0 } ;
+ std::string::size_type pos ;
+ do {
+ pos = startline.find_first_of( sep , start ) ;
+ separated.push_back( startline.substr(start , pos - start )) ;
+ start = pos + 1 ;
+ } while ( pos != std::string::npos ) ;
+ return separated ;
+}
+
+int main( ) {
+ std::cout << "Enter 2 strings, separated by blanks!\n" ;
+ std::string line ;
+ std::getline( std::cin , line ) ;
+ std::vector<std::string> words { split( line, " " ) } ;
+ std::string merged ;
+ int len1 = words[0].length( ) ;
+ int len2 = words[1].length( ) ;
+ if ( len1 != len2 ) {
+ int smaller = std::min( len1 , len2 ) ;
+ for ( int i = 0 ; i < smaller ; i++ ) {
+ merged += words[0].substr( i, 1 ) ;
+ merged += words[1].substr( i , 1 ) ;
+ }
+ if ( len1 > len2 ) {
+ for ( int i = smaller ; i < len1 ; i++ ) {
+ merged += words[0].substr( i , 1 ) ;
+ }
+ }
+ else {
+ for ( int i = smaller ; i < len2 ; i++ ) {
+ merged += words[1].substr( i , 1 ) ;
+ }
+ }
+ }
+ else {
+ for ( int i = 0 ; i < len1 ; i++ ) {
+ merged += words[0].substr( i , 1 ) ;
+ merged += words[1].substr( i , 1 ) ;
+ }
+ }
+ std::cout << merged << '\n' ;
+ return 0 ;
+}
diff --git a/challenge-256/ulrich-rieke/haskell/ch-1.hs b/challenge-256/ulrich-rieke/haskell/ch-1.hs
new file mode 100755
index 0000000000..1978eb07a0
--- /dev/null
+++ b/challenge-256/ulrich-rieke/haskell/ch-1.hs
@@ -0,0 +1,15 @@
+module Challenge256
+ where
+import qualified Data.Set as S
+
+solution :: [String] -> Int
+solution strings =
+ let ortho = S.fromList strings
+ reversed = S.fromList $ map reverse strings
+ in div ( S.size $ S.intersection ortho reversed ) 2
+
+main :: IO ( )
+main = do
+ putStrLn "Enter some strings, separated by blanks!"
+ line <- getLine
+ print $ solution $ words line
diff --git a/challenge-256/ulrich-rieke/haskell/ch-2.hs b/challenge-256/ulrich-rieke/haskell/ch-2.hs
new file mode 100755
index 0000000000..1405984f94
--- /dev/null
+++ b/challenge-256/ulrich-rieke/haskell/ch-2.hs
@@ -0,0 +1,11 @@
+module Challenge256_2
+ where
+
+solution :: String -> String -> String
+solution s1 s2 = (foldl1 ( ++ ) $ map (\p -> [fst p] ++ [snd p] ) common )
+ ++ drop ( length common ) longer
+ where
+ common :: [(Char, Char)]
+ common = zip s1 s2
+ longer :: String
+ longer = if ( length s1 > length s2 ) then s1 else s2
diff --git a/challenge-256/ulrich-rieke/perl/ch-1.pl b/challenge-256/ulrich-rieke/perl/ch-1.pl
new file mode 100755
index 0000000000..65de195461
--- /dev/null
+++ b/challenge-256/ulrich-rieke/perl/ch-1.pl
@@ -0,0 +1,24 @@
+use v5.36.0 ;
+
+say "Enter some words, separated by blanks!" ;
+my $line = <STDIN> ;
+chomp $line ;
+my @strings = split( /\s+/ , $line ) ;
+my @reversed = map { join( '' , reverse split( // , $_ ) ) } @strings ;
+my %ortho ;
+my %rev ;
+my %common ;
+for my $s ( @strings ) {
+ $ortho{$s}++ ;
+}
+for my $s ( @reversed ) {
+ $rev{ $s }++ ;
+}
+for my $s ( keys %ortho ) {
+ if ( exists( $rev{ $s } ) ) {
+ $common{$s}++ ;
+ }
+}
+say int (scalar( keys %common ) / 2 ) ;
+
+
diff --git a/challenge-256/ulrich-rieke/perl/ch-2.pl b/challenge-256/ulrich-rieke/perl/ch-2.pl
new file mode 100755
index 0000000000..0a73c190a4
--- /dev/null
+++ b/challenge-256/ulrich-rieke/perl/ch-2.pl
@@ -0,0 +1,39 @@
+use v5.36.0 ;
+
+say "Enter two words, separated by blanks!" ;
+my $line = <STDIN> ;
+chomp $line ;
+my ($firstString , $secondString) = split( /\s+/ , $line ) ;
+my $len1 = length $firstString ;
+my $len2 = length $secondString ;
+my $merged ;
+if ( $len1 != $len2 ) {
+ my $smaller ;
+ if ( $len1 < $len2 ) {
+ $smaller = $len1 ;
+ }
+ else {
+ $smaller = $len2 ;
+ }
+ for my $pos( 0..$smaller - 1 ) {
+ $merged .= (substr( $firstString, $pos , 1 ) . substr( $secondString ,
+ $pos , 1 )) ;
+ }
+ if ( $len1 > $len2 ) {
+ for my $pos( $smaller..$len1 - 1 ) {
+ $merged .= substr( $firstString , $pos , 1 ) ;
+ }
+ }
+ else {
+ for my $pos ( $smaller..$len2 - 1 ) {
+ $merged .= substr( $secondString, $pos , 1 ) ;
+ }
+ }
+}
+else {
+ for my $pos (0..$len1 - 1) {
+ $merged .= ( substr( $firstString, $pos , 1 ) . substr(
+ $secondString, $pos , 1 ) ) ;
+ }
+}
+say $merged ;
diff --git a/challenge-256/ulrich-rieke/raku/ch-1.raku b/challenge-256/ulrich-rieke/raku/ch-1.raku
new file mode 100755
index 0000000000..a486f6532c
--- /dev/null
+++ b/challenge-256/ulrich-rieke/raku/ch-1.raku
@@ -0,0 +1,8 @@
+use v6 ;
+
+say "Enter some words, separated by blanks!" ;
+my $line = $*IN.get ;
+my @strings = $line.words ;
+my @reversed = @strings.map( {$_.comb.reverse.join} ) ;
+my $common = @strings.Set (&) @reversed.Set ;
+say $common.keys.elems div 2 ;
diff --git a/challenge-256/ulrich-rieke/raku/ch-2.raku b/challenge-256/ulrich-rieke/raku/ch-2.raku
new file mode 100755
index 0000000000..5b1e0eb144
--- /dev/null
+++ b/challenge-256/ulrich-rieke/raku/ch-2.raku
@@ -0,0 +1,24 @@
+use v6 ;
+
+say "Enter two strings, separated by blanks!" ;
+my $line = $*IN.get ;
+my @strings = $line.words ;
+#create zip-wise combinations of letters of the two words, stopping
+#when the shorter of the 2 words runs out of characters
+my @merged = @strings[0].comb Z~ @strings[1].comb ;
+my $len1 = @strings[0].chars ;
+my $len2 = @strings[1].chars ;
+if ( $len1 != $len2 ) {
+ my $smaller = @merged.elems ;#character in the shorter of the two strings
+ if ( $len1 < $len2 ) {
+ for ($smaller..$len2 - 1 ) -> $pos { #add the remaining characters
+ @merged.push( @strings[1].substr( $pos , 1 ) ) ;
+ }
+ }
+ else {
+ for ($smaller..$len1 - 1 ) -> $pos { #add the remaining characters
+ @merged.push( @strings[0].substr( $pos , 1 ) ) ;
+ }
+ }
+}
+say @merged.join ;
diff --git a/challenge-256/ulrich-rieke/rust/ch-1.rs b/challenge-256/ulrich-rieke/rust/ch-1.rs
new file mode 100755
index 0000000000..64b552202b
--- /dev/null
+++ b/challenge-256/ulrich-rieke/rust/ch-1.rs
@@ -0,0 +1,33 @@
+use std::io ;
+use std::collections::HashSet ;
+
+//the principle of the solution is : create 2 sets of words, one orthodromic
+//and the other of the reversed words. The size of the intersection is the
+//number of pairs
+
+fn main() {
+ println!("Enter some words, separated by blanks!");
+ let mut inline : String = String::new( ) ;
+ io::stdin( ).read_line( &mut inline ).unwrap( ) ;
+ let entered_line : &str = &*inline ;
+ let strings : Vec<&str> = entered_line.split_whitespace( ).map( | s |
+ s.trim( ) ).collect( ) ;
+ let mut orthodromic : HashSet<String> = HashSet::new( ) ;
+ for s in &strings {
+ let ortho = s.to_string( ) ;
+ orthodromic.insert( ortho ) ;
+ }
+ let mut reversed : HashSet<String> = HashSet::new( ) ;
+ for w in &orthodromic {
+ let mut reverse_str : String = String::new( ) ;
+ let mut iter = w.chars( ).rev( ) ;
+ while let Some( c ) = iter.next( ) {
+ reverse_str.push( c ) ;
+ }
+ reversed.insert( reverse_str ) ;
+ }
+ let common : HashSet<_> = orthodromic.intersection( &reversed ).
+ collect( ) ;
+ println!("{}" , common.len( ) / 2 ) ; //we look at pairs, so we have
+ //to divide by 2
+}
diff --git a/challenge-256/ulrich-rieke/rust/ch-2.rs b/challenge-256/ulrich-rieke/rust/ch-2.rs
new file mode 100755
index 0000000000..22287d35b2
--- /dev/null
+++ b/challenge-256/ulrich-rieke/rust/ch-2.rs
@@ -0,0 +1,33 @@
+use std::io ;
+
+fn main() {
+ println!("Enter two strings, separated by blanks!");
+ let mut inline : String = String::new( ) ;
+ io::stdin( ).read_line( &mut inline ).unwrap( ) ;
+ let entered_line : &str = &*inline ;
+ let strings : Vec<&str> = entered_line.split_whitespace( ).map( | s |
+ s.trim( ) ).collect( ) ;
+ let mut merged : String = String::new( ) ;
+ let first_string : &str = strings[0] ;
+ let second_string : &str = strings[1] ;
+ first_string.chars( ).zip( second_string.chars( )).for_each( | p | {
+ merged.push( p.0 ) ;
+ merged.push( p.1 )
+ } ) ;
+ let len1 : usize = first_string.len( ) ;
+ let len2 : usize = second_string.len( ) ;
+ if len1 != len2 {
+ let smaller : usize = merged.len( ) / 2 ;
+ if len1 > len2 {
+ for i in smaller .. len1 {
+ merged.push( first_string.chars( ).nth( i ).unwrap( ) ) ;
+ }
+ }
+ else {
+ for i in smaller .. len2 {
+ merged.push( second_string.chars( ).nth( i ).unwrap( ) ) ;
+ }
+ }
+ }
+ println!("{:?}" , merged) ;
+}
diff --git a/stats/pwc-challenge-255.json b/stats/pwc-challenge-255.json
new file mode 100644
index 0000000000..7fc659ce11
--- /dev/null
+++ b/stats/pwc-challenge-255.json
@@ -0,0 +1,669 @@
+{
+ "series" : [
+ {
+ "colorByPoint" : 1,
+ "data" : [
+ {
+ "drilldown" : "Ali Moradi",
+ "y" : 3,
+ "name" : "Ali Moradi"
+ },
+ {
+ "drilldown" : "Arne Sommer",
+ "name" : "Arne Sommer",
+ "y" : 3
+ },
+ {
+ "y" : 4,
+ "name" : "Athanasius",
+ "drilldown" : "Athanasius"
+ },
+ {
+ "drilldown" : "BarrOff",
+ "name" : "BarrOff",
+ "y" : 3
+ },
+ {
+ "name" : "Bob Lied",
+ "y" : 3,
+ "drilldown" : "Bob Lied"
+ },
+ {
+ "drilldown" : "Bruce Gray",
+ "name" : "Bruce Gray",
+ "y" : 2
+ },
+ {
+ "drilldown" : "Cheok-Yin Fung",
+ "y" : 2,
+ "name" : "Cheok-Yin Fung"
+ },
+ {
+ "drilldown" : "Dave Jacoby",
+ "y" : 3,
+ "name" : "Dave Jacoby"
+ },
+ {
+ "drilldown" : "David Ferrone",
+ "name" : "David Ferrone",
+ "y" : 2
+ },
+ {
+ "drilldown" : "E. Choroba",
+ "name" : "E. Choroba",
+ "y" : 2
+ },
+ {
+ "drilldown" : "Jaldhar H. Vyas",
+ "name" : "Jaldhar H. Vyas",
+ "y" : 5
+ },
+ {
+ "y" : 2,
+ "name" : "Jan Krnavek",
+ "drilldown" : "Jan Krnavek"
+ },
+ {
+ "drilldown" : "Jorg Sommrey",
+ "y" : 3,
+ "name" : "Jorg Sommrey"
+ },
+ {
+ "drilldown" : "Kjetil Skotheim",
+ "y" : 2,
+ "name" : "Kjetil Skotheim"
+ },
+ {
+ "y" : 6,
+ "name" : "Laurent Rosenfeld",
+ "drilldown" : "Laurent Rosenfeld"
+ },
+ {
+ "name" : "Lubos Kolouch",
+ "y" : 4,
+ "drilldown" : "Lubos Kolouch"
+ },
+ {
+ "drilldown" : "Luca Ferrari",
+ "name" : "Luca Ferrari",
+ "y" : 11
+ },
+ {
+ "y" : 2,
+ "name" : "Mariano Spadaccini",
+ "drilldown" : "Mariano Spadaccini"
+ },
+ {
+ "drilldown" : "Mark Anderson",
+ "y" : 2,
+ "name" : "Mark Anderson"
+ },
+ {
+ "drilldown" : "Matthew Neleigh",
+ "y" : 2,
+ "name" : "Matthew Neleigh"
+ },
+ {
+ "drilldown" : "Nelo Tovar",
+ "y" : 2,
+ "name" : "Nelo Tovar"
+ },
+ {
+ "drilldown" : "Niels van Dijke",
+ "y" : 2,
+ "name" : "Niels van Dijke"
+ },
+ {
+ "drilldown" : "Packy Anderson",
+ "name" : "Packy Anderson",
+ "y" : 5
+ },
+ {
+ "drilldown" : "Peter Campbell Smith",
+ "name" : "Peter Campbell Smith",
+ "y" : 3
+ },
+ {
+ "y" : 2,
+ "name" : "Peter Meszaros",
+ "drilldown" : "Peter Meszaros"
+ },
+ {
+ "y" : 3,
+ "name" : "Robbie Hatley",
+ "drilldown" : "Robbie Hatley"
+ },
+ {
+ "y" : 2,
+ "name" : "Robert Ransbottom",
+ "drilldown" : "Robert Ransbottom"
+ },
+ {
+ "drilldown" : "Roger Bell_West",
+ "name" : "Roger Bell_West",
+ "y" : 5
+ },
+ {
+ "drilldown" : "Simon Green",
+ "y" : 3,
+ "name" : "Simon Green"
+ },
+ {
+ "drilldown" : "Simon Proctor",
+ "y" : 2,
+ "name" : "Simon Proctor"
+ },
+ {
+ "name" : "Stephen G. Lynn",
+ "y" : 3,
+ "drilldown" : "Stephen G. Lynn"
+ },
+ {
+ "drilldown" : "Thomas Kohler",
+ "name" : "Thomas Kohler",
+ "y" : 4
+ },
+ {
+ "drilldown" : "Ulrich Rieke",
+ "name" : "Ulrich Rieke",
+ "y" : 4
+ },
+ {
+ "drilldown" : "W. Luis Mochan",
+ "y" : 3,
+ "name" : "W. Luis Mochan"
+ },
+ {
+ "drilldown" : "Wanderdoc",
+ "name" : "Wanderdoc",
+ "y" : 2
+ }
+ ],
+ "name" : "The Weekly Challenge - 255"
+ }
+ ],
+ "drilldown" : {
+ "series" : [
+ {
+ "name" : "Ali Moradi",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Ali Moradi"
+ },
+ {
+ "data" : [
+ [
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "name" : "Arne Sommer",
+ "id" : "Arne Sommer"
+ },
+ {
+ "name" : "Athanasius",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 2
+ ]
+ ],
+ "id" : "Athanasius"
+ },
+ {
+ "id" : "BarrOff",
+ "name" : "BarrOff",
+ "data" : [
+ [
+ "Perl",
+ 1
+ ],
+ [
+ "Raku",
+ 2
+ ]
+ ]
+ },
+ {
+ "name" : "Bob Lied",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Bob Lied"
+ },
+ {
+ "name" : "Bruce Gray",
+ "data" : [
+ [
+ "Raku",
+ 2
+ ]
+ ],
+ "id" : "Bruce Gray"
+ },
+ {
+ "id" : "Cheok-Yin Fung",
+ "name" : "Cheok-Yin Fung",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ]
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "name" : "Dave Jacoby",
+ "id" : "Dave Jacoby"
+ },
+ {
+ "name" : "David Ferrone",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "David Ferrone"
+ },
+ {
+ "id" : "E. Choroba",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "name" : "E. Choroba"
+ },
+ {
+ "id" : "Jaldhar H. Vyas",
+ "name" : "Jaldhar H. Vyas",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ]
+ },
+ {
+ "name" : "Jan Krnavek",
+ "data" : [
+ [
+ "Raku",
+ 2
+ ]
+ ],
+ "id" : "Jan Krnavek"
+ },
+ {
+ "name" : "Jorg Sommrey",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Jorg Sommrey"
+ },
+ {
+ "id" : "Kjetil Skotheim",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]<