From 6129c5d5a28972223b3b9df7d90179b9cd35493d Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Thu, 11 May 2023 23:29:02 +0100 Subject: - Added solutions by Ulrich Rieke. - Added solutions by Roger Bell_West. - Added solutions by David Ferrone. - Added solutions by Peter Campbell Smith. - Added solutions by Thomas Kohler. - Added solutions by Arne Sommer. - Added solutions by Jaldhar H. Vyas. --- challenge-016/jaldhar-h-vyas/perl/ch-1.pl | 16 + challenge-016/jaldhar-h-vyas/perl/ch-2.pl | 37 + challenge-016/jaldhar-h-vyas/perl5/ch-1.pl | 16 - challenge-016/jaldhar-h-vyas/perl5/ch-2.pl | 37 - challenge-016/jaldhar-h-vyas/perl6/ch-1.p6 | 13 - challenge-016/jaldhar-h-vyas/perl6/ch-2.p6 | 33 - challenge-016/jaldhar-h-vyas/raku/ch-1.p6 | 13 + challenge-016/jaldhar-h-vyas/raku/ch-2.p6 | 33 + challenge-216/ulrich-rieke/cpp/ch-1.cpp | 55 + challenge-216/ulrich-rieke/haskell/ch-1.hs | 20 + challenge-216/ulrich-rieke/perl/ch-1.pl | 24 + challenge-216/ulrich-rieke/perl/ch-2.pl | 127 + challenge-216/ulrich-rieke/raku/ch-1.raku | 12 + challenge-216/ulrich-rieke/rust/ch-1.rs | 28 + stats/pwc-challenge-016.json | 278 +- stats/pwc-current.json | 240 +- stats/pwc-language-breakdown-summary.json | 58 +- stats/pwc-language-breakdown.json | 8542 ++++++++++++++-------------- stats/pwc-leaders.json | 768 +-- stats/pwc-summary-1-30.json | 122 +- stats/pwc-summary-121-150.json | 30 +- stats/pwc-summary-151-180.json | 42 +- stats/pwc-summary-181-210.json | 40 +- stats/pwc-summary-211-240.json | 36 +- stats/pwc-summary-241-270.json | 48 +- stats/pwc-summary-271-300.json | 46 +- stats/pwc-summary-31-60.json | 130 +- stats/pwc-summary-61-90.json | 42 +- stats/pwc-summary-91-120.json | 34 +- stats/pwc-summary.json | 1772 +++--- 30 files changed, 6536 insertions(+), 6156 deletions(-) create mode 100755 challenge-016/jaldhar-h-vyas/perl/ch-1.pl create mode 100755 challenge-016/jaldhar-h-vyas/perl/ch-2.pl delete mode 100755 challenge-016/jaldhar-h-vyas/perl5/ch-1.pl delete mode 100755 challenge-016/jaldhar-h-vyas/perl5/ch-2.pl delete mode 100755 challenge-016/jaldhar-h-vyas/perl6/ch-1.p6 delete mode 100755 challenge-016/jaldhar-h-vyas/perl6/ch-2.p6 create mode 100755 challenge-016/jaldhar-h-vyas/raku/ch-1.p6 create mode 100755 challenge-016/jaldhar-h-vyas/raku/ch-2.p6 create mode 100644 challenge-216/ulrich-rieke/cpp/ch-1.cpp create mode 100644 challenge-216/ulrich-rieke/haskell/ch-1.hs create mode 100644 challenge-216/ulrich-rieke/perl/ch-1.pl create mode 100644 challenge-216/ulrich-rieke/perl/ch-2.pl create mode 100644 challenge-216/ulrich-rieke/raku/ch-1.raku create mode 100644 challenge-216/ulrich-rieke/rust/ch-1.rs diff --git a/challenge-016/jaldhar-h-vyas/perl/ch-1.pl b/challenge-016/jaldhar-h-vyas/perl/ch-1.pl new file mode 100755 index 0000000000..36b54c0b35 --- /dev/null +++ b/challenge-016/jaldhar-h-vyas/perl/ch-1.pl @@ -0,0 +1,16 @@ +#!/usr/bin/perl +use warnings; +use strict; +use 5.010; + +my %shares; +my $pie = 100.0; +for my $guest (1 .. 100) { + my $share = $pie * ($guest * 0.01); + $shares{$guest} = $share; + $pie -= $share; +} + +my $top = (reverse sort { $shares{$a} <=> $shares{$b} } keys %shares)[0]; + +say "Guest $top gets ", sprintf("%0.2f", $shares{$top}), '% of the pie.'; diff --git a/challenge-016/jaldhar-h-vyas/perl/ch-2.pl b/challenge-016/jaldhar-h-vyas/perl/ch-2.pl new file mode 100755 index 0000000000..f83ec5c488 --- /dev/null +++ b/challenge-016/jaldhar-h-vyas/perl/ch-2.pl @@ -0,0 +1,37 @@ +#!/usr/bin/perl +use warnings; +use strict; +use 5.010; +use Digest::SHA qw/ sha256 /; + +sub fromBase58 { + my ($address) = @_; + + my %digits; + @digits{( 1 .. 9, 'A' .. 'H', 'J' .. 'N', 'P' .. 'Z', 'a' .. 'k', + 'm' .. 'z')} = 0 .. 57; + + my @result; + + for my $c ( map { $digits{$_} } split //, $address ) { + for (my $j = 25; $j--; ) { + $c += 58 * ($result[$j] // 0); + $result[$j] = $c % 256; + $c /= 256; + } + } + + return @result; +} + +sub isValidBitcoinAddress { + my ($address) = @_; + + my @bytes = fromBase58($address); + my $decoded = sha256(sha256 pack 'C*', @bytes[0..20]); + my $checksum = pack 'C*', @bytes[21..24]; + + return $checksum eq substr $decoded, 0, 4; +} + +say isValidBitcoinAddress(shift) ? q{} : 'in', 'valid'; diff --git a/challenge-016/jaldhar-h-vyas/perl5/ch-1.pl b/challenge-016/jaldhar-h-vyas/perl5/ch-1.pl deleted file mode 100755 index 36b54c0b35..0000000000 --- a/challenge-016/jaldhar-h-vyas/perl5/ch-1.pl +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/perl -use warnings; -use strict; -use 5.010; - -my %shares; -my $pie = 100.0; -for my $guest (1 .. 100) { - my $share = $pie * ($guest * 0.01); - $shares{$guest} = $share; - $pie -= $share; -} - -my $top = (reverse sort { $shares{$a} <=> $shares{$b} } keys %shares)[0]; - -say "Guest $top gets ", sprintf("%0.2f", $shares{$top}), '% of the pie.'; diff --git a/challenge-016/jaldhar-h-vyas/perl5/ch-2.pl b/challenge-016/jaldhar-h-vyas/perl5/ch-2.pl deleted file mode 100755 index f83ec5c488..0000000000 --- a/challenge-016/jaldhar-h-vyas/perl5/ch-2.pl +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/perl -use warnings; -use strict; -use 5.010; -use Digest::SHA qw/ sha256 /; - -sub fromBase58 { - my ($address) = @_; - - my %digits; - @digits{( 1 .. 9, 'A' .. 'H', 'J' .. 'N', 'P' .. 'Z', 'a' .. 'k', - 'm' .. 'z')} = 0 .. 57; - - my @result; - - for my $c ( map { $digits{$_} } split //, $address ) { - for (my $j = 25; $j--; ) { - $c += 58 * ($result[$j] // 0); - $result[$j] = $c % 256; - $c /= 256; - } - } - - return @result; -} - -sub isValidBitcoinAddress { - my ($address) = @_; - - my @bytes = fromBase58($address); - my $decoded = sha256(sha256 pack 'C*', @bytes[0..20]); - my $checksum = pack 'C*', @bytes[21..24]; - - return $checksum eq substr $decoded, 0, 4; -} - -say isValidBitcoinAddress(shift) ? q{} : 'in', 'valid'; diff --git a/challenge-016/jaldhar-h-vyas/perl6/ch-1.p6 b/challenge-016/jaldhar-h-vyas/perl6/ch-1.p6 deleted file mode 100755 index 1dd07a146c..0000000000 --- a/challenge-016/jaldhar-h-vyas/perl6/ch-1.p6 +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/perl6 - -my ($topguest, $topshare) = (1 .. 100) - .map({ - state $pie = 100.0; - my $share = $pie * ($_ * 0.01); - $pie -= $share; - $_ => $share; - }) - .max( *.value ) - .kv; - -say "Guest $topguest gets ", sprintf("%0.2f", $topshare), '% of the pie.'; diff --git a/challenge-016/jaldhar-h-vyas/perl6/ch-2.p6 b/challenge-016/jaldhar-h-vyas/perl6/ch-2.p6 deleted file mode 100755 index 8a10ee17f7..0000000000 --- a/challenge-016/jaldhar-h-vyas/perl6/ch-2.p6 +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/perl6 -use Digest::SHA256::Native; - -sub fromBase58($address) { - my %digits = ( 1 .. 9, 'A' .. 'H', 'J' .. 'N', 'P' .. 'Z', 'a' .. 'k', - 'm' .. 'z').flat Z=> 0 .. 57; - - my @result; - - for $address.comb.map({ %digits{$_} }) -> $digit { - my $c = $digit; - for 24 ... 0 -> $j { - $c += (58 * (@result[$j] // 0)); - @result[$j] = $c % 256; - $c div= 256; - } - } - - return @result; -} - -sub isValidBitcoinAddress($address) { - my @bytes = fromBase58($address); - my $decoded = sha256(sha256(Blob.new(@bytes[0..20]))); - my $checksum = Blob.new(@bytes[21..24]); - return $checksum eqv $decoded.subbuf(0, 4); -} - -sub MAIN ( - $address #= a bitcoin address to validate. -) { - say isValidBitcoinAddress($address) ?? q{} !! 'in', 'valid'; -} \ No newline at end of file diff --git a/challenge-016/jaldhar-h-vyas/raku/ch-1.p6 b/challenge-016/jaldhar-h-vyas/raku/ch-1.p6 new file mode 100755 index 0000000000..1dd07a146c --- /dev/null +++ b/challenge-016/jaldhar-h-vyas/raku/ch-1.p6 @@ -0,0 +1,13 @@ +#!/usr/bin/perl6 + +my ($topguest, $topshare) = (1 .. 100) + .map({ + state $pie = 100.0; + my $share = $pie * ($_ * 0.01); + $pie -= $share; + $_ => $share; + }) + .max( *.value ) + .kv; + +say "Guest $topguest gets ", sprintf("%0.2f", $topshare), '% of the pie.'; diff --git a/challenge-016/jaldhar-h-vyas/raku/ch-2.p6 b/challenge-016/jaldhar-h-vyas/raku/ch-2.p6 new file mode 100755 index 0000000000..8a10ee17f7 --- /dev/null +++ b/challenge-016/jaldhar-h-vyas/raku/ch-2.p6 @@ -0,0 +1,33 @@ +#!/usr/bin/perl6 +use Digest::SHA256::Native; + +sub fromBase58($address) { + my %digits = ( 1 .. 9, 'A' .. 'H', 'J' .. 'N', 'P' .. 'Z', 'a' .. 'k', + 'm' .. 'z').flat Z=> 0 .. 57; + + my @result; + + for $address.comb.map({ %digits{$_} }) -> $digit { + my $c = $digit; + for 24 ... 0 -> $j { + $c += (58 * (@result[$j] // 0)); + @result[$j] = $c % 256; + $c div= 256; + } + } + + return @result; +} + +sub isValidBitcoinAddress($address) { + my @bytes = fromBase58($address); + my $decoded = sha256(sha256(Blob.new(@bytes[0..20]))); + my $checksum = Blob.new(@bytes[21..24]); + return $checksum eqv $decoded.subbuf(0, 4); +} + +sub MAIN ( + $address #= a bitcoin address to validate. +) { + say isValidBitcoinAddress($address) ?? q{} !! 'in', 'valid'; +} \ No newline at end of file diff --git a/challenge-216/ulrich-rieke/cpp/ch-1.cpp b/challenge-216/ulrich-rieke/cpp/ch-1.cpp new file mode 100644 index 0000000000..e51a101c2a --- /dev/null +++ b/challenge-216/ulrich-rieke/cpp/ch-1.cpp @@ -0,0 +1,55 @@ +#include +#include +#include +#include + +std::vector split( const std::string & startline , + const std::string & sep ) { + std::vector 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 ; +} + +bool condition( const std::string & regi , const std::string & word ) { + for ( std::string::size_type i = 0 ; i < regi.length( ) ; i++ ) { + if ( word.find( regi.substr( i , 1 ) ) == std::string::npos ) { + return false ; + } + } + return true ; +} + +int main( ) { + std::cout << "Please enter some words, separated by blanks!\n" ; + std::string line ; + std::getline( std::cin , line ) ; + std::vector words ( split( line , " " ) ) ; + std::cout << "Enter , separated by blanks, 2 parts of a registration number!\n" ; + std::getline( std::cin , line ) ; + std::vector regiparts( split( line , " " ) ) ; + std::string registration ( regiparts[ 0 ] + regiparts[ 1 ] ) ; + std::string relevant_word ; + for ( auto c : registration ) { + if ( std::isalpha( c ) ) + relevant_word.push_back( static_cast( tolower( c ) ) ) ; + } + std::vector selected ; + for ( auto word : words ) + if ( condition ( relevant_word , word ) ) + selected.push_back( word ) ; + std::cout << "(" ; + for ( auto word : selected ) { + std::cout << word ; + if ( word != selected.back( ) ) + std::cout << " , " ; + else + std::cout << ")\n" ; + } + return 0 ; +} diff --git a/challenge-216/ulrich-rieke/haskell/ch-1.hs b/challenge-216/ulrich-rieke/haskell/ch-1.hs new file mode 100644 index 0000000000..b0269d8ec8 --- /dev/null +++ b/challenge-216/ulrich-rieke/haskell/ch-1.hs @@ -0,0 +1,20 @@ +module Challenge216 + where +import Data.Char ( toLower , isAlpha) +import qualified Data.Set as S + +solution :: [String] -> String -> [String] +solution theWords registration = filter (\w -> regiset `S.isSubsetOf` (S.fromList +w )) theWords +where + regiset = S.fromList registration + +main :: IO ( ) +main = do + putStrLn "Please enter some words, separated by blanks!" + theWords <- getLine + putStrLn "Please enter a registration number in 2 parts!" + regiline <- getLine + let allWords = words theWords + relevant_word = map toLower $ filter isAlpha $ foldl1 ( ++ ) $ words regiline + print $ solution allWords relevant_word diff --git a/challenge-216/ulrich-rieke/perl/ch-1.pl b/challenge-216/ulrich-rieke/perl/ch-1.pl new file mode 100644 index 0000000000..340f20fc1f --- /dev/null +++ b/challenge-216/ulrich-rieke/perl/ch-1.pl @@ -0,0 +1,24 @@ +#!/usr/bin/perl ; +use strict ; +use warnings ; +use feature 'say' ; +use List::Util qw ( all ) ; + +sub condition { + my $regi = shift ; + my $word = shift ; + return all { index( $word , $_ ) != -1 } split( // , $regi ) ; +} + +say "Please enter some words, separated by blanks!" ; +my $line = ; +chomp $line ; +my @words = split( /\s/ , $line ) ; +say "Please enter a registration number with 2 parts, separated by blanks!" ; +$line = ; +chomp $line ; +my @regiparts = split( /\s/ , $line ) ; +my $registration = $regiparts[ 0 ] . $regiparts[ 1 ] ; +my $relevant_word = join ( '' , grep { $_ =~ /[a-z]/ } split( // , +lc $registration )) ; +say "(" . join( ',' , grep { condition( $relevant_word , $_ ) } @words ) . ")" ; diff --git a/challenge-216/ulrich-rieke/perl/ch-2.pl b/challenge-216/ulrich-rieke/perl/ch-2.pl new file mode 100644 index 0000000000..94ad1ce19d --- /dev/null +++ b/challenge-216/ulrich-rieke/perl/ch-2.pl @@ -0,0 +1,127 @@ +#!/usr/bin/perl ; +use strict ; +use warnings ; +use feature 'say' ; +use List::Util qw ( any all max ) ; + +sub find_intersection { + my $firstArray = shift ; + my $secondArray = shift ; + my %firstHash ; + my %secondHash ; + for my $letter( @{$firstArray} ) { + $firstHash{ $letter }++ ; + } + for my $letter( @{$secondArray} ) { + $secondHash{ $letter }++ ; + } + return grep { exists( $secondHash{ $_ } ) } keys %firstHash ; +} + +sub find_most_frequent { + my $array = shift ; + my %vals ; + for my $num ( @{$array} ) { + $vals{ $num }++ ; + } + my $maximum = max ( values %vals ) ; + my @nums = grep { $vals{ $_ } == $maximum } keys %vals ; + return $nums[ 0 ] ; +} + +#which letters are provided by which sticker ? +sub find_letter_distribution { + my $stickerArray = shift ; + my %letterDistri ; + for my $i ( 0 .. scalar ( @{$stickerArray} - 1 ) ) { + for my $letter ( split ( // , $stickerArray->[ $i ] ) ) { + push @{$letterDistri{ $letter }} , $i ; + } + } + return %letterDistri ; +} + +say "Please enter some sticker words, separated by blanks!" ; +my $line = ; +chomp $line ; +my @stickers = split( /\s/ , $line ) ; +say "Please enter a word!" ; +my $word = ; +chomp $word ; +my %letters_in_words ;#in which words do I find a given letter ? +my $multistickers = 0 ;#how many stickers have to be used more than once? +my %supplied ; #how many letters are offered ? +my %needed ; #how many letters are needed ? +#which letters are supplied ? for every letter, fill a hash showing +#in which word the letter was found +%letters_in_words = find_letter_distribution( \@stickers ) ; +#tabulate how many letters are needed +for my $letter ( split( // , $word ) ) { + $needed{ $letter }++ ; +} +for my $w ( @stickers ) { + for my $let ( split // , $w ) { + $supplied{ $let }++ ; + } +} +my @supplied_letters = keys %supplied ; +my @needed_letters = keys %needed ; +#is there any needed character which is not supplied ? +if ( any { not exists( $supplied{ $_ } ) } @needed_letters ) { + say 0 ; +} +#we supply enough characters +elsif ( all { $supplied{ $_ } >= $needed{ $_ } } @needed_letters ) { + my %uniques ; #see in which stickers you found letters + my @sorted = sort { $a cmp $b } split ( // , $word ) ; + my @found ; + for my $letter ( @sorted ) { +#look up in which sticker the character needed was found. Select the word +#where it was found most often + push @found , find_most_frequent( \@{$letters_in_words{ $letter }} ) ; + } + map { $uniques{ $_ }++ } @found ; + say scalar( keys %uniques ) ; +} +else { #we have at least one supplied letter for every letter we need, but +#we have to draw more than one sticker of the same word to fulfill our +#needs. We draw more than one from the words that supply the needed letter, +#in this order : 1)multiply the word that provides the letter needed +#2)if there are more than 1 word that provide letters find out which word +#contributes most letters to the word + my @missing = grep { $supplied{ $_ } < $needed{ $_ } } @needed_letters ; + for my $letter ( @missing ) { + if ( all { $_ == ${$letters_in_words{ $letter }}[0] } + @{$letters_in_words{ $letter }} ) { + $multistickers = $needed{ $letter } - $supplied{ $letter } ; + my $num = ${$letters_in_words{ $letter }}[0] ; + $stickers[ $num ] = $stickers[ $num ] . ($stickers[ $num ] x + $multistickers) ; + } + else { #we find the missing letters in more than 1 word +#which of the stickers has the greatest intersection with our target word ? +#which word of @stickers contributes most ? + my %places_found ; + for my $num ( @{$letters_in_words{ $letter }} ) { + $places_found{ $num }++ ; + } + my @sorted = sort { $places_found{$b} <=> $places_found{$a} } keys + %places_found ; + $multistickers = $needed{ $letter } - $supplied{ $letter } - + $sorted[ 0 ] ; + my $selected = grep { $places_found{ $_ } == $sorted[ 0 ] } keys + %places_found ; + $stickers[ $selected ] = $stickers[ $selected ] . ( + $stickers[ $selected ] x $multistickers ) ; + } + } + %letters_in_words = find_letter_distribution(\@stickers) ; + my %uniqes ; + my @sorted = sort { $a cmp $b } split( // , $word ) ; + my @found ; + for my $letter ( @sorted ) { + push @found , find_most_frequent( \@{$letters_in_words{ $letter }} ) ; + } + map { $uniqes{ $_ }++ } @found ; + say ( scalar( keys %uniqes ) + $multistickers ) ; +} diff --git a/challenge-216/ulrich-rieke/raku/ch-1.raku b/challenge-216/ulrich-rieke/raku/ch-1.raku new file mode 100644 index 0000000000..65b4b25a71 --- /dev/null +++ b/challenge-216/ulrich-rieke/raku/ch-1.raku @@ -0,0 +1,12 @@ +use v6 ; + +say "Enter some words , separated by blanks!" ; +my $line = $*IN.get ; +my @words = $line.words ; +say "Enter the 2 parts of a registration number!" ; +$line = $*IN.get ; +my @registrationline = $line.words ; +my $registration = @registrationline[0] ~ @registrationline[1] ; +my $comp = set($registration.lc.comb.grep( { $_ ~~ / / } )) ; +my @selected = @words.grep( { $comp (<=) set( $_.comb) } ) ; +say "(" ~ @selected.join( ',' ) ~ ")" ; diff --git a/challenge-216/ulrich-rieke/rust/ch-1.rs b/challenge-216/ulrich-rieke/rust/ch-1.rs new file mode 100644 index 0000000000..7743114c8a --- /dev/null +++ b/challenge-216/ulrich-rieke/rust/ch-1.rs @@ -0,0 +1,28 @@ +use std::io ; + +fn main( ) { + println!("Enter some words, separated by blanks!" ) ; + let mut inline : String = String::new( ) ; + io::stdin( ).read_line( &mut inline ).unwrap( ) ; + let mut regiline : String = String::new( ) ; + println!("Enter a registration numbers, separated by blanks!" ) ; + io::stdin( ).read_line( &mut regiline ).unwrap( ) ; + let entered_line : &str = &*inline ; + let words : Vec<&str> = entered_line.split_whitespace( ).map( | s | + s.trim( ) ).collect( ) ; + let regi : &str = &*regiline ; + let registration : Vec<&str> = regi.split_whitespace( ).map( | s | + s.trim( ) ).collect( ) ; + let mut all_lowers : String = String::new( ) ; + for w in registration { + for c in w.chars( ) { + if c.is_alphabetic( ) { + all_lowers.push( c.to_ascii_lowercase( ) ) ; + } + } + } + let reg : &str = all_lowers.as_str( ) ; + let selected : Vec<&&str> = words.iter( ).filter( | &s | + reg.chars( ).all( | l | s.contains( *&l ))).collect( ) ; + println!("{:?}" , selected ) ; +} diff --git a/stats/pwc-challenge-016.json b/stats/pwc-challenge-016.json index d2c7ff6ace..f6d1b2d6a8 100644 --- a/stats/pwc-challenge-016.json +++ b/stats/pwc-challenge-016.json @@ -1,25 +1,36 @@ { - "xAxis" : { - "type" : "category" + "subtitle" : { + "text" : "[Champions: 31] Last updated at 2023-05-11 22:21:41 GMT" }, "title" : { "text" : "The Weekly Challenge - 016" }, + "chart" : { + "type" : "column" + }, + "tooltip" : { + "pointFormat" : "{point.name}: {point.y:f}
", + "headerFormat" : "{series.name}
", + "followPointer" : 1 + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, "plotOptions" : { "series" : { + "borderWidth" : 0, "dataLabels" : { "enabled" : 1, "format" : "{point.y}" - }, - "borderWidth" : 0 + } } }, - "legend" : { - "enabled" : 0 - }, "drilldown" : { "series" : [ { + "name" : "Adam Russell", "data" : [ [ "Perl", @@ -30,21 +41,19 @@ 1 ] ], - "name" : "Adam Russell", "id" : "Adam Russell" }, { + "id" : "Andrezgz", "data" : [ [ "Perl", 1 ] ], - "name" : "Andrezgz", - "id" : "Andrezgz" + "name" : "Andrezgz" }, { - "id" : "Arne Sommer", "name" : "Arne Sommer", "data" : [ [ @@ -55,7 +64,8 @@ "Blog", 1 ] - ] + ], + "id" : "Arne Sommer" }, { "name" : "Athanasius", @@ -76,14 +86,14 @@ ] }, { - "id" : "Daniel Mantovani", "name" : "Daniel Mantovani", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "Daniel Mantovani" }, { "name" : "Dave Jacoby", @@ -96,28 +106,27 @@ ] }, { - "name" : "Duane Powell", "id" : "Duane Powell", "data" : [ [ "Perl", 1 ] - ] + ], + "name" : "Duane Powell" }, { + "name" : "Duncan C. White", + "id" : "Duncan C. White", "data" : [ [ "Perl", 2 ] - ], - "id" : "Duncan C. White", - "name" : "Duncan C. White" + ] }, { "name" : "E. Choroba", - "id" : "E. Choroba", "data" : [ [ "Perl", @@ -127,10 +136,10 @@ "Blog", 1 ] - ] + ], + "id" : "E. Choroba" }, { - "id" : "Feng Chang", "name" : "Feng Chang", "data" : [ [ @@ -141,44 +150,48 @@ "Raku", 2 ] - ] + ], + "id" : "Feng Chang" }, { + "name" : "Francis Whittle", "data" : [ [ "Raku", 2 ] ], - "name" : "Francis Whittle", "id" : "Francis Whittle" }, { "id" : "Gustavo Chaves", - "name" : "Gustavo Chaves", "data" : [ [ "Perl", 1 ] - ] + ], + "name" : "Gustavo Chaves" }, { + "name" : "Jaldhar H. Vyas", "data" : [ [ "Perl", - 1 + 2 ], [ "Raku", + 2 + ], + [ + "Blog", 1 ] ], - "name" : "Jaldhar H. Vyas", "id" : "Jaldhar H. Vyas" }, { - "name" : "Joelle Maslak", "id" : "Joelle Maslak", "data" : [ [ @@ -189,31 +202,31 @@ "Raku", 2 ] - ] + ], + "name" : "Joelle Maslak" }, { - "name" : "Jorg Sommrey", "id" : "Jorg Sommrey", "data" : [ [ "Perl", 1 ] - ] + ], + "name" : "Jorg Sommrey" }, { - "name" : "Kevin Colyer", - "id" : "Kevin Colyer", "data" : [ [ "Raku", 2 ] - ] + ], + "id" : "Kevin Colyer", + "name" : "Kevin Colyer" }, { "id" : "Kian-Meng Ang", - "name" : "Kian-Meng Ang", "data" : [ [ "Perl", @@ -223,19 +236,22 @@ "Blog", 1 ] - ] + ], + "name" : "Kian-Meng Ang" }, { + "id" : "Lakpa Tashi Bhutia", "data" : [ [ "Perl", 1 ] ], - "name" : "Lakpa Tashi Bhutia", - "id" : "Lakpa Tashi Bhutia" + "name" : "Lakpa Tashi Bhutia" }, { + "name" : "Laurent Rosenfeld", + "id" : "Laurent Rosenfeld", "data" : [ [ "Perl", @@ -249,39 +265,37 @@ "Blog", 3 ] - ], - "id" : "Laurent Rosenfeld", - "name" : "Laurent Rosenfeld" + ] }, { - "id" : "Lubos Kolouch", - "name" : "Lubos Kolouch", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "Lubos Kolouch", + "name" : "Lubos Kolouch" }, { + "name" : "Michael Hamlin", + "id" : "Michael Hamlin", "data" : [ [ "Perl", 1 ] - ], - "id" : "Michael Hamlin", - "name" : "Michael Hamlin" + ] }, { + "id" : "Noud Aldenhoven", "data" : [ [ "Raku", 2 ] ], - "name" : "Noud Aldenhoven", - "id" : "Noud Aldenhoven" + "name" : "Noud Aldenhoven" }, { "data" : [ @@ -290,8 +304,8 @@ 1 ] ], - "name" : "Ozzy", - "id" : "Ozzy" + "id" : "Ozzy", + "name" : "Ozzy" }, { "data" : [ @@ -300,12 +314,10 @@ 2 ] ], - "name" : "Paulo Custodio", - "id" : "Paulo Custodio" + "id" : "Paulo Custodio", + "name" : "Paulo Custodio" }, { - "name" : "Roger Bell_West", - "id" : "Roger Bell_West", "data" : [ [ "Perl", @@ -315,9 +327,12 @@ "Blog", 1 ] - ] + ], + "id" : "Roger Bell_West", + "name" : "Roger Bell_West" }, { + "id" : "Ruben Westerberg", "data" : [ [ "Perl", @@ -328,38 +343,37 @@ 2 ] ], - "id" : "Ruben Westerberg", "name" : "Ruben Westerberg" }, { "name" : "Simon Proctor", - "id" : "Simon Proctor", "data" : [ [ "Raku", 1 ] - ] + ], + "id" : "Simon Proctor" }, { - "name" : "Steven Wilson", "id" : "Steven Wilson", "data" : [ [ "Perl", 2 ] - ] + ], + "name" : "Steven Wilson" }, { + "id" : "Stuart Little", "data" : [ [ "Raku", 2 ] ], - "name" : "Stuart Little", - "id" : "Stuart Little" + "name" : "Stuart Little" }, { "data" : [ @@ -368,12 +382,10 @@ 1 ] ], - "name" : "Veesh Goldman", - "id" : "Veesh Goldman" + "id" : "Veesh Goldman", + "name" : "Veesh Goldman" }, { - "id" : "Yozen Hernandez", - "name" : "Yozen Hernandez", "data" : [ [ "Perl", @@ -383,81 +395,87 @@ "Blog", 2 ] - ] + ], + "id" : "Yozen Hernandez", + "name" : "Yozen Hernandez" } ] }, + "xAxis" : { + "type" : "category" + }, "series" : [ { + "colorByPoint" : 1, "data" : [ { "name" : "Adam Russell", - "y" : 3, - "drilldown" : "Adam Russell" + "drilldown" : "Adam Russell", + "y" : 3 }, { "drilldown" : "Andrezgz", - "y" : 1, - "name" : "Andrezgz" + "name" : "Andrezgz", + "y" : 1 }, { - "drilldown" : "Arne Sommer", + "y" : 3, "name" : "Arne Sommer", - "y" : 3 + "drilldown" : "Arne Sommer" }, { + "name" : "Athanasius", "drilldown" : "Athanasius", - "y" : 5, - "name" : "Athanasius" + "y" : 5 }, { - "name" : "Daniel Mantovani", "y" : 2, - "drilldown" : "Daniel Mantovani" + "drilldown" : "Daniel Mantovani", + "name" : "Daniel Mantovani" }, { + "name" : "Dave Jacoby", "drilldown" : "Dave Jacoby", - "y" : 1, - "name" : "Dave Jacoby" + "y" : 1 }, { - "name" : "Duane Powell", "y" : 1, - "drilldown" : "Duane Powell" + "drilldown" : "Duane Powell", + "name" : "Duane Powell" }, { - "y" : 2, + "drilldown" : "Duncan C. White", "name" : "Duncan C. White", - "drilldown" : "Duncan C. White" + "y" : 2 }, { + "y" : 3, "drilldown" : "E. Choroba", - "name" : "E. Choroba", - "y" : 3 + "name" : "E. Choroba" }, { + "y" : 4, "drilldown" : "Feng Chang", - "name" : "Feng Chang", - "y" : 4 + "name" : "Feng Chang" }, { - "drilldown" : "Francis Whittle", "name" : "Francis Whittle", + "drilldown" : "Francis Whittle", "y" : 2 }, { - "y" : 1, + "drilldown" : "Gustavo Chaves", "name" : "Gustavo Chaves", - "drilldown" : "Gustavo Chaves" + "y" : 1 }, { "drilldown" : "Jaldhar H. Vyas", "name" : "Jaldhar H. Vyas", - "y" : 2 + "y" : 5 }, { - "drilldown" : "Joelle Maslak", "name" : "Joelle Maslak", + "drilldown" : "Joelle Maslak", "y" : 4 }, { @@ -466,24 +484,24 @@ "y" : 1 }, { - "y" : 2, + "drilldown" : "Kevin Colyer", "name" : "Kevin Colyer", - "drilldown" : "Kevin Colyer" + "y" : 2 }, { "name" : "Kian-Meng Ang", - "y" : 2, - "drilldown" : "Kian-Meng Ang" + "drilldown" : "Kian-Meng Ang", + "y" : 2 }, { "y" : 1, - "name" : "Lakpa Tashi Bhutia", - "drilldown" : "Lakpa Tashi Bhutia" + "drilldown" : "Lakpa Tashi Bhutia", + "name" : "Lakpa Tashi Bhutia" }, { - "name" : "Laurent Rosenfeld", "y" : 7, - "drilldown" : "Laurent Rosenfeld" + "drilldown" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld" }, { "y" : 2, @@ -491,19 +509,19 @@ "drilldown" : "Lubos Kolouch" }, { + "drilldown" : "Michael Hamlin", "name" : "Michael Hamlin", - "y" : 1, - "drilldown" : "Michael Hamlin" + "y" : 1 }, { - "drilldown" : "Noud Aldenhoven", "name" : "Noud Aldenhoven", + "drilldown" : "Noud Aldenhoven", "y" : 2 }, { - "name" : "Ozzy", "y" : 1, - "drilldown" : "Ozzy" + "drilldown" : "Ozzy", + "name" : "Ozzy" }, { "y" : 2, @@ -511,59 +529,45 @@ "drilldown" : "Paulo Custodio" }, { + "drilldown" : "Roger Bell_West", "name" : "Roger Bell_West", - "y" : 3, - "drilldown" : "Roger Bell_West" + "y" : 3 }, { - "name" : "Ruben Westerberg", "y" : 4, + "name" : "Ruben Westerberg", "drilldown" : "Ruben Westerberg" }, { - "y" : 1, "name" : "Simon Proctor", - "drilldown" : "Simon Proctor" + "drilldown" : "Simon Proctor", + "y" : 1 }, { + "y" : 2, "drilldown" : "Steven Wilson", - "name" : "Steven Wilson", - "y" : 2 + "name" : "Steven Wilson" }, { - "drilldown" : "Stuart Little", + "y" : 2, "name" : "Stuart Little", - "y" : 2 + "drilldown" : "Stuart Little" }, { + "y" : 1, "drilldown" : "Veesh Goldman", - "name" : "Veesh Goldman", - "y" : 1 + "name" : "Veesh Goldman" }, { + "drilldown" : "Yozen Hernandez", "name" : "Yozen Hernandez", - "y" : 4, - "drilldown" : "Yozen Hernandez" + "y" : 4 } ], - "name" : "The Weekly Challenge - 016", - "colorByPoint" : 1 + "name" : "The Weekly Challenge - 016" } ], - "tooltip" : { - "followPointer" : 1, - "headerFormat" : "{series.name}
", - "pointFormat" : "{point.name}: {point.y:f}
" - }, - "chart" : { - "type" : "column" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "subtitle" : { - "text" : "[Champions: 31] Last updated at 2023-03-26 10:37:55 GMT" + "legend" : { + "enabled" : 0 } } diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 2f445c15f6..ef77d39ae8 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,93 +1,165 @@ { + "chart" : { + "type" : "column" + }, "yAxis" : { "title" : { "text" : "Total Solutions" } }, + "legend" : { + "enabled" : 0 + }, + "title" : { + "text" : "The Weekly Challenge - 216" + }, "tooltip" : { - "pointFormat" : "{point.name}: {point.y:f}
", + "headerFormat" : "{series.name}
", "followPointer" : 1, - "headerFormat" : "{series.name}
" + "pointFormat" : "{point.name}: {point.y:f}
" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } + }, + "xAxis" : { + "type" : "category" }, "series" : [ { "name" : "The Weekly Challenge - 216", - "colorByPoint" : 1, "data" : [ { + "name" : "Arne Sommer", + "y" : 3, + "drilldown" : "Arne Sommer" + }, + { + "y" : 2, + "drilldown" : "David Ferrone", + "name" : "David Ferrone" + }, + { + "y" : 2, "drilldown" : "Feng Chang", - "name" : "Feng Chang", - "y" : 2 + "name" : "Feng Chang" }, { - "drilldown" : "James Smith", "y" : 3, + "drilldown" : "James Smith", "name" : "James Smith" }, { - "drilldown" : "Laurent Rosenfeld", "name" : "Laurent Rosenfeld", + "drilldown" : "Laurent Rosenfeld", "y" : 3 }, { + "name" : "Leo Manfredi", "drilldown" : "Leo Manfredi", - "y" : 1, - "name" : "Leo Manfredi" + "y" : 1 }, { + "y" : 2, "drilldown" : "Lubos Kolouch", - "name" : "Lubos Kolouch", - "y" : 2 + "name" : "Lubos Kolouch" }, { "name" : "Luca Ferrari", - "y" : 8, - "drilldown" : "Luca Ferrari" + "drilldown" : "Luca Ferrari", + "y" : 8 }, { - "name" : "Mark Anderson", + "drilldown" : "Mark Anderson", "y" : 2, - "drilldown" : "Mark Anderson" + "name" : "Mark Anderson" }, { - "name" : "Niels van Dijke", + "drilldown" : "Niels van Dijke", "y" : 1, - "drilldown" : "Niels van Dijke" + "name" : "Niels van Dijke" + }, + { + "y" : 3, + "drilldown" : "Peter Campbell Smith", + "name" : "Peter Campbell Smith" }, { - "name" : "Robert DiCicco", "y" : 2, - "drilldown" : "Robert DiCicco" + "drilldown" : "Robert DiCicco", + "name" : "Robert DiCicco" }, { - "drilldown" : "W. Luis Mochan", + "y" : 4, + "drilldown" : "Roger Bell_West", + "name" : "Roger Bell_West" + }, + { + "name" : "Thomas Kohler", + "drilldown" : "Thomas Kohler", + "y" : 4 + }, + { + "drilldown" : "Ulrich Rieke", "y" : 3, - "name" : "W. Luis Mochan" + "name" : "Ulrich Rieke" + }, + { + "name" : "W. Luis Mochan", + "drilldown" : "W. Luis Mochan", + "y" : 3 } - ] + ], + "colorByPoint" : 1 } ], - "legend" : { - "enabled" : 0 - }, - "title" : { - "text" : "The Weekly Challenge - 216" + "subtitle" : { + "text" : "[Champions: 16] Last updated at 2023-05-11 22:25:59 GMT" }, "drilldown" : { "series" : [ { - "name" : "Feng Chang", "data" : [ [ "Raku", 2 + ], + [ + "Blog", + 1 ] ], - "id" : "Feng Chang" + "name" : "Arne Sommer", + "id" : "Arne Sommer" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "name" : "David Ferrone", + "id" : "David Ferrone" + }, + { + "id" : "Feng Chang", + "name" : "Feng Chang", + "data" : [ + [ + "Raku", + 2 + ] + ] }, { - "name" : "James Smith", "id" : "James Smith", + "name" : "James Smith", "data" : [ [ "Perl", @@ -101,7 +173,6 @@ }, { "name" : "Laurent Rosenfeld", - "id" : "Laurent Rosenfeld", "data" : [ [ "Perl", @@ -115,27 +186,28 @@ "Blog", 1 ] - ] + ], + "id" : "Laurent Rosenfeld" }, { + "id" : "Leo Manfredi", + "name" : "Leo Manfredi", "data" : [ [ "Perl", 1 ] - ], - "id" : "Leo Manfredi", - "name" : "Leo Manfredi" + ] }, { - "id" : "Lubos Kolouch", "data" : [ [ "Perl", 2 ] ], - "name" : "Lubos Kolouch" + "name" : "Lubos Kolouch", + "id" : "Lubos Kolouch" }, { "data" : [ @@ -148,32 +220,45 @@ 6 ] ], - "id" : "Luca Ferrari", - "name" : "Luca Ferrari" + "name" : "Luca Ferrari", + "id" : "Luca Ferrari" }, { - "name" : "Mark Anderson", - "id" : "Mark Anderson", "data" : [ [ "Raku", 2 ] - ] + ], + "name" : "Mark Anderson", + "id" : "Mark Anderson" }, { - "name" : "Niels van Dijke", + "id" : "Niels van Dijke", "data" : [ [ "Perl", 1 ] ], - "id" : "Niels van Dijke" + "name" : "Niels van Dijke" + }, + { + "id" : "Peter Campbell Smith", + "name" : "Peter Campbell Smith", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ] }, { "name" : "Robert DiCicco", - "id" : "Robert DiCicco", "data" : [ [ "Perl", @@ -183,6 +268,49 @@ "Raku", 1 ] + ], + "id" : "Robert DiCicco" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ] + ], + "name" : "Roger Bell_West", + "id" : "Roger Bell_West" + }, + { + "id" : "Thomas Kohler", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 2 + ] + ], + "name" : "Thomas Kohler" + }, + { + "id" : "Ulrich Rieke", + "name" : "Ulrich Rieke", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 1 + ] ] }, { @@ -196,27 +324,9 @@ 1 ] ], - "id" : "W. Luis Mochan", - "name" : "W. Luis Mochan" + "name" : "W. Luis Mochan", + "id" : "W. Luis Mochan" } ] - }, - "subtitle" : { - "text" : "[Champions: 10] Last updated at 2023-05-11 08:28:44 GMT" - }, - "chart" : { - "type" : "column" - }, - "xAxis" : { - "type" : "category" - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } - } } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 60cbb18276..362fa32bc7 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,63 +1,63 @@ { - "yAxis" : { - "title" : { - "text" : null + "xAxis" : { + "labels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + } }, - "min" : 0 + "type" : "category" }, "tooltip" : { "pointFormat" : "{point.y:.0f}" }, + "subtitle" : { + "text" : "Last updated at 2023-05-11 22:25:58 GMT" + }, "series" : [ { "dataLabels" : { - "format" : "{point.y:.0f}", + "enabled" : "true", "y" : 10, + "format" : "{point.y:.0f}", "align" : "right", - "rotation" : -90, "color" : "#FFFFFF", - "enabled" : "true", + "rotation" : -90, "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" } }, - "name" : "Contributions", "data" : [ [ "Blog", - 3558 + 3563 ], [ "Perl", - 10986 + 10997 ], [ "Raku", - 6372 + 6378 ] - ] + ], + "name" : "Contributions" } ], + "yAxis" : { + "title" : { + "text" : null + }, + "min" : 0 + }, + "chart" : { + "type" : "column" + }, "legend" : { "enabled" : "false" }, "title" : { "text" : "The Weekly Challenge Contributions [2019 - 2023]" - }, - "subtitle" : { - "text" : "Last updated at 2023-05-11 08:28:44 GMT" - }, - "chart" : { - "type" : "column" - }, - "xAxis" : { - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - } - }, - "type" : "category" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 6fe651d15b..8dbeecd015 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,3937 +1,17 @@ { - "xAxis" : { - "type" : "category" - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } - }, - "chart" : { - "type" : "column" - }, - "drilldown" : { - "series" : [ - { - "name" : "001", - "data" : [ - [ - "Perl", - 105 - ], - [ - "Raku", - 47 - ], - [ - "Blog", - 11 - ] - ], - "id" : "001" - }, - { - "name" : "002", - "data" : [ - [ - "Perl", - 83 - ], - [ - "Raku", - 36 - ], - [ - "Blog", - 10 - ] - ], - "id" : "002" - }, - { - "name" : "003", - "data" : [ - [ - "Perl", - 48 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 9 - ] - ], - "id" : "003" - }, - { - "name" : "004", - "data" : [ - [ - "Perl", - 60 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 10 - ] - ], - "id" : "004" - }, - { - "name" : "005", - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 12 - ] - ], - "id" : "005" - }, - { - "name" : "006", - "data" : [ - [ - "Perl", - 36 - ], - [ - "Raku", - 18 - ], - [ - "Blog", - 7 - ] - ], - "id" : "006" - }, - { - "data" : [ - [ - "Perl", - 36 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 10 - ] - ], - "id" : "007", - "name" : "007" - }, - { - "name" : "008", - "id" : "008", - "data" : [ - [ - "Perl", - 48 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "name" : "009", - "id" : "009", - "data" : [ - [ - "Perl", - 46 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 11 - ] - ], - "id" : "010", - "name" : "010" - }, - { - "id" : "011", - "data" : [ - [ - "Perl", - 51 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 10 - ] - ], - "name" : "011" - }, - { - "data" : [ - [ - "Perl", - 51 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 11 - ] - ], - "id" : "012", - "name" : "012" - }, - { - "name" : "013", - "id" : "013", - "data" : [ - [ - "Perl", - 49 - ], - [ - "Raku", - 25 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "name" : "014", - "id" : "014", - "data" : [ - [ - "Perl", - 56 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "name" : "015", - "data" : [ - [ - "Perl", - 58 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 15 - ] - ], - "id" : "015" - }, - { - "name" : "016", - "id" : "016", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "name" : "017", - "id" : "017", - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "id" : "018", - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 14 - ] - ], - "name" : "018" - }, - { - "name" : "019", - "data" : [ - [ - "Perl", - 58 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 13 - ] - ], - "id" : "019" - }, - { - "name" : "020", - "id" : "020", - "data" : [ - [ - "Perl", - 53 - ], - [ - "Raku", - 37 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 40 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 10 - ] - ], - "id" : "021", - "name" : "021" - }, - { - "id" : "022", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 10 - ] - ], - "name" : "022" - }, - { - "name" : "023", - "id" : "023", - "data" : [ - [ - "Perl", - 57 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "name" : "024", - "id" : "024", - "data" : [ - [ - "Perl", - 40 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "id" : "025", - "data" : [ - [ - "Perl", - 31 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 12 - ] - ], - "name" : "025" - }, - { - "id" : "026", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 10 - ] - ], - "name" : "026" - }, - { - "name" : "027", - "id" : "027", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 9 - ] - ], - "id" : "028", - "name" : "028" - }, - { - "name" : "029", - "data" : [ - [ - "Perl", - 44 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 12 - ] - ], - "id" : "029" - }, - { - "id" : "030", - "data" : [ - [ - "Perl", - 78 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 10 - ] - ], - "name" : "030" - }, - { - "id" : "031", - "data" : [ - [ - "Perl", - 54 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 9 - ] - ], - "name" : "031" - }, - { - "id" : "032", - "data" : [ - [ - "Perl", - 61 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 10 - ] - ], - "name" : "032" - }, - { - "name" : "033", - "id" : "033", - "data" : [ - [ - "Perl", - 66 - ], - [ - "Raku", - 38 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "name" : "034", - "id" : "034", - "data" : [ - [ - "Perl", - 36 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "id" : "035", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 9 - ] - ], - "name" : "035" - }, - { - "name" : "036", - "id" : "036", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 9 - ] - ], - "id" : "037", - "name" : "037" - }, - { - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 12 - ] - ], - "id" : "038", - "name" : "038" - }, - { - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 12 - ] - ], - "id" : "039", - "name" : "039" - }, - { - "name" : "040", - "id" : "040", - "data" : [ - [ - "Perl", - 43 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 41 - ], - [ - "Raku", -