aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2023-12-12 15:49:30 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2023-12-12 15:49:30 +0000
commitc5d362da9678bf0e410da99f957c6ad8e72e56bd (patch)
tree6ad038a2987222b9e1a9c18b1307f688a810602c
parent024ced642f56003a51fe61164cdc9598219c3f4d (diff)
downloadperlweeklychallenge-club-c5d362da9678bf0e410da99f957c6ad8e72e56bd.tar.gz
perlweeklychallenge-club-c5d362da9678bf0e410da99f957c6ad8e72e56bd.tar.bz2
perlweeklychallenge-club-c5d362da9678bf0e410da99f957c6ad8e72e56bd.zip
- Added solutions by Mark Anderson.
- Added solutions by Thomas Kohler. - Added solutions by Roger Bell_West. - Added solutions by Niels van Dijke. - Added solutions by Peter Campbell Smith. - Added solutions by Peter Meszaros. - Added solutions by David Ferrone. - Added solutions by W. Luis Mochan. - Added solutions by PokGoPun. - Added solutions by Laurent Rosenfeld. - Added solutions by Eric Cheung. - Added solutions by Ulrich Rieke.
-rwxr-xr-xchallenge-247/eric-cheung/python/ch-1.py31
-rwxr-xr-xchallenge-247/eric-cheung/python/ch-2.py12
-rw-r--r--challenge-247/laurent-rosenfeld/blog.txt1
-rw-r--r--challenge-247/laurent-rosenfeld/perl/ch-2.pl19
-rw-r--r--challenge-247/laurent-rosenfeld/raku/ch-2.raku15
-rwxr-xr-xchallenge-247/perlboy1967/perl/ch-1.pl (renamed from challenge-247/perlboy1967/perl/ch1.pl)0
-rwxr-xr-xchallenge-247/perlboy1967/perl/ch-2.pl (renamed from challenge-247/perlboy1967/perl/ch2.pl)0
-rwxr-xr-xchallenge-247/ulrich-rieke/cpp/ch-2.cpp33
-rwxr-xr-xchallenge-247/ulrich-rieke/haskell/ch-2.hs29
-rwxr-xr-xchallenge-247/ulrich-rieke/perl/ch-1.pl72
-rwxr-xr-xchallenge-247/ulrich-rieke/perl/ch-2.pl16
-rwxr-xr-xchallenge-247/ulrich-rieke/raku/ch-1.raku73
-rwxr-xr-xchallenge-247/ulrich-rieke/raku/ch-2.raku12
-rwxr-xr-xchallenge-247/ulrich-rieke/rust/ch-2.rs28
-rw-r--r--stats/pwc-challenge-246.json571
-rw-r--r--stats/pwc-current.json483
-rw-r--r--stats/pwc-language-breakdown-summary.json58
-rw-r--r--stats/pwc-language-breakdown.json3325
-rw-r--r--stats/pwc-leaders.json770
-rw-r--r--stats/pwc-summary-1-30.json124
-rw-r--r--stats/pwc-summary-121-150.json54
-rw-r--r--stats/pwc-summary-151-180.json114
-rw-r--r--stats/pwc-summary-181-210.json48
-rw-r--r--stats/pwc-summary-211-240.json58
-rw-r--r--stats/pwc-summary-241-270.json108
-rw-r--r--stats/pwc-summary-271-300.json136
-rw-r--r--stats/pwc-summary-301-330.json60
-rw-r--r--stats/pwc-summary-31-60.json46
-rw-r--r--stats/pwc-summary-61-90.json122
-rw-r--r--stats/pwc-summary-91-120.json34
-rw-r--r--stats/pwc-summary.json72
31 files changed, 3559 insertions, 2965 deletions
diff --git a/challenge-247/eric-cheung/python/ch-1.py b/challenge-247/eric-cheung/python/ch-1.py
new file mode 100755
index 0000000000..d613fb49dd
--- /dev/null
+++ b/challenge-247/eric-cheung/python/ch-1.py
@@ -0,0 +1,31 @@
+
+from random import randint
+
+## Example 1
+arrNames = ["Mr. Wall", "Mrs. Wall", "Mr. Anwar", "Mrs. Anwar", "Mr. Conway", "Mr. Cross"]
+nMaxShareFamilyGift = 0
+
+## Example 2
+## arrNames = ["Mr. Wall", "Mrs. Wall", "Mr. Anwar"]
+## nMaxShareFamilyGift = 1
+
+arrGiftFrom = [-1] * len(arrNames) ## List storing the index storing who the gift is sent
+
+for nIndxLoop, strNameLoop in enumerate(arrNames):
+
+ if nMaxShareFamilyGift == 0:
+ arrAvailList = [nIndx for nIndx, strLoop in enumerate(arrNames) if strLoop != strNameLoop and strLoop.split(" ")[-1] != strNameLoop.split(" ")[-1] and arrGiftFrom[nIndx] == -1]
+ else:
+ arrAvailList = [nIndx for nIndx, strLoop in enumerate(arrNames) if strLoop != strNameLoop and strLoop.split(" ")[-1] == strNameLoop.split(" ")[-1] and arrGiftFrom[nIndx] == -1]
+
+ nMaxShareFamilyGift = nMaxShareFamilyGift - 1
+
+ nGiftTo = arrAvailList[randint(0, len(arrAvailList) - 1)]
+ arrGiftFrom[nGiftTo] = nIndxLoop
+
+ print (strNameLoop + " --> " + arrNames[nGiftTo])
+
+ print ("")
+
+print ("From : " + " | ".join(arrNames))
+print ("To : " + " | ".join([strNameLoop for nIndxLoop, strNameLoop in sorted(zip(arrGiftFrom, arrNames))]))
diff --git a/challenge-247/eric-cheung/python/ch-2.py b/challenge-247/eric-cheung/python/ch-2.py
new file mode 100755
index 0000000000..61a6df3724
--- /dev/null
+++ b/challenge-247/eric-cheung/python/ch-2.py
@@ -0,0 +1,12 @@
+
+## strInput = "abcdbca" ## Example 1
+strInput = "cdeabeabfcdfabgcd" ## Example 2
+
+arrPairStr = [strInput[nIndxLoop : nIndxLoop + 2] for nIndxLoop in range(len(strInput) - 1)]
+
+arrUniqPair = list(set(arrPairStr))
+arrCountPair = [arrPairStr.count(strLoop) for strLoop in arrUniqPair]
+
+arrMaxPair = sorted([arrUniqPair[nIndx] for nIndx in range(len(arrCountPair)) if arrCountPair[nIndx] == max(arrCountPair)])
+
+print (arrMaxPair[0])
diff --git a/challenge-247/laurent-rosenfeld/blog.txt b/challenge-247/laurent-rosenfeld/blog.txt
new file mode 100644
index 0000000000..ed7e5bc581
--- /dev/null
+++ b/challenge-247/laurent-rosenfeld/blog.txt
@@ -0,0 +1 @@
+https://blogs.perl.org/users/laurent_r/2023/12/perl-weekly-challenge-247-most-frequent-letter-pair.html
diff --git a/challenge-247/laurent-rosenfeld/perl/ch-2.pl b/challenge-247/laurent-rosenfeld/perl/ch-2.pl
new file mode 100644
index 0000000000..6a5e13c2ee
--- /dev/null
+++ b/challenge-247/laurent-rosenfeld/perl/ch-2.pl
@@ -0,0 +1,19 @@
+use strict;
+use warnings;
+use feature 'say';
+
+sub most_frequent_pair {
+ my %pairs;
+ my @letters = split //, shift;
+ for my $i (1..$#letters) {
+ my $pair = $letters[$i-1] . $letters[$i];
+ $pairs{$pair}++;
+ }
+ return (sort { $pairs{$b} <=> $pairs{$a} ||
+ $a cmp $b } keys %pairs)[0];
+}
+
+for my $test ('abcdbca', 'cdeabeabfcdfabgcd', 'bcabbc') {
+ printf "%-20s => ", $test;
+ say most_frequent_pair $test;
+}
diff --git a/challenge-247/laurent-rosenfeld/raku/ch-2.raku b/challenge-247/laurent-rosenfeld/raku/ch-2.raku
new file mode 100644
index 0000000000..60a7a457c3
--- /dev/null
+++ b/challenge-247/laurent-rosenfeld/raku/ch-2.raku
@@ -0,0 +1,15 @@
+sub most-frequent-pair ($str) {
+ my %pairs;
+ my @letters = $str.comb;
+ for 1..@letters.end -> $i {
+ my $pair = @letters[$i-1] ~ @letters[$i];
+ %pairs{$pair}++;
+ }
+ return (sort { %pairs{$^b} <=> %pairs{$^a} ||
+ $^a leg $^b }, %pairs.keys)[0];
+}
+
+for 'abcdbca', 'cdeabeabfcdfabgcd', 'bcabbc' -> $test {
+ printf "%-20s => ", $test;
+ say most-frequent-pair $test;
+}
diff --git a/challenge-247/perlboy1967/perl/ch1.pl b/challenge-247/perlboy1967/perl/ch-1.pl
index d41ed73cd6..d41ed73cd6 100755
--- a/challenge-247/perlboy1967/perl/ch1.pl
+++ b/challenge-247/perlboy1967/perl/ch-1.pl
diff --git a/challenge-247/perlboy1967/perl/ch2.pl b/challenge-247/perlboy1967/perl/ch-2.pl
index 62f9106db7..62f9106db7 100755
--- a/challenge-247/perlboy1967/perl/ch2.pl
+++ b/challenge-247/perlboy1967/perl/ch-2.pl
diff --git a/challenge-247/ulrich-rieke/cpp/ch-2.cpp b/challenge-247/ulrich-rieke/cpp/ch-2.cpp
new file mode 100755
index 0000000000..694cd3f0fb
--- /dev/null
+++ b/challenge-247/ulrich-rieke/cpp/ch-2.cpp
@@ -0,0 +1,33 @@
+#include <vector>
+#include <iostream>
+#include <algorithm>
+#include <utility>
+#include <string>
+#include <map>
+
+bool mySorter( const std::pair<std::string , int>
+ & p1 , const std::pair<std::string , int> & p2 ) {
+ if ( p1.second != p2.second ) {
+ return p1.second > p2.second ;
+ }
+ else {
+ return p1.first < p2.first ;
+ }
+}
+
+int main( ) {
+ std::cout << "Enter a string consisting of lowercase letters only!\n" ;
+ std::string line ;
+ std::cin >> line ;
+ int len = line.length( ) ;
+ std::map<std::string , int> frequencies ;
+ for ( int pos = 0 ; pos < len - 1 ; pos++ ) {
+ frequencies[ line.substr( pos , 2 )]++ ;
+ }
+ std::vector<std::pair<std::string , int>> allPairs ( frequencies.begin( ) ,
+ frequencies.end( ) ) ;
+ std::sort( allPairs.begin( ) , allPairs.end( ) , mySorter ) ;
+ std::cout << allPairs[0].first << std::endl ;
+ return 0 ;
+}
+
diff --git a/challenge-247/ulrich-rieke/haskell/ch-2.hs b/challenge-247/ulrich-rieke/haskell/ch-2.hs
new file mode 100755
index 0000000000..b162130fb9
--- /dev/null
+++ b/challenge-247/ulrich-rieke/haskell/ch-2.hs
@@ -0,0 +1,29 @@
+module Challenge247_2
+ where
+import qualified Data.Set as S
+import Data.List.Split ( divvy )
+import Data.List ( (!!) , sortBy )
+
+mySorter :: (String , Int) -> (String , Int ) -> Ordering
+mySorter ( s1 , i1 ) ( s2 , i2 )
+ |i1 /= i2 = if compare i1 i2 == LT then GT else LT
+ |otherwise = compare s1 s2
+
+count :: Eq a => a -> [a] -> Int
+count _ [] = 0
+count d (x:xs)
+ |d == x = 1 + count d xs
+ |otherwise = count d xs
+
+solution :: String -> String
+solution s = fst ((sortBy mySorter countlist) !! 0 )
+ where
+ pairs = divvy 2 1 s
+ uniques = S.toList $ S.fromList $ divvy 2 1 s
+ countlist = map (\substr -> ( substr , count substr pairs ) ) uniques
+
+main :: IO ( )
+main = do
+ putStrLn "Enter a string consisting of lowercase letters only!"
+ line <- getLine
+ print $ solution line
diff --git a/challenge-247/ulrich-rieke/perl/ch-1.pl b/challenge-247/ulrich-rieke/perl/ch-1.pl
new file mode 100755
index 0000000000..55491fe672
--- /dev/null
+++ b/challenge-247/ulrich-rieke/perl/ch-1.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+use List::Util qw ( any ) ;
+use POSIX ;
+
+my $rigid = 1 ; #only different second names are accepted
+say "Enter some names of possible recipients, separated by , !" ;
+my $line = <STDIN> ;
+chomp $line ;
+my @receivers_old = split( /,/ , $line ) ;
+my @receivers ;
+for ( @receivers = @receivers_old ) {
+ s/\A(\s*)(.+)(\s*)\z/$2/ ;
+}
+say join( ',' , @receivers ) ;
+my @givers = @receivers ;
+my @surnames ;
+for my $name( @receivers ) {
+ if ( $name =~ /(.+)(\s+)(.+)/ ) {
+ push @surnames , $3 ;
+ }
+}
+my %frequencies ;
+for my $name ( @surnames ) {
+ $frequencies{ $name }++ ;
+}
+if ( any { $frequencies{ $_ } >= floor( scalar( @receivers ) / 2 ) } keys
+ %frequencies ) {
+#one name is so frequent we must drop the second name requirement
+ $rigid = 0 ;
+}
+my %christmas_pairs ;
+my $len = scalar( @receivers ) ;
+while ( $len > 0 ) {
+ my $giver_index = int( rand( $len ) ) ;
+ my $receiver_index = int( rand( $len ) ) ;
+ my $giver ;
+ my $receiver ;
+ if ( $rigid ) { #different second names!
+ $giver = $givers[ $giver_index] ;
+ $receiver = $receivers[ $receiver_index ] ;
+ my $giver_family = (split( /\s+/ , $giver ))[-1] ;
+ my $receiver_family = (split( /\s+/ , $receiver ))[-1] ;
+ while ( $giver_family eq $receiver_family ) {
+ $giver_index = int( rand( $len ) ) ;
+ $receiver_index = int( rand( $len ) ) ;
+ $giver = $givers[ $giver_index ] ;
+ $receiver = $receivers[ $receiver_index ] ;
+ $giver_family = (split( /\s+/ , $giver ))[-1] ;
+ $receiver_family = (split( /\s+/ , $receiver ))[-1] ;
+ }
+ }
+ else {
+ $giver = $givers[ $giver_index ] ;
+ $receiver = $receivers[ $receiver_index ] ;
+ while ( $giver eq $receiver ) {
+ $giver_index = int( rand( $len ) ) ;
+ $receiver_index = int( rand( $len ) ) ;
+ $giver = $givers[ $giver_index ] ;
+ $receiver = $receivers[ $receiver_index ] ;
+ }
+ }
+ $christmas_pairs{ $giver } = $receiver ;
+ splice( @givers , $giver_index , 1 ) ;
+ splice( @receivers , $receiver_index , 1 ) ;
+ $len-- ;
+}
+for my $donor ( keys %christmas_pairs ) {
+ say "$donor => $christmas_pairs{ $donor }" ;
+}
diff --git a/challenge-247/ulrich-rieke/perl/ch-2.pl b/challenge-247/ulrich-rieke/perl/ch-2.pl
new file mode 100755
index 0000000000..a9e8f8f9dd
--- /dev/null
+++ b/challenge-247/ulrich-rieke/perl/ch-2.pl
@@ -0,0 +1,16 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+
+say "Enter a string consisting of lowercase letters only!" ;
+my $line = <STDIN> ;
+chomp $line ;
+my $len = length $line ;
+my %frequencies ;
+for my $pos ( 0..$len - 2 ) {
+ $frequencies{ substr( $line, $pos , 2 ) }++ ;
+}
+my @sorted = sort { $frequencies{$b} <=> $frequencies{$a} ||
+ $a cmp $b } keys %frequencies ;
+say $sorted[0] ;
diff --git a/challenge-247/ulrich-rieke/raku/ch-1.raku b/challenge-247/ulrich-rieke/raku/ch-1.raku
new file mode 100755
index 0000000000..1a45fb0d16
--- /dev/null
+++ b/challenge-247/ulrich-rieke/raku/ch-1.raku
@@ -0,0 +1,73 @@
+use v6 ;
+
+say "Enter a list of receivers, separated by a ',' !" ;
+my $line = $*IN.get ;
+my @receivers_old = $line.split( ',' ) ;
+my @receivers ; #who gets gifts ?
+for @receivers_old -> $name {
+ if ( $name ~~ /^ (\s*) (\S+) (\s+) (\S+) (\s*) $/ ) {
+ my $newname = ( ~$1 ~ " " ~ ~$3 ) ; #weed out empty spaces at the
+#beginning and the end of the name
+ @receivers.push( $newname ) ;
+ }
+}
+my @givers = @receivers ;
+my $strict = True ; #only different family names are allowed
+my %frequencies ; #count the occurrences of family names
+for @receivers -> $name {
+ my @nameparts = $name.split( /\s+/ ) ;
+ my $surname = @nameparts[ *-1 ] ;
+ %frequencies{$surname}++ ;
+}
+#if more than a half of all receivers share the same second name we
+#loosen our strictness criteria and allow the same family name
+if ( %frequencies.keys.grep( { %frequencies{$_} >= ( @receivers.elems
+ div 2 ) } ).elems > 0 ) {
+ $strict = False ;
+}
+#keep randomly selecting a giver and a receiver! If we are under
+#"strict" , the second names have to differ, otherwise they can be
+#identical. If the conditions are fulfilled, we delete the respective
+#giver and receiver from the array.
+my $len = @receivers.elems ;
+my %christmas_pairs ;
+while ( $len > 0 ) {
+ my $giver_index = (0..$len - 1 ).pick( 1 )[0] ;
+ my $receiver_index = (0..$len - 1 ).pick( 1 )[0] ;
+ my $giver = @givers[ $giver_index ] ;
+ my $receiver = @receivers[ $receiver_index ] ;
+ if ( $strict ) { #second names must differ
+ my $giver_surname ;
+ my $receiver_surname ;
+ my @nameparts = $giver.split( /\s+/ ) ;
+ $giver_surname = @nameparts[*-1] ;
+ @nameparts = $receiver.split( /\s+/ ) ;
+ $receiver_surname = @nameparts[*-1] ;
+ while ( $giver_surname eq $receiver_surname ) {
+ $giver_index = (0..$len - 1 ).pick( 1 )[0] ;
+ $receiver_index = (0..$len - 1 ).pick( 1 )[0] ;
+ $giver = @givers[ $giver_index ] ;
+ $receiver = @receivers[ $receiver_index ] ;
+ @nameparts = $giver.split( /\s+/ ) ;
+ $giver_surname = @nameparts[*-1] ;
+ @nameparts = $receiver.split( /\s+/ ) ;
+ $receiver_surname = @nameparts[ *-1] ;
+ }
+ }
+ else { #second names can be the same, but you should not give a present
+#to yourself...
+ while ( $giver eq $receiver ) {
+ $giver_index = (0..$len - 1 ).pick( 1 )[0] ;
+ $receiver_index = (0..$len - 1).pick( 1 )[0] ;
+ $giver = @givers[ $giver_index ] ;
+ $receiver = @receivers[ $receiver_index ] ;
+ }
+ }
+ %christmas_pairs{ $giver } = $receiver ;
+ @givers.splice( $giver_index , 1 ) ;
+ @receivers.splice( $receiver_index , 1 ) ;
+ $len-- ;
+}
+for %christmas_pairs.keys -> $aGiver {
+ say "$aGiver -> %christmas_pairs{ $aGiver }" ;
+}
diff --git a/challenge-247/ulrich-rieke/raku/ch-2.raku b/challenge-247/ulrich-rieke/raku/ch-2.raku
new file mode 100755
index 0000000000..d5bcb70131
--- /dev/null
+++ b/challenge-247/ulrich-rieke/raku/ch-2.raku
@@ -0,0 +1,12 @@
+use v6 ;
+
+say "Enter a string consisting of lowercase letters only!" ;
+my $line = $*IN.get ;
+my $len = $line.chars ;
+my %frequencies ;
+for (0..$len - 2 ) -> $pos {
+ %frequencies{ $line.substr( $pos , 2 ) }++ ;
+}
+my @sorted = %frequencies.keys.sort( { %frequencies{ $^b } cmp
+ %frequencies{ $^a } || $^a cmp $^b } ) ;
+say @sorted[ 0 ] ;
diff --git a/challenge-247/ulrich-rieke/rust/ch-2.rs b/challenge-247/ulrich-rieke/rust/ch-2.rs
new file mode 100755
index 0000000000..4be51e0943
--- /dev/null
+++ b/challenge-247/ulrich-rieke/rust/ch-2.rs
@@ -0,0 +1,28 @@
+use std::io ;
+use std::collections::HashMap ;
+
+fn main() {
+ println!("Enter a string consisting of letters a-z");
+ let mut inline : String = String::new( ) ;
+ io::stdin( ).read_line( &mut inline ).unwrap( ) ;
+ let mut frequencies : HashMap<&str , u16> = HashMap::new( ) ;
+ let len = inline.len( ) ;
+ for k in 0..=len - 2 {
+ let a_pair = &inline[k..k + 2] ;
+ *frequencies.entry( a_pair ).or_insert( 1 ) += 1 ;
+ }
+ let mut the_pairs : Vec<(&str , u16)> = Vec::new( ) ;
+ for ( key , value ) in frequencies.iter( ) {
+ the_pairs.push( ( *key , *value ) ) ;
+ }
+ let pa_slice = the_pairs.as_mut_slice( ) ;
+ pa_slice.sort_by( | a , b | {
+ if a.1 != b.1 {
+ b.1.cmp( &a.1 )
+ }
+ else {
+ a.0.cmp( &b.0 )
+ }
+ } ) ;
+ println!("{:?}" , pa_slice[0].0 ) ;
+}
diff --git a/stats/pwc-challenge-246.json b/stats/pwc-challenge-246.json
new file mode 100644
index 0000000000..5c71db6294
--- /dev/null
+++ b/stats/pwc-challenge-246.json
@@ -0,0 +1,571 @@
+{
+ "drilldown" : {
+ "series" : [
+ {
+ "name" : "Arne Sommer",
+ "id" : "Arne Sommer",
+ "data" : [
+ [
+ "Perl",
+ 1
+ ],
+ [
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ]
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 2
+ ]
+ ],
+ "id" : "Athanasius",
+ "name" : "Athanasius"
+ },
+ {
+ "name" : "BarrOff",
+ "data" : [
+ [
+ "Perl",
+ 1
+ ],
+ [
+ "Raku",
+ 1
+ ]
+ ],
+ "id" : "BarrOff"
+ },
+ {
+ "id" : "Bob Lied",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "name" : "Bob Lied"
+ },
+ {
+ "data" : [
+ [
+ "Raku",
+ 2
+ ]
+ ],
+ "id" : "Bruce Gray",
+ "name" : "Bruce Gray"
+ },
+ {
+ "name" : "Cheok-Yin Fung",
+ "id" : "Cheok-Yin Fung",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ]
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Dave Jacoby",
+ "name" : "Dave Jacoby"
+ },
+ {
+ "name" : "David Ferrone",
+ "id" : "David Ferrone",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ]
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "E. Choroba",
+ "name" : "E. Choroba"
+ },
+ {
+ "id" : "Humberto Massa",
+ "data" : [
+ [
+ "Raku",
+ 2
+ ]
+ ],
+ "name" : "Humberto Massa"
+ },
+ {
+ "name" : "Jan Krnavek",
+ "data" : [
+ [
+ "Raku",
+ 2
+ ]
+ ],
+ "id" : "Jan Krnavek"
+ },
+ {
+ "name" : "Jorg Sommrey",
+ "id" : "Jorg Sommrey",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ]
+ },
+ {
+ "id" : "Laurent Rosenfeld",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 2
+ ]
+ ],
+ "name" : "Laurent Rosenfeld"
+ },
+ {
+ "id" : "Lubos Kolouch",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "name" : "Lubos Kolouch"
+ },
+ {
+ "name" : "Luca Ferrari",
+ "data" : [
+ [
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 8
+ ]
+ ],
+ "id" : "Luca Ferrari"
+ },
+ {
+ "name" : "Mark Anderson",
+ "data" : [
+ [
+ "Raku",
+ 2
+ ]
+ ],
+ "id" : "Mark Anderson"
+ },
+ {
+ "name" : "Matthew Neleigh",
+ "id" : "Matthew Neleigh",
+ "data" : [
+ [
+ "Perl",
+ 1
+ ]
+ ]
+ },
+ {
+ "name" : "Nelo Tovar",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "Nelo Tovar"
+ },
+ {
+ "name" : "Niels van Dijke",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "Niels van Dijke"
+ },
+ {
+ "name" : "Oliver Oviedo",
+ "data" : [
+ [
+ "Perl",
+ 1
+ ]
+ ],
+ "id" : "Oliver Oviedo"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Packy Anderson",
+ "name" : "Packy Anderson"
+ },
+ {
+ "name" : "Peter Campbell Smith",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Peter Campbell Smith"
+ },
+ {
+ "id" : "Peter Meszaros",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "name" : "Peter Meszaros"
+ },
+ {
+ "id" : "Robert DiCicco",
+ "data" : [
+ [
+ "Perl",
+ 1
+ ],
+ [
+ "Raku",
+ 1
+ ]
+ ],
+ "name" : "Robert DiCicco"
+ },
+ {
+ "data" : [
+ [
+ "Raku",
+ 2
+ ]
+ ],
+ "id" : "Robert Ransbottom",
+ "name" : "Robert Ransbottom"
+ },
+ {
+ "name" : "Roger Bell_West",
+ "id" : "Roger Bell_West",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ]
+ },
+ {
+ "id" : "Stephen G. Lynn",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "name" : "Stephen G. Lynn"
+ },
+ {
+ "id" : "Thomas Kohler",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 2
+ ]
+ ],
+ "name" : "Thomas Kohler"
+ },
+ {
+ "name" : "W. Luis Mochan",
+ "id" : "W. Luis Mochan",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ]
+ }
+ ]
+ },
+ "chart" : {
+ "type" : "column"
+ },
+ "subtitle" : {
+ "text" : "[Champions: 29] Last updated at 2023-12-12 15:07:31 GMT"
+ },
+ "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
+ },
+ "legend" : {
+ "enabled" : 0
+ },
+ "yAxis" : {
+ "title" : {
+ "text" : "Total Solutions"
+ }
+ },
+ "title" : {
+ "text" : "The Weekly Challenge - 246"
+ },
+ "series" : [
+ {
+ "data" : [
+ {
+ "name" : "Arne Sommer",
+ "y" : 4,
+ "drilldown" : "Arne Sommer"
+ },
+ {
+ "drilldown" : "Athanasius",
+ "name" : "Athanasius",
+ "y" : 4
+ },
+ {
+ "drilldown" : "BarrOff",
+ "y" : 2,
+ "name" : "BarrOff"
+ },