aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <mohammad.anwar@yahoo.com>2025-10-21 17:07:46 +0100
committerMohammad Sajid Anwar <mohammad.anwar@yahoo.com>2025-10-21 17:07:46 +0100
commit168cdea01e332bb9b9b40602504c8d2f153a173e (patch)
tree333e667a3d306b46cfc4c9a3ed007fb6e3eb8f2c
parent797ace953a37fa62d0204dde53a36e003e44ddcc (diff)
downloadperlweeklychallenge-club-168cdea01e332bb9b9b40602504c8d2f153a173e.tar.gz
perlweeklychallenge-club-168cdea01e332bb9b9b40602504c8d2f153a173e.tar.bz2
perlweeklychallenge-club-168cdea01e332bb9b9b40602504c8d2f153a173e.zip
- Added solutions by Lubos Kolouch.
- Added solutions by Packy Anderson. - Added solutions by Thomas Kohler. - Added solutions by Ulrich Rieke. - Added solutions by Feng Chang.
-rwxr-xr-xchallenge-344/ulrich-rieke/cpp/ch-1.cpp54
-rwxr-xr-xchallenge-344/ulrich-rieke/cpp/ch-2.cpp68
-rwxr-xr-xchallenge-344/ulrich-rieke/haskell/ch-1.hs23
-rwxr-xr-xchallenge-344/ulrich-rieke/haskell/ch-2.hs23
-rwxr-xr-xchallenge-344/ulrich-rieke/perl/ch-1.pl32
-rwxr-xr-xchallenge-344/ulrich-rieke/perl/ch-2.pl83
-rwxr-xr-xchallenge-344/ulrich-rieke/python/ch-1.py27
-rwxr-xr-xchallenge-344/ulrich-rieke/python/ch-2.py34
-rwxr-xr-xchallenge-344/ulrich-rieke/raku/ch-1.raku32
-rwxr-xr-xchallenge-344/ulrich-rieke/raku/ch-2.raku63
-rwxr-xr-xchallenge-344/ulrich-rieke/rust/ch-1.rs32
-rwxr-xr-xchallenge-344/ulrich-rieke/rust/ch-2.rs36
-rw-r--r--stats/pwc-challenge-332.json17
-rw-r--r--stats/pwc-current.json93
-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.json14
-rw-r--r--stats/pwc-language-breakdown-summary.json8
-rw-r--r--stats/pwc-leaders.json100
-rw-r--r--stats/pwc-summary-1-30.json2
-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.json2
-rw-r--r--stats/pwc-summary-211-240.json8
-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.json6
-rw-r--r--stats/pwc-summary-31-60.json2
-rw-r--r--stats/pwc-summary-61-90.json4
-rw-r--r--stats/pwc-summary-91-120.json2
-rw-r--r--stats/pwc-summary.json22
-rw-r--r--stats/pwc-yearly-language-summary.json10
36 files changed, 718 insertions, 105 deletions
diff --git a/challenge-344/ulrich-rieke/cpp/ch-1.cpp b/challenge-344/ulrich-rieke/cpp/ch-1.cpp
new file mode 100755
index 0000000000..f74f95fea4
--- /dev/null
+++ b/challenge-344/ulrich-rieke/cpp/ch-1.cpp
@@ -0,0 +1,54 @@
+#include <iostream>
+#include <vector>
+#include <string>
+#include <sstream>
+#include <algorithm>
+#include <cmath>
+
+std::vector<std::string> split( const std::string & text , const char
+ delimiter ) {
+ std::vector<std::string> tokens ;
+ std::istringstream istr { text } ;
+ std::string word ;
+ while ( std::getline( istr , word , delimiter ) )
+ tokens.push_back( word ) ;
+ return tokens ;
+}
+
+std::vector<int> decompose( int number ) {
+ std::vector<int> result ;
+ while ( number != 0 ) {
+ result.push_back( number % 10 ) ;
+ number /= 10 ;
+ }
+ std::reverse( result.begin( ) , result.end( ) ) ;
+ return result ;
+}
+
+int main( ) {
+ std::cout << "Enter some integers separated by blanks!\n" ;
+ std::string line ;
+ std::getline( std::cin , line ) ;
+ auto tokens { split( line , ' ' ) } ;
+ std::vector<int> numbers ;
+ for ( auto s : tokens )
+ numbers.push_back( std::stoi( s ) ) ;
+ std::cout << "Enter an integer!\n" ;
+ int x ;
+ std::cin >> x ;
+ std::reverse( numbers.begin( ) , numbers.end( ) ) ;
+ int total = 0 ;
+ int pos = 0 ;
+ for ( auto it = numbers.begin( ) ; it != numbers.end( ) ; ++it ) {
+ total += *it * static_cast<int>(std::pow( 10 , pos )) ;
+ pos++ ;
+ }
+ int result = total + x ;
+ auto resultArray { decompose( result ) } ;
+ std::cout << "( " ;
+ for ( int i : resultArray ) {
+ std::cout << i << ' ' ;
+ }
+ std::cout << ")\n" ;
+ return 0 ;
+}
diff --git a/challenge-344/ulrich-rieke/cpp/ch-2.cpp b/challenge-344/ulrich-rieke/cpp/ch-2.cpp
new file mode 100755
index 0000000000..f5c5eee3aa
--- /dev/null
+++ b/challenge-344/ulrich-rieke/cpp/ch-2.cpp
@@ -0,0 +1,68 @@
+#include <vector>
+#include <string>
+#include <iostream>
+#include <sstream>
+#include <algorithm>
+
+std::vector<std::string> split( const std::string & text , const char
+ delimiter ) {
+ std::vector<std::string> tokens ;
+ std::istringstream istr { text } ;
+ std::string word ;
+ while ( std::getline( istr , word , delimiter ) )
+ tokens.push_back( word ) ;
+ return tokens ;
+}
+
+std::vector<std::vector<int>> createSublists( const std::vector<int> & row ,
+ const int len ) {
+ std::vector<std::vector<int>> sublists ;
+ std::vector<int> part ;
+ int vlen = static_cast<int>( row.size( ) ) ;
+ for ( int start = 0 ; start < vlen - len + 1 ; start++ ) {
+ for ( int i = start ; i < start + len ; i++ ) {
+ part.push_back( row[i] ) ;
+ }
+ sublists.push_back( part ) ;
+ part.clear( ) ;
+ }
+ return sublists ;
+}
+
+int main( ) {
+ std::cout << "Enter some integers separated by blanks, <return> to end!\n" ;
+ std::string line ;
+ std::vector<std::vector<int>> source ;
+ std::getline( std::cin , line ) ;
+ while ( ! line.empty( ) ) {
+ auto tokens { split( line , ' ' ) } ;
+ std::vector<int> numbers ;
+ for ( auto s : tokens )
+ numbers.push_back( std::stoi( s ) ) ;
+ source.push_back( numbers ) ;
+ std::cout << "Enter some integers separated by blanks, <return> to end!\n" ;
+ std::getline( std::cin , line ) ;
+ }
+ std::cout << "Enter some integers separated by blanks!\n" ;
+ std::string targetline ;
+ std::getline( std::cin , targetline ) ;
+ auto numtokens { split( targetline , ' ' ) } ;
+ std::vector<int> target ;
+ for ( auto s : numtokens )
+ target.push_back( std::stoi( s ) ) ;
+ int totalelements = 0 ;
+ for ( auto row : source )
+ totalelements += static_cast<int>( row.size( ) ) ;
+ if ( totalelements != static_cast<int>( target.size( ) )) {
+ std::cout << "false\n" ;
+ }
+ else {
+ bool result = std::all_of( source.begin( ) , source.end( ) , [&target](
+ const auto & vec) { auto neighbours = createSublists( target ,
+ static_cast<int>(vec.size( ) ) ) ; return std::find(
+ neighbours.begin( ) , neighbours.end( ) , vec ) !=
+ neighbours.end( ) ; } ) ;
+ std::cout << std::boolalpha << result << '\n' ;
+ }
+ return 0 ;
+}
diff --git a/challenge-344/ulrich-rieke/haskell/ch-1.hs b/challenge-344/ulrich-rieke/haskell/ch-1.hs
new file mode 100755
index 0000000000..c75e5becb1
--- /dev/null
+++ b/challenge-344/ulrich-rieke/haskell/ch-1.hs
@@ -0,0 +1,23 @@
+module Challenge344
+ where
+
+decompose :: Int -> [Int]
+decompose number = reverse $ snd $ until ( (== 0 ) . fst ) step ( number , [] )
+ where
+ step :: (Int , [Int]) -> (Int , [Int])
+ step ( aNum , list ) = (div aNum 10 , list ++ [mod aNum 10] )
+
+compose :: [Int] -> Int
+compose list = sum $ map (\p -> snd p * (10 ^ fst p)) $ zip [0 , 1..]
+ ( reverse list )
+
+solution :: [Int] -> Int -> [Int]
+solution list number = decompose ( compose list + number )
+
+main :: IO ( )
+main = do
+ putStrLn "Enter some integers separated by blanks!"
+ numberline <- getLine
+ putStrLn "Enter an integer!"
+ myNum <- getLine
+ print $ solution ( map read $ words numberline ) ( read myNum )
diff --git a/challenge-344/ulrich-rieke/haskell/ch-2.hs b/challenge-344/ulrich-rieke/haskell/ch-2.hs
new file mode 100755
index 0000000000..8d5474dac9
--- /dev/null
+++ b/challenge-344/ulrich-rieke/haskell/ch-2.hs
@@ -0,0 +1,23 @@
+module Challenge344_2
+ where
+import Data.List.Split( divvy )
+
+solution :: [[Int]] -> [Int] -> Bool
+solution source target = ((length $ concat source) == length target) &&
+ all (\subli -> elem subli ( divvy ( length subli ) 1 target )) source
+
+getSomeLines :: IO [String]
+getSomeLines = do
+ line <- getLine
+ if null line then return []
+ else ( line : ) <$> getSomeLines
+
+main :: IO ( )
+main = do
+ putStrLn "Enter some integers separated by blanks, <return> to end!"
+ allLines <- getSomeLines
+ putStrLn "Enter some target numbers!"
+ targetNums <- getLine
+ let source = map ( map read . words ) allLines
+ target = map read $ words targetNums
+ print $ solution source target
diff --git a/challenge-344/ulrich-rieke/perl/ch-1.pl b/challenge-344/ulrich-rieke/perl/ch-1.pl
new file mode 100755
index 0000000000..0f4f39e305
--- /dev/null
+++ b/challenge-344/ulrich-rieke/perl/ch-1.pl
@@ -0,0 +1,32 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+
+say "Enter some integers separated by blanks!" ;
+my $line = <STDIN> ;
+chomp $line ;
+my @digits = split( /\s/ , $line ) ;
+say "Enter an integer!" ;
+my $x = <STDIN> ;
+chomp $x ;
+my $pos = 0 ;
+my $total = 0 ;
+my @reversed = reverse @digits ;
+for my $digit ( @reversed ) {
+ $total += $digit * 10 ** $pos ;
+ $pos++ ;
+}
+my $result = $total + $x ;
+say '(' . join( ',' , decompose( $result ) ) . ')' ;
+
+sub decompose {
+ my $number = shift ;
+ my @result ;
+ while ( $number != 0 ) {
+ push( @result , $number % 10 ) ;
+ $number = int( $number / 10 ) ;
+ }
+ my @resultArray = reverse @result ;
+ return @resultArray ;
+}
diff --git a/challenge-344/ulrich-rieke/perl/ch-2.pl b/challenge-344/ulrich-rieke/perl/ch-2.pl
new file mode 100755
index 0000000000..5a66301b8c
--- /dev/null
+++ b/challenge-344/ulrich-rieke/perl/ch-2.pl
@@ -0,0 +1,83 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+use List::Util qw ( all ) ;
+
+#create an array of neighbouring numbers , where each partial array
+#has a given length
+sub findNeighbours {
+ my $target = shift ;
+ my $len = shift ;
+ my @neighbours ;
+ for my $start( 0..scalar(@$target) - $len) {
+ my @row ;
+ for my $i( $start..$start + $len - 1) {
+ push( @row , $target->[$i] ) ;
+ }
+ push( @neighbours, \@row ) ;
+ }
+ return @neighbours ;
+}
+
+say "Enter some integers separated by blanks, <return> to end!" ;
+my $line = <STDIN> ;
+chomp $line ;
+my @source ;
+while ( $line ) {
+ my @row = split( /\s/ , $line ) ;
+ push( @source , \@row ) ;
+ say "Enter some integers separated by blanks, <return> to end!" ;
+ $line = <STDIN> ;
+ chomp( $line ) ;
+}
+say "Enter some integers to denote the target!" ;
+my $targetline = <STDIN> ;
+chomp $targetline ;
+my @target = split( /\s/ , $targetline ) ;
+#the condition can't be fulfilled if the total number of integers in source
+#is not equal to the number in @target
+my $totallen = 0 ;
+for my $el( @source ) {
+ $totallen += scalar( @$el ) ;
+}
+if ( $totallen != scalar( @target ) ) {
+ say "false" ;
+}
+else {
+#the strategy is : create an array of neighbouring numbers and see whether
+#a given array of @source is contained in it. If so , we add a 1 to
+#@results and in the end check whether all elements in @results are equal
+#to 1. In order to compare subarrays I stringify them in the convert
+#function
+ my @results ;
+ for my $el( @source ) {
+ my @neighbours = findNeighbours( \@target , scalar( @$el ) ) ;
+ my %targethash ;
+ for my $found( @neighbours ) {
+ $targethash{convert( $found )}++ ;
+ }
+ if ( exists( $targethash{ convert( $el ) })) {
+ push( @results , 1 ) ;
+ }
+ else {
+ push( @results , 0 ) ;
+ }
+ }
+ if ( all { $_ == 1 } @results ) {
+ say "true" ;
+ }
+ else {
+ say "false" ;
+ }
+}
+
+sub convert {
+ my $element = shift ;
+ if ( scalar( @$element) == 1 ) {
+ return $element->[0] . '|' ;
+ }
+ else {
+ return join( '|' , @$element ) ;
+ }
+}
diff --git a/challenge-344/ulrich-rieke/python/ch-1.py b/challenge-344/ulrich-rieke/python/ch-1.py
new file mode 100755
index 0000000000..69a55f59e4
--- /dev/null
+++ b/challenge-344/ulrich-rieke/python/ch-1.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+
+def decompose( number ):
+ digitarray = []
+ while number != 0:
+ digitarray.append( number % 10 )
+ number //= 10
+ result = []
+ for i in reversed( digitarray ):
+ result.append( i )
+ return result
+
+
+startarray = []
+line = input("Enter some integers separated by blanks!\n")
+for w in line.split( ' ' ):
+ startarray.append(int(w))
+line = input( "Enter an integer!\n" )
+x = int(line)
+rightOrder = reversed( startarray )
+total = 0
+pos = 0
+for num in rightOrder:
+ total += num * 10 ** pos
+ pos += 1
+result = total + x
+print( decompose( result ) )
diff --git a/challenge-344/ulrich-rieke/python/ch-2.py b/challenge-344/ulrich-rieke/python/ch-2.py
new file mode 100755
index 0000000000..023b42e4d5
--- /dev/null
+++ b/challenge-344/ulrich-rieke/python/ch-2.py
@@ -0,0 +1,34 @@
+#!/usr/bin/env python3
+
+def createNeighbours( vector , length):
+ allNeighbours = []
+ for start in range(0 , len( vector ) - length + 1):
+ neighbours = []
+ for i in range( start , start + length ):
+ neighbours.append( vector[i] )
+ allNeighbours.append( neighbours )
+ return allNeighbours
+
+source = []
+line = input( "Enter some integers , <return> to end!\n" )
+while line:
+ row = []
+ for w in line.split( ' ' ):
+ row.append( int( w ) )
+ source.append( row )
+ line = input( "Enter some integers , <return> to end!\n" )
+target = []
+targetline = input( "Enter some integers to denote the target!\n" )
+for w in targetline.split( ' ' ):
+ target.append( int( w ) )
+totallen = 0
+for v in source:
+ totallen += len(v)
+if totallen != len(target):
+ print( "False" )
+else:
+ results = []
+ for sublist in source:
+ neighbours = createNeighbours( target , len(sublist))
+ results.append( sublist in neighbours )
+ print( all( results ) )
diff --git a/challenge-344/ulrich-rieke/raku/ch-1.raku b/challenge-344/ulrich-rieke/raku/ch-1.raku
new file mode 100755
index 0000000000..ec9e1186eb
--- /dev/null
+++ b/challenge-344/ulrich-rieke/raku/ch-1.raku
@@ -0,0 +1,32 @@
+use v6 ;
+
+sub decompose( $number is copy ) {
+ my @digits ;
+ while ( $number != 0 ) {
+ @digits.push( $number % 10 ) ;
+ $number div= 10 ;
+ }
+ my @result = @digits.reverse ;
+ return @result ;
+}
+
+say "Enter some integers separated by blanks!" ;
+my $line = $*IN.get ;
+my @numbers = $line.words.map( {.Int} ) ;
+say "Enter an integer!" ;
+$line = $*IN.get ;
+my $x = +$line ;
+#the task amounts to interpreting the array as an integer number
+#with the numbers as digits and adding this number to $x , decomposing
+#the result thereafter
+my $total = 0 ;
+my @digits = @numbers.reverse ;
+my $pos = 0 ;
+for @digits -> $digit {
+ $total += $digit * 10 ** $pos ;
+ $pos++ ;
+}
+my $result = $total + $x ;
+my @resultArray = decompose( $result ) ;
+say '(' ~ @resultArray.join( ',' ) ~ ')' ;
+
diff --git a/challenge-344/ulrich-rieke/raku/ch-2.raku b/challenge-344/ulrich-rieke/raku/ch-2.raku
new file mode 100755
index 0000000000..dd94a4b2a8
--- /dev/null
+++ b/challenge-344/ulrich-rieke/raku/ch-2.raku
@@ -0,0 +1,63 @@
+use v6 ;
+
+sub findNeighbours( $len , @array ) {
+ my $alen = @array.elems ;
+ my @neighbours ;
+ for (0..$alen - $len) -> $start {
+ my @row ;
+ for ( $start..$start + $len - 1 ) -> $i {
+ @row.push( @array[$i] ) ;
+ }
+ @neighbours.push( @row ) ;
+ }
+ return @neighbours ;
+}
+
+#stringify @array for comparison!
+sub convert( @array ) {
+ my $word ;
+ if ( @array.elems == 1 ) {
+ $word ~= (~@array[0] ~ '|') ;
+ }
+ else {
+ $word = @array.join( '|' ) ;
+ }
+ return $word ;
+}
+
+say "Enter some integers, <return> to end!" ;
+my $line = $*IN.get ;
+my @source ;
+while ( $line ) {
+ my @row = $line.words.map( {.Int} ) ;
+ @source.push( @row ) ;
+ say "Enter some integers, <return> to end!" ;
+ $line = $*IN.get ;
+}
+say "Enter some integers for the target!" ;
+my $targetline = $*IN.get ;
+my @target = $targetline.words.map( {.Int} ) ;
+my $sourceelements = 0 ;
+for @source -> @el {
+ $sourceelements += @el.elems ;
+}
+if ( $sourceelements != @target.elems ) {
+ say "False" ;
+}
+else {
+ my @results ;
+ for @source -> @el {
+ my @neighbours = findNeighbours(@el.elems , @target ) ;
+ my %targethash ;
+ for @neighbours -> @found {
+ %targethash{convert( @found )}++ ;
+ }
+ if ( %targethash{ convert( @el ) }:exists ) {
+ @results.push( 1 ) ;
+ }
+ else {
+ @results.push( 0 ) ;
+ }
+ }
+ say so 1 == @results.all ;
+}
diff --git a/challenge-344/ulrich-rieke/rust/ch-1.rs b/challenge-344/ulrich-rieke/rust/ch-1.rs
new file mode 100755
index 0000000000..c6e7c7c8f8
--- /dev/null
+++ b/challenge-344/ulrich-rieke/rust/ch-1.rs
@@ -0,0 +1,32 @@
+use std::io ;
+
+fn decompose( mut number : u32 ) -> Vec<u32> {
+ let mut digits : Vec<u32> = Vec::new( ) ;
+ while number != 0 {
+ digits.push( number % 10 ) ;
+ number /= 10 ;
+ }
+ let result : Vec<u32> = digits.into_iter( ).rev( ).collect( ) ;
+ result
+}
+
+fn main() {
+ println!("Enter some integers separated by blanks!");
+ let mut inline : String = String::new( ) ;
+ io::stdin( ).read_line( & mut inline ).unwrap( ) ;
+ let digits : Vec<u32> = inline.trim( ).split_whitespace( ).map(
+ |s| s.parse::<u32>( ).unwrap( )).collect( ) ;
+ println!("Enter an integer!") ;
+ inline.clear( ) ;
+ io::stdin( ).read_line( &mut inline ).unwrap( ) ;
+ let number : u32 = inline.trim( ).parse::<u32>().unwrap( ) ;
+ let mut total : u32 = 0 ;
+ let changed_order : Vec<u32> = digits.into_iter( ).rev( ).collect( ) ;
+ let mut pos : u32 = 0 ;
+ changed_order.into_iter( ).map( |d| {
+ let value : u32 = d * 10u32.pow( pos ) ;
+ pos += 1 ;
+ value }).for_each( |n| total += n ) ;
+ let result : u32 = total + number ;
+ println!("{:?}" , decompose( result ) ) ;
+}
diff --git a/challenge-344/ulrich-rieke/rust/ch-2.rs b/challenge-344/ulrich-rieke/rust/ch-2.rs
new file mode 100755
index 0000000000..d68a02dfd5
--- /dev/null
+++ b/challenge-344/ulrich-rieke/rust/ch-2.rs
@@ -0,0 +1,36 @@
+use std::io ;
+
+fn main() {
+ println!("Enter some number arrays , <return> to end!");
+ let mut inline : String = String::new( ) ;
+ io::stdin( ).read_line( &mut inline ).unwrap( ) ;
+ let mut source : Vec<Vec<i32>> = Vec::new( ) ;
+ while inline != "\n".to_string( ) {
+ let nums : Vec<i32> = inline.trim( ).split_whitespace( ).map(
+ |s| s.parse::<i32>().unwrap( )).collect( ) ;
+ source.push( nums.clone( ) ) ;
+ inline.clear( ) ;
+ println!("Enter some number arrays , <return> to end!") ;
+ io::stdin( ).read_line( &mut inline ).unwrap( ) ;
+ }
+ println!("Enter a target array!") ;
+ let mut targetline : String = String::new( ) ;
+ io::stdin( ).read_line( &mut targetline ).unwrap( ) ;
+ let target : Vec<i32> = targetline.trim( ).split_whitespace( ).
+ map( |s| s.parse::<i32>().unwrap( )).collect( ) ;
+ let mut source_elements : usize = 0 ;
+ source.iter( ).map( |v| v.len( )).for_each( |d| source_elements += d ) ;
+ if source_elements != target.len( ) {
+ println!("false") ;
+ }
+ else {
+ let condition : bool = source.into_iter( ).all( |v| {
+ let searched = &v[..] ;
+ let targetslice = &target[..] ;
+ let neighbours : Vec<&[i32]> = targetslice.windows( v.len( ) )
+ .collect( ) ;
+ neighbours.iter( ).find( |&&n| n == searched ).is_some( )
+ }) ;
+ println!("{}" , condition ) ;
+ }
+}
diff --git a/stats/pwc-challenge-332.json b/stats/pwc-challenge-332.json
index 7a3585b0a8..2db1ff8aeb 100644
--- a/stats/pwc-challenge-332.json
+++ b/stats/pwc-challenge-332.json
@@ -185,6 +185,16 @@
{
"data" : [
[
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "Lubos Kolouch",
+ "name" : "Lubos Kolouch"
+ },
+ {
+ "data" : [
+ [
"Raku",
2
],
@@ -528,6 +538,11 @@
"y" : 2
},
{
+ "drilldown" : "Lubos Kolouch",
+ "name" : "Lubos Kolouch",
+ "y" : 2
+ },
+ {
"drilldown" : "Luca Ferrari",
"name" : "Luca Ferrari",
"y" : 12
@@ -632,7 +647,7 @@
}
],
"subtitle" : {
- "text" : "[Champions: 35] Last updated at 2025-08-19 11:04:11 GMT"
+ "text" : "[Champions: 36] Last updated at 2025-10-21 16:05:30 GMT"
},
"title" : {
"text" : "The Weekly Challenge - 332"
diff --git a/stats/pwc-current.json b/stats/pwc-current.json
index 2610e5f92d..0955c32ef8 100644
--- a/stats/pwc-current.json
+++ b/stats/pwc-current.json
@@ -49,6 +49,26 @@
[
"Raku",
2
+ ]
+ ],
+ "id" : "Feng Chang",
+ "name" : "Feng Chang"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "Lubos Kolouch",
+ "name" : "Lubos Kolouch"
+ },
+ {
+ "data" : [
+ [
+ "Raku",
+ 2
],
[
"Blog",
@@ -99,6 +119,24 @@
2
],
[
+ "Raku",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Packy Anderson",
+ "name" : "Packy Anderson"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
"Blog",
1
]
@@ -111,6 +149,34 @@
[
"Perl",
2
+ ],
+ [
+ "Blog",
+ 2
+ ]
+ ],
+ "id" : "Thomas Kohler",
+ "name" : "Thomas Kohler"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 2
+ ]
+ ],
+ "id" : "Ulrich Rieke",
+ "name" : "Ulrich Rieke"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
]
],
"id" : "Vinod Kumar K",
@@ -179,6 +245,16 @@
"y" : 2
},
{
+ "drilldown" : "Feng Chang",
+ "name" : "Feng Chang",
+ "y" : 2
+ },
+ {
+ "drilldown" : "Lubos Kolouch",
+ "name" : "Lubos Kolouch",
+ "y" : 2
+ },
+ {
"drilldown" : "Luca Ferrari",
"name" : "Luca Ferrari",
"y" : 4
@@ -199,11 +275,26 @@
"y" : 2
},
{
+ "drilldown" : "Packy Anderson",
+ "name" : "Packy Anderson",
+ "y" : 5
+ },
+ {
"drilldown" : "Peter Campbell Smith",
"name" : "Peter Campbell Smith",
"y" : 3
},
{
+ "drilldown" : "Thomas Kohler",
+ "name" : "Thomas Kohler",
+ "y" : 4
+ },
+ {
+ "drilldown" : "Ulrich Rieke",
+ "name" : "Ulrich Rieke",
+ "y" : 4
+ },
+ {
"drilldown" : "Vinod Kumar K",
"name" : "Vinod Kumar K",
"y" : 2
@@ -223,7 +314,7 @@
}
],
"subtitle" : {
- "text" : "[Champions: 12] Last updated at 2025-10-20 19:34:28 GMT"
+ "text" : "[Champions: 17] Last updated at 2025-10-21 16:07:16 GMT"
},
"title" : {
"text" : "The Weekly Challenge - 344"
diff --git a/stats/pwc-language-breakdown-2019.json b/stats/pwc-language-breakdown-2019.json
index 0724960da2..3d240a46f8 100644
--- a/stats/pwc-language-breakdown-2019.json
+++ b/stats/pwc-language-breakdown-2019.json
@@ -970,7 +970,7 @@
}
],
"subtitle" : {
- "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-10-20 19:34:28 GMT"
+ "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-10-21 16:07:16 GMT"
},
"title" : {
"text" : "The Weekly Challenge Language"
diff --git a/stats/pwc-language-breakdown-2020.json b/stats/pwc-language-breakdown-2020.json
index 1a5fe4b357..3019a7f99d 100644
--- a/