diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2023-12-12 15:49:30 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2023-12-12 15:49:30 +0000 |
| commit | c5d362da9678bf0e410da99f957c6ad8e72e56bd (patch) | |
| tree | 6ad038a2987222b9e1a9c18b1307f688a810602c | |
| parent | 024ced642f56003a51fe61164cdc9598219c3f4d (diff) | |
| download | perlweeklychallenge-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.
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" + }, |
