aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <mohammad.anwar@yahoo.com>2025-11-18 10:16:58 +0000
committerMohammad Sajid Anwar <mohammad.anwar@yahoo.com>2025-11-18 10:16:58 +0000
commit25572447da12014ff4f20d22dcc3260e8a906f99 (patch)
treea1d36f2bc9a7df09a928792e4009ad7559c0cab3
parent544648414e896c492fe390f115a5f0a5bba61bc0 (diff)
downloadperlweeklychallenge-club-25572447da12014ff4f20d22dcc3260e8a906f99.tar.gz
perlweeklychallenge-club-25572447da12014ff4f20d22dcc3260e8a906f99.tar.bz2
perlweeklychallenge-club-25572447da12014ff4f20d22dcc3260e8a906f99.zip
- Added solutions by Eric Cheung.
- Added solutions by Ulrich Rieke. - Added solutions by David Ferrone. - Added solutions by Mark Anderson. - Added solutions by Peter Meszaros. - Added solutions by Andreas Mahnke. - Added solutions by PokGoPun. - Added solutions by Benjamin Andre. - Added solutions by Ali Moradi. - Added solutions by E. Choroba. - Added solutions by Niels van Dijke. - Added solutions by W. Luis Mochan. - Added solutions by Matthew Neleigh. - Added solutions by Thomas Kohler. - Added solutions by Athanasius.
-rwxr-xr-xchallenge-348/eric-cheung/python/ch-1.py15
-rwxr-xr-xchallenge-348/eric-cheung/python/ch-2.py39
-rwxr-xr-xchallenge-348/perlboy1967/perl/ch-1.pl (renamed from challenge-348/perlboy1967/perl/ch1.pl)0
-rwxr-xr-xchallenge-348/perlboy1967/perl/ch-2.pl (renamed from challenge-348/perlboy1967/perl/ch2.pl)0
-rwxr-xr-xchallenge-348/ulrich-rieke/cpp/ch-1.cpp29
-rwxr-xr-xchallenge-348/ulrich-rieke/cpp/ch-2.cpp38
-rwxr-xr-xchallenge-348/ulrich-rieke/haskell/ch-1.hs23
-rwxr-xr-xchallenge-348/ulrich-rieke/haskell/ch-2.hs34
-rwxr-xr-xchallenge-348/ulrich-rieke/perl/ch-1.pl35
-rwxr-xr-xchallenge-348/ulrich-rieke/perl/ch-2.pl33
-rwxr-xr-xchallenge-348/ulrich-rieke/python/ch-1.py19
-rwxr-xr-xchallenge-348/ulrich-rieke/python/ch-2.py16
-rwxr-xr-xchallenge-348/ulrich-rieke/raku/ch-1.raku16
-rwxr-xr-xchallenge-348/ulrich-rieke/raku/ch-2.raku29
-rwxr-xr-xchallenge-348/ulrich-rieke/rust/ch-1.rs26
-rwxr-xr-xchallenge-348/ulrich-rieke/rust/ch-2.rs28
-rw-r--r--stats/pwc-challenge-347.json548
-rw-r--r--stats/pwc-current.json306
-rw-r--r--stats/pwc-language-breakdown-2019.json2
-rw-r--r--stats/pwc-language-breakdown-2020.json2
-rw-r--r--stats/pwc-language-breakdown-2021.json2
-rw-r--r--stats/pwc-language-breakdown-2022.json2
-rw-r--r--stats/pwc-language-breakdown-2023.json2
-rw-r--r--stats/pwc-language-breakdown-2024.json2
-rw-r--r--stats/pwc-language-breakdown-2025.json25
-rw-r--r--stats/pwc-language-breakdown-summary.json8
-rw-r--r--stats/pwc-leaders.json56
-rw-r--r--stats/pwc-summary-1-30.json8
-rw-r--r--stats/pwc-summary-121-150.json2
-rw-r--r--stats/pwc-summary-151-180.json4
-rw-r--r--stats/pwc-summary-181-210.json6
-rw-r--r--stats/pwc-summary-211-240.json4
-rw-r--r--stats/pwc-summary-241-270.json2
-rw-r--r--stats/pwc-summary-271-300.json6
-rw-r--r--stats/pwc-summary-301-330.json10
-rw-r--r--stats/pwc-summary-31-60.json6
-rw-r--r--stats/pwc-summary-61-90.json6
-rw-r--r--stats/pwc-summary-91-120.json2
-rw-r--r--stats/pwc-summary.json36
-rw-r--r--stats/pwc-yearly-language-summary.json10
40 files changed, 1044 insertions, 393 deletions
diff --git a/challenge-348/eric-cheung/python/ch-1.py b/challenge-348/eric-cheung/python/ch-1.py
new file mode 100755
index 0000000000..4848b52c72
--- /dev/null
+++ b/challenge-348/eric-cheung/python/ch-1.py
@@ -0,0 +1,15 @@
+
+## strInput = "textbook" ## Example 1
+## strInput = "book" ## Example 2
+## strInput = "AbCdEfGh" ## Example 3
+## strInput = "rhythmmyth" ## Example 4
+strInput = "UmpireeAudio" ## Example 5
+
+arrVowel = ["a", "e", "i", "o", "u"]
+
+nLen = int(len(strInput) / 2)
+
+nVowel_01 = len([charLoop for charLoop in strInput[:nLen].lower() if charLoop in arrVowel])
+nVowel_02 = len([charLoop for charLoop in strInput[nLen:].lower() if charLoop in arrVowel])
+
+print (nVowel_01 == nVowel_02 and nVowel_01 > 0)
diff --git a/challenge-348/eric-cheung/python/ch-2.py b/challenge-348/eric-cheung/python/ch-2.py
new file mode 100755
index 0000000000..5f2d6f9969
--- /dev/null
+++ b/challenge-348/eric-cheung/python/ch-2.py
@@ -0,0 +1,39 @@
+
+from datetime import datetime, timedelta
+
+## Example 1
+## strSource = "02:30"
+## strTarget = "02:45"
+
+## Example 2
+## strSource = "11:55"
+## strTarget = "12:15"
+
+## Example 3
+## strSource = "09:00"
+## strTarget = "13:00"
+
+## Example 4
+## strSource = "23:45"
+## strTarget = "00:30"
+
+## Example 5
+strSource = "14:20"
+strTarget = "15:25"
+
+arrMin = [60, 15, 5, 1]
+strTimeFormat = "%H:%M"
+
+nDayAdd = (1 if strSource > strTarget else 0)
+
+objSource = datetime.strptime(strSource, strTimeFormat)
+objTarget = datetime.strptime(strTarget, strTimeFormat) + timedelta(days = nDayAdd)
+
+nMinDiff = int((objTarget - objSource).total_seconds() / 60)
+nOperation = 0
+
+for nMinLoop in arrMin:
+ nOperation = nOperation + int(nMinDiff / nMinLoop)
+ nMinDiff = nMinDiff - int(nMinDiff / nMinLoop) * nMinLoop
+
+print (nOperation)
diff --git a/challenge-348/perlboy1967/perl/ch1.pl b/challenge-348/perlboy1967/perl/ch-1.pl
index 9ec38e6739..9ec38e6739 100755
--- a/challenge-348/perlboy1967/perl/ch1.pl
+++ b/challenge-348/perlboy1967/perl/ch-1.pl
diff --git a/challenge-348/perlboy1967/perl/ch2.pl b/challenge-348/perlboy1967/perl/ch-2.pl
index 53b83e6eb5..53b83e6eb5 100755
--- a/challenge-348/perlboy1967/perl/ch2.pl
+++ b/challenge-348/perlboy1967/perl/ch-2.pl
diff --git a/challenge-348/ulrich-rieke/cpp/ch-1.cpp b/challenge-348/ulrich-rieke/cpp/ch-1.cpp
new file mode 100755
index 0000000000..e36d1ba792
--- /dev/null
+++ b/challenge-348/ulrich-rieke/cpp/ch-1.cpp
@@ -0,0 +1,29 @@
+#include <string>
+#include <iostream>
+
+bool solution( const std::string & word ) {
+ static std::string vowels {"aAeEiIoOuU"} ;
+ int len = static_cast<int>( word.length( ) ) ;
+ int firstvowels = 0 ;
+ int secondvowels = 0 ;
+ for ( char d : word.substr( 0 , len / 2 )) {
+ if ( vowels.find( d ) != std::string::npos ) {
+ firstvowels++ ;
+ }
+ }
+ for ( char d : word.substr( len / 2 )) {
+ if ( vowels.find( d ) != std::string::npos ) {
+ secondvowels++ ;
+ }
+ }
+ return firstvowels == secondvowels ;
+}
+
+int main( ) {
+ std::cout << std::boolalpha << solution( "textbook" ) << '\n' ;
+ std::cout << std::boolalpha << solution( "book" ) << '\n' ;
+ std::cout << std::boolalpha << solution( "AbCdEfGh" ) << '\n' ;
+ std::cout << std::boolalpha << solution( "rhythmmyth" ) << '\n' ;
+ std::cout << std::boolalpha << solution( "UmpireeAudio" ) << '\n' ;
+ return 0 ;
+}
diff --git a/challenge-348/ulrich-rieke/cpp/ch-2.cpp b/challenge-348/ulrich-rieke/cpp/ch-2.cpp
new file mode 100755
index 0000000000..597b2e84a7
--- /dev/null
+++ b/challenge-348/ulrich-rieke/cpp/ch-2.cpp
@@ -0,0 +1,38 @@
+#include <iostream>
+#include <string>
+#include <vector>
+#include <algorithm>
+#include <numeric>
+
+int main( ) {
+ std::cout << "Enter a source time!\n" ;
+ std::string source , target ;
+ std::cin >> source ;
+ std::cout << "Enter a target time!\n" ;
+ std::cin >> target ;
+ int sourcehours { std::stoi( source.substr( 0 , 2 )) } ;
+ int sourceminutes { std::stoi( source.substr( 3 ) ) } ;
+ int targethours { std::stoi( target.substr( 0 , 2 ) ) } ;
+ int targetminutes { std::stoi( target.substr( 3 ) ) } ;
+ if ( targethours < sourcehours ) {
+ targethours += 24 ;
+ }
+ std::vector<int> ops { 1 , 5 , 15 , 60 } ;
+ int diffminutes = targethours * 60 + targetminutes - ( sourcehours *
+ 60 + sourceminutes ) ;
+ std::vector<int> operations ;
+ while ( diffminutes != 0 ) {
+ std::vector<int> smaller ;
+ for ( auto n : ops ) {
+ if ( n <= diffminutes ) {
+ smaller.push_back( n ) ;
+ }
+ }
+ int divisor = *std::max_element( smaller.begin( ) , smaller.end( )) ;
+ operations.push_back( diffminutes / divisor ) ;
+ diffminutes -= divisor * operations.back( ) ;
+ }
+ std::cout << std::accumulate( operations.begin( ) , operations.end( ) , 0 )
+ << '\n' ;
+ return 0 ;
+}
diff --git a/challenge-348/ulrich-rieke/haskell/ch-1.hs b/challenge-348/ulrich-rieke/haskell/ch-1.hs
new file mode 100755
index 0000000000..1ad5f80b08
--- /dev/null
+++ b/challenge-348/ulrich-rieke/haskell/ch-1.hs
@@ -0,0 +1,23 @@
+module Challenge348
+ where
+
+solution :: String -> Bool
+solution str = (length $ filter ( flip elem vowels ) firsthalf) == (length $ filter
+ ( flip elem vowels ) secondhalf )
+ where
+ vowels :: [Char]
+ vowels = "aAeEiIoOuU"
+ l :: Int
+ l = length str
+ firsthalf :: String
+ firsthalf = take ( div l 2 ) str
+ secondhalf :: String
+ secondhalf = drop ( div l 2 ) str
+
+main :: IO ( )
+main = do
+ print $ solution "textbook"
+ print $ solution "book"
+ print $ solution "AbCdEfGh"
+ print $ solution "rhythmmyth"
+ print $ solution "UmpireeAudio"
diff --git a/challenge-348/ulrich-rieke/haskell/ch-2.hs b/challenge-348/ulrich-rieke/haskell/ch-2.hs
new file mode 100755
index 0000000000..5d89fd94a5
--- /dev/null
+++ b/challenge-348/ulrich-rieke/haskell/ch-2.hs
@@ -0,0 +1,34 @@
+module Challenge348_2
+ where
+import Data.List ( sort )
+
+ops :: [Int]
+ops = [1 , 5 , 15 , 60]
+
+findDiffMinutes :: String -> String -> Int
+findDiffMinutes source target =
+ let sourcehours = read $ take 2 source
+ sourceminutes = read $ take 2 $ drop 3 source
+ targethours = read $ take 2 target
+ targetminutes = read $ take 2 $ drop 3 target
+ in if targethours < sourcehours then ( targethours + 24 ) * 60 + targetminutes
+ - ( sourcehours * 60 + sourceminutes ) else targethours * 60 + targetminutes
+ - ( sourcehours * 60 + sourceminutes )
+
+findOps :: Int -> Int
+findOps diffMinutes = head $ sort $ map sumTuple $ [(a , b , c , d) | a <- [0..
+ diffMinutes] , b <- [0..div diffMinutes 5] , c <- [0..div diffMinutes 15] , d <-
+ [0..div diffMinutes 60] , a * 1 + b * 5 + c * 15 + d * 60 == diffMinutes]
+ where
+ sumTuple :: (Int , Int , Int , Int ) -> Int
+ sumTuple ( a , b , c , d) = a + b + c + d
+
+main :: IO ( )
+main = do
+ putStrLn "Enter a source time!"
+ sourcetime <- getLine
+ putStrLn "Enter a target time!"
+ targettime <- getLine
+ let diffMinutes = findDiffMinutes sourcetime targettime
+ print $ findOps diffMinutes
+
diff --git a/challenge-348/ulrich-rieke/perl/ch-1.pl b/challenge-348/ulrich-rieke/perl/ch-1.pl
new file mode 100755
index 0000000000..86aea99827
--- /dev/null
+++ b/challenge-348/ulrich-rieke/perl/ch-1.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+
+sub solution {
+ my $word = shift ;
+ my $vowels = "AaeEiIoOuU" ;
+ my $firstvowels = 0 ;
+ my $secondvowels = 0 ;
+ my $len = length $word ;
+ for my $c( split( // , substr( $word , 0 , $len / 2 ))) {
+ if ( index($vowels , $c) != -1 ) {
+ $firstvowels++ ;
+ }
+ }
+ for my $c ( split( // , substr( $word , $len / 2 ))) {
+ if ( index( $vowels , $c ) != -1 ) {
+ $secondvowels++ ;
+ }
+ }
+ if ( $firstvowels == $secondvowels ) {
+ return "true" ;
+ }
+ else {
+ return "false" ;
+ }
+}
+say solution("textbook") ;
+say solution( "book" ) ;
+say solution( "AbCdEfGh" ) ;
+say solution( "rhythmmyth" ) ;
+say solution( "UmpireeAudio" ) ;
+
+
diff --git a/challenge-348/ulrich-rieke/perl/ch-2.pl b/challenge-348/ulrich-rieke/perl/ch-2.pl
new file mode 100755
index 0000000000..41cdcaaf87
--- /dev/null
+++ b/challenge-348/ulrich-rieke/perl/ch-2.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+use List::Util qw ( max sum) ;
+
+say "Enter a source time!" ;
+my $source = <STDIN> ;
+chomp $source ;
+say "Enter a target time!" ;
+my $target = <STDIN> ;
+chomp $target ;
+my ( $sourcehours , $sourceminutes , $targethours , $targetminutes ) ;
+if ( $source =~ /(\d{2}):(\d{2})/ ) {
+ ($sourcehours , $sourceminutes ) = ( $1 , $2 ) ;
+}
+if ( $target =~ /(\d{2})\:(\d{2})/ ) {
+ ( $targethours , $targetminutes ) = ($1 , $2 ) ;
+}
+if ( $targethours < $sourcehours ) {
+ $targethours += 24 ;
+}
+my @ops = (1 , 5 , 15 , 60 ) ;
+my @operations ;
+my $diffminutes = $targethours * 60 + $targetminutes - ( $sourcehours * 60
+ + $sourceminutes ) ;
+while ( $diffminutes != 0 ) {
+ my @smaller = grep { $_ <= $diffminutes } @ops ;
+ my $divisor = max( @smaller ) ;
+ push( @operations , int( $diffminutes / $divisor ) ) ;
+ $diffminutes -= $divisor * $operations[-1] ;
+}
+say sum( @operations ) ;
diff --git a/challenge-348/ulrich-rieke/python/ch-1.py b/challenge-348/ulrich-rieke/python/ch-1.py
new file mode 100755
index 0000000000..387ef11229
--- /dev/null
+++ b/challenge-348/ulrich-rieke/python/ch-1.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+def solution(word):
+ vowels = "aAeEiIoOuU"
+ leng = len( word )
+ firstvowels = 0
+ secondvowels = 0
+ for c in word[0:leng // 2 ]:
+ if c in vowels:
+ firstvowels += 1
+ for d in word[leng // 2:]:
+ if d in vowels:
+ secondvowels += 1
+ return firstvowels == secondvowels
+
+print( solution("textbook"))
+print( solution("book"))
+print( solution("AbCdEfGh"))
+print( solution("rhythmmyth"))
+print( solution("UmpireeAudio"))
diff --git a/challenge-348/ulrich-rieke/python/ch-2.py b/challenge-348/ulrich-rieke/python/ch-2.py
new file mode 100755
index 0000000000..82d140d9da
--- /dev/null
+++ b/challenge-348/ulrich-rieke/python/ch-2.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python3
+source = input("Enter a source time!\n")
+target = input( "Enter a target time!\n")
+(sourcehours , sourceminutes) = (int( source[0:2] ) , int(source[3:]))
+(targethours , targetminutes ) = (int( target[0:2] ) , int( target[3:] ))
+if targethours < sourcehours:
+ targethours += 24
+ops = [1 , 5 , 15 , 60]
+diffminutes = targethours * 60 + targetminutes - ( sourcehours * 60 + sourceminutes )
+operations = []
+while diffminutes != 0:
+ selected = [x for x in ops if x <= diffminutes]
+ divisor = max ( selected )
+ operations.append( diffminutes // divisor )
+ diffminutes -= divisor * operations[-1]
+print( sum( operations ) )
diff --git a/challenge-348/ulrich-rieke/raku/ch-1.raku b/challenge-348/ulrich-rieke/raku/ch-1.raku
new file mode 100755
index 0000000000..afb3ebd820
--- /dev/null
+++ b/challenge-348/ulrich-rieke/raku/ch-1.raku
@@ -0,0 +1,16 @@
+use v6 ;
+
+sub solution( $word ) {
+ my $vowels = "aAeEiIoOuU".comb.Set ;
+ my $len = $word.chars ;
+ my $firstvowels = $word.substr(0 , $len div 2).comb.grep( {$_ (elem) $vowels} ).
+ elems ;
+ my $secondvowels = $word.substr( $len div 2 ).comb.grep( {$_ (elem) $vowels} ).
+ elems ;
+ return $firstvowels == $secondvowels ;
+}
+say( solution( "textbook" )) ;
+say( solution( "book" ) ) ;
+say( solution( "AbCdEfGh" )) ;
+say( solution( "rhythmmyth" )) ;
+say( solution ( "UmpireeAudio" ) ) ;
diff --git a/challenge-348/ulrich-rieke/raku/ch-2.raku b/challenge-348/ulrich-rieke/raku/ch-2.raku
new file mode 100755
index 0000000000..ab19256f91
--- /dev/null
+++ b/challenge-348/ulrich-rieke/raku/ch-2.raku
@@ -0,0 +1,29 @@
+use v6 ;
+
+say "Enter a source time!" ;
+my $source = $*IN.get ;
+say "Enter a target time!" ;
+my $target = $*IN.get ;
+my @ops = (1 , 5 , 15 , 60 ) ;
+my ( $sourcehours , $sourceminutes , $targethours , $targetminutes ) ;
+if ( $source ~~ /(\d ** 2) ':' (\d ** 2 )/) {
+ ($sourcehours , $sourceminutes ) = ( +$0 , +$1 ) ;
+}
+if ( $target ~~ /(\d ** 2) ':' (\d ** 2)/ ) {
+ ($targethours , $targetminutes ) = ( +$0 , +$1 ) ;
+}
+if ( $targethours < $sourcehours ) {
+ $targethours += 24 ;
+}
+my $diffminutes = $targethours * 60 + $targetminutes - ( $sourcehours * 60
+ + $sourceminutes ) ;
+my @operations ;
+while ( $diffminutes != 0 ) {
+ my @smaller = @ops.grep( { $_ <= $diffminutes } ) ;
+ my $divisor = @smaller.max ;
+ @operations.push( $diffminutes div $divisor ) ;
+ $diffminutes -= $divisor * @operations[*-1] ;
+}
+say [+] @operations ;
+
+
diff --git a/challenge-348/ulrich-rieke/rust/ch-1.rs b/challenge-348/ulrich-rieke/rust/ch-1.rs
new file mode 100755
index 0000000000..b31397c981
--- /dev/null
+++ b/challenge-348/ulrich-rieke/rust/ch-1.rs
@@ -0,0 +1,26 @@
+fn find_solution( word : &str ) -> bool {
+ let vowels : Vec<char> = vec!['A' , 'a' , 'E' , 'e' , 'I' , 'i' , 'O' , 'o' ,
+ 'U' , 'u'] ;
+ let mut first_vowels : usize = 0 ;
+ let mut second_vowels : usize = 0 ;
+ let len : usize = word.chars( ).count( ) ;
+ for c in word.chars( ).take( len / 2 ) {
+ if vowels.contains( &c ) {
+ first_vowels += 1 ;
+ }
+ }
+ for c in word.chars( ).skip( len / 2 ).take( len / 2) {
+ if vowels.contains( &c ) {
+ second_vowels += 1 ;
+ }
+ }
+ first_vowels == second_vowels
+}
+
+fn main() {
+ println!("{}" , find_solution( "textbook"));
+ println!("{}" , find_solution( "book" ) ) ;
+ println!("{}" , find_solution( "AbCdEfGh" )) ;
+ println!("{}" , find_solution( "rhythmmyth" )) ;
+ println!("{}" , find_solution( "UmpireeAudio" ) ) ;
+}
diff --git a/challenge-348/ulrich-rieke/rust/ch-2.rs b/challenge-348/ulrich-rieke/rust/ch-2.rs
new file mode 100755
index 0000000000..52473cf0b4
--- /dev/null
+++ b/challenge-348/ulrich-rieke/rust/ch-2.rs
@@ -0,0 +1,28 @@
+use std::io ;
+
+fn main() {
+ println!("Enter a source time!");
+ let mut source : String = String::new( ) ;
+ io::stdin( ).read_line( &mut source ).unwrap( ) ;
+ println!("Enter a target time!") ;
+ let mut target : String = String::new( ) ;
+ io::stdin( ).read_line( &mut target ).unwrap( ) ;
+ let dividers : Vec<u32> = vec![1 , 5 , 15 , 60] ;
+ let starthours : u32 = source[0..2].parse::<u32>( ).unwrap( ) ;
+ let startminutes : u32 = source[3..=4].parse::<u32>( ).unwrap( ) ;
+ let mut targethours : u32 = target[0..2].parse::<u32>( ).unwrap( ) ;
+ let targetminutes : u32 = target[3..=4].parse::<u32>( ).unwrap( ) ;
+ if targethours < starthours {
+ targethours += 24 ;
+ }
+ let mut diff_minutes : u32 = targethours * 60 + targetminutes - (
+ starthours * 60 + startminutes ) ;
+ let mut operations : Vec<u32> = Vec::new( ) ;
+ while diff_minutes != 0 {
+ let divisor : u32 = *dividers.iter( ).filter( |&n| *n <=
+ diff_minutes ).max( ).unwrap( ) ;
+ operations.push( diff_minutes / divisor ) ;
+ diff_minutes -= divisor * operations[operations.len( ) - 1] ;
+ }
+ println!("{}" , operations.into_iter( ).sum::<u32>( ) ) ;
+}
diff --git a/stats/pwc-challenge-347.json b/stats/pwc-challenge-347.json
new file mode 100644
index 0000000000..36480b48d7
--- /dev/null
+++ b/stats/pwc-challenge-347.json
@@ -0,0 +1,548 @@
+{
+ "chart" : {
+ "type" : "column"
+ },
+ "drilldown" : {
+ "series" : [
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Ali Moradi",
+ "name" : "Ali Moradi"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "Andreas Mahnke",
+ "name" : "Andreas Mahnke"
+ },
+ {
+ "data" : [
+ [
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Arne Sommer",
+ "name" : "Arne Sommer"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 2
+ ]
+ ],
+ "id" : "Athanasius",
+ "name" : "Athanasius"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "Bob Lied",
+ "name" : "Bob Lied"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "David Ferrone",
+ "name" : "David Ferrone"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "E. Choroba",
+ "name" : "E. Choroba"
+ },
+ {
+ "data" : [
+ [
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Feng Chang",
+ "name" : "Feng Chang"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Jaldhar H. Vyas",
+ "name" : "Jaldhar H. Vyas"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Jorg Sommrey",
+ "name" : "Jorg Sommrey"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "Kjetil Skotheim",
+ "name" : "Kjetil Skotheim"
+ },
+ {
+ "data" : [
+ [
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 10
+ ]
+ ],
+ "id" : "Luca Ferrari",
+ "name" : "Luca Ferrari"
+ },
+ {
+ "data" : [
+ [
+ "Raku",
+ 2
+ ]
+ ],
+ "id" : "Mark Anderson",
+ "name" : "Mark Anderson"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "Matthew Neleigh",
+ "name" : "Matthew Neleigh"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Matthias Muth",
+ "name" : "Matthias Muth"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 1
+ ],
+ [
+ "Raku",
+ 1
+ ]
+ ],
+ "id" : "Mohammad Sajid Anwar",
+ "name" : "Mohammad Sajid Anwar"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "Niels van Dijke",
+ "name" : "Niels van Dijke"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Packy Anderson",
+ "name" : "Packy Anderson"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Peter Campbell Smith",
+ "name" : "Peter Campbell Smith"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "Peter Meszaros",
+ "name" : "Peter Meszaros"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]