From 168cdea01e332bb9b9b40602504c8d2f153a173e Mon Sep 17 00:00:00 2001 From: Mohammad Sajid Anwar Date: Tue, 21 Oct 2025 17:07:46 +0100 Subject: - 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. --- challenge-344/ulrich-rieke/cpp/ch-1.cpp | 54 ++++++++++++++++ challenge-344/ulrich-rieke/cpp/ch-2.cpp | 68 ++++++++++++++++++++ challenge-344/ulrich-rieke/haskell/ch-1.hs | 23 +++++++ challenge-344/ulrich-rieke/haskell/ch-2.hs | 23 +++++++ challenge-344/ulrich-rieke/perl/ch-1.pl | 32 +++++++++ challenge-344/ulrich-rieke/perl/ch-2.pl | 83 ++++++++++++++++++++++++ challenge-344/ulrich-rieke/python/ch-1.py | 27 ++++++++ challenge-344/ulrich-rieke/python/ch-2.py | 34 ++++++++++ challenge-344/ulrich-rieke/raku/ch-1.raku | 32 +++++++++ challenge-344/ulrich-rieke/raku/ch-2.raku | 63 ++++++++++++++++++ challenge-344/ulrich-rieke/rust/ch-1.rs | 32 +++++++++ challenge-344/ulrich-rieke/rust/ch-2.rs | 36 +++++++++++ stats/pwc-challenge-332.json | 17 ++++- stats/pwc-current.json | 93 ++++++++++++++++++++++++++- stats/pwc-language-breakdown-2019.json | 2 +- stats/pwc-language-breakdown-2020.json | 2 +- stats/pwc-language-breakdown-2021.json | 2 +- stats/pwc-language-breakdown-2022.json | 2 +- stats/pwc-language-breakdown-2023.json | 2 +- stats/pwc-language-breakdown-2024.json | 2 +- stats/pwc-language-breakdown-2025.json | 14 ++-- stats/pwc-language-breakdown-summary.json | 8 +-- stats/pwc-leaders.json | 100 ++++++++++++++--------------- stats/pwc-summary-1-30.json | 2 +- stats/pwc-summary-121-150.json | 2 +- stats/pwc-summary-151-180.json | 4 +- stats/pwc-summary-181-210.json | 2 +- stats/pwc-summary-211-240.json | 8 +-- stats/pwc-summary-241-270.json | 2 +- stats/pwc-summary-271-300.json | 6 +- stats/pwc-summary-301-330.json | 6 +- stats/pwc-summary-31-60.json | 2 +- stats/pwc-summary-61-90.json | 4 +- stats/pwc-summary-91-120.json | 2 +- stats/pwc-summary.json | 22 +++---- stats/pwc-yearly-language-summary.json | 10 +-- 36 files changed, 718 insertions(+), 105 deletions(-) create mode 100755 challenge-344/ulrich-rieke/cpp/ch-1.cpp create mode 100755 challenge-344/ulrich-rieke/cpp/ch-2.cpp create mode 100755 challenge-344/ulrich-rieke/haskell/ch-1.hs create mode 100755 challenge-344/ulrich-rieke/haskell/ch-2.hs create mode 100755 challenge-344/ulrich-rieke/perl/ch-1.pl create mode 100755 challenge-344/ulrich-rieke/perl/ch-2.pl create mode 100755 challenge-344/ulrich-rieke/python/ch-1.py create mode 100755 challenge-344/ulrich-rieke/python/ch-2.py create mode 100755 challenge-344/ulrich-rieke/raku/ch-1.raku create mode 100755 challenge-344/ulrich-rieke/raku/ch-2.raku create mode 100755 challenge-344/ulrich-rieke/rust/ch-1.rs create mode 100755 challenge-344/ulrich-rieke/rust/ch-2.rs 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 +#include +#include +#include +#include +#include + +std::vector split( const std::string & text , const char + delimiter ) { + std::vector tokens ; + std::istringstream istr { text } ; + std::string word ; + while ( std::getline( istr , word , delimiter ) ) + tokens.push_back( word ) ; + return tokens ; +} + +std::vector decompose( int number ) { + std::vector 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 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(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 +#include +#include +#include +#include + +std::vector split( const std::string & text , const char + delimiter ) { + std::vector tokens ; + std::istringstream istr { text } ; + std::string word ; + while ( std::getline( istr , word , delimiter ) ) + tokens.push_back( word ) ; + return tokens ; +} + +std::vector> createSublists( const std::vector & row , + const int len ) { + std::vector> sublists ; + std::vector part ; + int vlen = static_cast( 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, to end!\n" ; + std::string line ; + std::vector> source ; + std::getline( std::cin , line ) ; + while ( ! line.empty( ) ) { + auto tokens { split( line , ' ' ) } ; + std::vector numbers ; + for ( auto s : tokens ) + numbers.push_back( std::stoi( s ) ) ; + source.push_back( numbers ) ; + std::cout << "Enter some integers separated by blanks, 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 target ; + for ( auto s : numtokens ) + target.push_back( std::stoi( s ) ) ; + int totalelements = 0 ; + for ( auto row : source ) + totalelements += static_cast( row.size( ) ) ; + if ( totalelements != static_cast( 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(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, 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 = ; +chomp $line ; +my @digits = split( /\s/ , $line ) ; +say "Enter an integer!" ; +my $x = ; +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, to end!" ; +my $line = ; +chomp $line ; +my @source ; +while ( $line ) { + my @row = split( /\s/ , $line ) ; + push( @source , \@row ) ; + say "Enter some integers separated by blanks, to end!" ; + $line = ; + chomp( $line ) ; +} +say "Enter some integers to denote the target!" ; +my $targetline = ; +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 , to end!\n" ) +while line: + row = [] + for w in line.split( ' ' ): + row.append( int( w ) ) + source.append( row ) + line = input( "Enter some integers , 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, to end!" ; +my $line = $*IN.get ; +my @source ; +while ( $line ) { + my @row = $line.words.map( {.Int} ) ; + @source.push( @row ) ; + say "Enter some integers, 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 { + let mut digits : Vec = Vec::new( ) ; + while number != 0 { + digits.push( number % 10 ) ; + number /= 10 ; + } + let result : Vec = 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 = inline.trim( ).split_whitespace( ).map( + |s| s.parse::( ).unwrap( )).collect( ) ; + println!("Enter an integer!") ; + inline.clear( ) ; + io::stdin( ).read_line( &mut inline ).unwrap( ) ; + let number : u32 = inline.trim( ).parse::().unwrap( ) ; + let mut total : u32 = 0 ; + let changed_order : Vec = 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 , to end!"); + let mut inline : String = String::new( ) ; + io::stdin( ).read_line( &mut inline ).unwrap( ) ; + let mut source : Vec> = Vec::new( ) ; + while inline != "\n".to_string( ) { + let nums : Vec = inline.trim( ).split_whitespace( ).map( + |s| s.parse::().unwrap( )).collect( ) ; + source.push( nums.clone( ) ) ; + inline.clear( ) ; + println!("Enter some number arrays , 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 = targetline.trim( ).split_whitespace( ). + map( |s| s.parse::().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 @@ -182,6 +182,16 @@ "id" : "Kjetil Skotheim", "name" : "Kjetil Skotheim" }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Lubos Kolouch", + "name" : "Lubos Kolouch" + }, { "data" : [ [ @@ -527,6 +537,11 @@ "name" : "Kjetil Skotheim", "y" : 2 }, + { + "drilldown" : "Lubos Kolouch", + "name" : "Lubos Kolouch", + "y" : 2 + }, { "drilldown" : "Luca Ferrari", "name" : "Luca Ferrari", @@ -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 @@ -44,6 +44,26 @@ "id" : "E. Choroba", "name" : "E. Choroba" }, + { + "data" : [ + [ + "Raku", + 2 + ] + ], + "id" : "Feng Chang", + "name" : "Feng Chang" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Lubos Kolouch", + "name" : "Lubos Kolouch" + }, { "data" : [ [ @@ -92,6 +112,24 @@ "id" : "Niels van Dijke", "name" : "Niels van Dijke" }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Packy Anderson", + "name" : "Packy Anderson" + }, { "data" : [ [ @@ -106,6 +144,34 @@ "id" : "Peter Campbell Smith", "name" : "Peter Campbell Smith" }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 2 + ] + ], + "id" : "Thomas Kohler", + "name" : "Thomas Kohler" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ] + ], + "id" : "Ulrich Rieke", + "name" : "Ulrich Rieke" + }, { "data" : [ [ @@ -178,6 +244,16 @@ "name" : "E. Choroba", "y" : 2 }, + { + "drilldown" : "Feng Chang", + "name" : "Feng Chang", + "y" : 2 + }, + { + "drilldown" : "Lubos Kolouch", + "name" : "Lubos Kolouch", + "y" : 2 + }, { "drilldown" : "Luca Ferrari", "name" : "Luca Ferrari", @@ -198,11 +274,26 @@ "name" : "Niels van Dijke", "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", @@ -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/stats/pwc-language-breakdown-2020.json +++ b/stats/pwc-language-breakdown-2020.json @@ -1223,7 +1223,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-2021.json b/stats/pwc-language-breakdown-2021.json index 9385198640..4b67075b1d 100644 --- a/stats/pwc-language-breakdown-2021.json +++ b/stats/pwc-language-breakdown-2021.json @@ -1223,7 +1223,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-2022.json b/stats/pwc-language-breakdown-2022.json index 3d3e8430d4..8b499a9263 100644 --- a/stats/pwc-language-breakdown-2022.json +++ b/stats/pwc-language-breakdown-2022.json @@ -1223,7 +1223,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-2023.json b/stats/pwc-language-breakdown-2023.json index d0bc85e134..6670bd8e5e 100644 --- a/stats/pwc-language-breakdown-2023.json +++ b/stats/pwc-language-breakdown-2023.json @@ -1200,7 +1200,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-2024.json b/stats/pwc-language-breakdown-2024.json index 7979da7e20..e2e4e2fcbb 100644 --- a/stats/pwc-language-breakdown-2024.json +++ b/stats/pwc-language-breakdown-2024.json @@ -1246,7 +1246,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-2025.json b/stats/pwc-language-breakdown-2025.json index 2bc3358ad4..737180f5ab 100644 --- a/stats/pwc-language-breakdown-2025.json +++ b/stats/pwc-language-breakdown-2025.json @@ -8,15 +8,15 @@ "data" : [ [ "Perl", - 17 + 25 ], [ "Raku", - 7 + 13 ], [ "Blog", - 4 + 7 ] ], "id" : "344", @@ -224,7 +224,7 @@ "data" : [ [ "Perl", - 50 + 52 ], [ "Raku", @@ -781,7 +781,7 @@ { "drilldown" : "344", "name" : "344", - "y" : 28 + "y" : 45 }, { "drilldown" : "343", @@ -841,7 +841,7 @@ { "drilldown" : "332", "name" : "332", - "y" : 105 + "y" : 107 }, { "drilldown" : "331", @@ -993,7 +993,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-summary.json b/stats/pwc-language-breakdown-summary.json index 4368b4be13..bb191f14de 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -10,15 +10,15 @@ "data" : [ [ "Perl", - 17716 + 17726 ], [ "Raku", - 9826 + 9832 ], [ "Blog", - 6348 + 6351 ] ], "dataLabels" : { @@ -37,7 +37,7 @@ } ], "subtitle" : { - "text" : "Last updated at 2025-10-20 19:34:28 GMT" + "text" : "Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "The Weekly Challenge Contributions [2019 - 2025]" diff --git a/stats/pwc-leaders.json b/stats/pwc-leaders.json index 657e296f32..e1b63b592f 100644 --- a/stats/pwc-leaders.json +++ b/stats/pwc-leaders.json @@ -112,11 +112,11 @@ "data" : [ [ "Perl", - 524 + 526 ], [ "Raku", - 532 + 534 ] ], "id" : "Ulrich Rieke", @@ -226,37 +226,37 @@ "data" : [ [ "Perl", - 337 + 585 ], [ "Raku", - 194 + 55 ], [ "Blog", - 137 + 30 ] ], - "id" : "Colin Crain", - "name" : "Colin Crain" + "id" : "Lubos Kolouch", + "name" : "Lubos Kolouch" }, { "data" : [ [ "Perl", - 581 + 337 ], [ "Raku", - 55 + 194 ], [ "Blog", - 30 + 137 ] ], - "id" : "Lubos Kolouch", - "name" : "Lubos Kolouch" + "id" : "Colin Crain", + "name" : "Colin Crain" }, { "data" : [ @@ -318,11 +318,11 @@ "data" : [ [ "Perl", - 288 + 290 ], [ "Blog", - 281 + 283 ] ], "id" : "Thomas Kohler", @@ -336,12 +336,30 @@ ], [ "Raku", - 475 + 477 ] ], "id" : "Feng Chang", "name" : "Feng Chang" }, + { + "data" : [ + [ + "Perl", + 192 + ], + [ + "Raku", + 192 + ], + [ + "Blog", + 97 + ] + ], + "id" : "Packy Anderson", + "name" : "Packy Anderson" + }, { "data" : [ [ @@ -370,24 +388,6 @@ "id" : "Jan Krnavek", "name" : "Jan Krnavek" }, - { - "data" : [ - [ - "Perl", - 190 - ], - [ - "Raku", - 190 - ], - [ - "Blog", - 96 - ] - ], - "id" : "Packy Anderson", - "name" : "Packy Anderson" - }, { "data" : [ [ @@ -827,7 +827,7 @@ { "drilldown" : "Ulrich Rieke", "name" : "7: Ulrich Rieke", - "y" : 2112 + "y" : 2120 }, { "drilldown" : "Flavio Poletti", @@ -860,14 +860,14 @@ "y" : 1446 }, { - "drilldown" : "Colin Crain", - "name" : "14: Colin Crain", - "y" : 1336 + "drilldown" : "Lubos Kolouch", + "name" : "14: Lubos Kolouch", + "y" : 1340 }, { - "drilldown" : "Lubos Kolouch", - "name" : "15: Lubos Kolouch", - "y" : 1332 + "drilldown" : "Colin Crain", + "name" : "15: Colin Crain", + "y" : 1336 }, { "drilldown" : "Simon Green", @@ -892,28 +892,28 @@ { "drilldown" : "Thomas Kohler", "name" : "20: Thomas Kohler", - "y" : 1138 + "y" : 1146 }, { "drilldown" : "Feng Chang", "name" : "21: Feng Chang", - "y" : 994 + "y" : 998 + }, + { + "drilldown" : "Packy Anderson", + "name" : "22: Packy Anderson", + "y" : 962 }, { "drilldown" : "Ali Moradi", - "name" : "22: Ali Moradi", + "name" : "23: Ali Moradi", "y" : 960 }, { "drilldown" : "Jan Krnavek", - "name" : "23: Jan Krnavek", + "name" : "24: Jan Krnavek", "y" : 954 }, - { - "drilldown" : "Packy Anderson", - "name" : "24: Packy Anderson", - "y" : 952 - }, { "drilldown" : "Cheok-Yin Fung", "name" : "25: Cheok-Yin Fung", @@ -1049,7 +1049,7 @@ } ], "subtitle" : { - "text" : "Click the columns to drilldown the score breakdown. Last updated at 2025-10-20 19:34:28 GMT" + "text" : "Click the columns to drilldown the score breakdown. Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "Team Leaders (TOP 50)" diff --git a/stats/pwc-summary-1-30.json b/stats/pwc-summary-1-30.json index 714e90782e..16da4907c5 100644 --- a/stats/pwc-summary-1-30.json +++ b/stats/pwc-summary-1-30.json @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-10-20 19:34:28 GMT" + "text" : "[Champions: 30] Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-summary-121-150.json b/stats/pwc-summary-121-150.json index fcb896f874..24decf9bea 100644 --- a/stats/pwc-summary-121-150.json +++ b/stats/pwc-summary-121-150.json @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-10-20 19:34:28 GMT" + "text" : "[Champions: 30] Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-summary-151-180.json b/stats/pwc-summary-151-180.json index 5584aadb13..b3ed8add7b 100644 --- a/stats/pwc-summary-151-180.json +++ b/stats/pwc-summary-151-180.json @@ -27,7 +27,7 @@ 17, 2, 0, - 581, + 585, 0, 0, 0, @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-10-20 19:34:28 GMT" + "text" : "[Champions: 30] Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-summary-181-210.json b/stats/pwc-summary-181-210.json index 28b18ae878..82717c194d 100644 --- a/stats/pwc-summary-181-210.json +++ b/stats/pwc-summary-181-210.json @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-10-20 19:34:28 GMT" + "text" : "[Champions: 30] Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-summary-211-240.json b/stats/pwc-summary-211-240.json index fbef31e28b..4182539bab 100644 --- a/stats/pwc-summary-211-240.json +++ b/stats/pwc-summary-211-240.json @@ -17,7 +17,7 @@ 0, 0, 8, - 190, + 192, 18, 594, 3, @@ -52,7 +52,7 @@ 0, 28, 0, - 190, + 192, 0, 0, 0, @@ -87,7 +87,7 @@ 0, 0, 0, - 96, + 97, 0, 0, 1, @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-10-20 19:34:28 GMT" + "text" : "[Champions: 30] Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-summary-241-270.json b/stats/pwc-summary-241-270.json index c353906790..bdee3d58a7 100644 --- a/stats/pwc-summary-241-270.json +++ b/stats/pwc-summary-241-270.json @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-10-20 19:34:28 GMT" + "text" : "[Champions: 30] Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-summary-271-300.json b/stats/pwc-summary-271-300.json index f67450f47e..03bfefcdb6 100644 --- a/stats/pwc-summary-271-300.json +++ b/stats/pwc-summary-271-300.json @@ -38,7 +38,7 @@ 6, 4, 2, - 288, + 290, 1 ], "name" : "Perl" @@ -108,14 +108,14 @@ 0, 0, 0, - 281, + 283, 0 ], "name" : "Blog" } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-10-20 19:34:28 GMT" + "text" : "[Champions: 30] Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-summary-301-330.json b/stats/pwc-summary-301-330.json index b791a89ad4..930c387f11 100644 --- a/stats/pwc-summary-301-330.json +++ b/stats/pwc-summary-301-330.json @@ -21,7 +21,7 @@ 0, 2, 4, - 524, + 526, 24, 18, 16, @@ -54,7 +54,7 @@ 2, 0, 0, - 532, + 534, 0, 0, 2, @@ -109,7 +109,7 @@ } ], "subtitle" : { - "text" : "[Champions: 28] Last updated at 2025-10-20 19:34:28 GMT" + "text" : "[Champions: 28] Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-summary-31-60.json b/stats/pwc-summary-31-60.json index 059c724ee8..609ae660ee 100644 --- a/stats/pwc-summary-31-60.json +++ b/stats/pwc-summary-31-60.json @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-10-20 19:34:28 GMT" + "text" : "[Champions: 30] Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-summary-61-90.json b/stats/pwc-summary-61-90.json index e767c61eb6..f898fcd6d8 100644 --- a/stats/pwc-summary-61-90.json +++ b/stats/pwc-summary-61-90.json @@ -72,7 +72,7 @@ 0, 0, 0, - 475, + 477, 4, 237 ], @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-10-20 19:34:28 GMT" + "text" : "[Champions: 30] Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-summary-91-120.json b/stats/pwc-summary-91-120.json index 96fcb0a8cf..250d08d046 100644 --- a/stats/pwc-summary-91-120.json +++ b/stats/pwc-summary-91-120.json @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-10-20 19:34:28 GMT" + "text" : "[Champions: 30] Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-summary.json b/stats/pwc-summary.json index d76daec9b1..62d493c457 100644 --- a/stats/pwc-summary.json +++ b/stats/pwc-summary.json @@ -177,7 +177,7 @@ 16, 1, 0, - 298, + 300, 0, 0, 0, @@ -227,7 +227,7 @@ 0, 0, 5, - 96, + 97, 9, 297, 2, @@ -308,7 +308,7 @@ 3, 2, 1, - 146, + 147, 1, 6, 7, @@ -321,7 +321,7 @@ 0, 1, 2, - 284, + 285, 12, 9, 9, @@ -397,8 +397,8 @@ 6, 0, 0, - 9, 1, + 9, 0, 104, 0, @@ -430,7 +430,7 @@ 0, 0, 0, - 241, + 242, 2, 119, 18, @@ -560,7 +560,7 @@ 0, 20, 0, - 96, + 97, 0, 0, 0, @@ -654,7 +654,7 @@ 1, 0, 0, - 285, + 286, 0, 0, 2, @@ -893,7 +893,7 @@ 0, 0, 0, - 96, + 97, 0, 0, 1, @@ -974,7 +974,7 @@ 0, 0, 0, - 143, + 144, 0, 3, 0, @@ -1009,7 +1009,7 @@ } ], "subtitle" : { - "text" : "[Champions: 328] Last updated at 2025-10-20 19:34:28 GMT" + "text" : "[Champions: 328] Last updated at 2025-10-21 16:07:16 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-yearly-language-summary.json b/stats/pwc-yearly-language-summary.json index 748dcaf530..0b64af7284 100644 --- a/stats/pwc-yearly-language-summary.json +++ b/stats/pwc-yearly-language-summary.json @@ -8,15 +8,15 @@ "data" : [ [ "Perl", - 1939 + 1949 ], [ "Raku", - 950 + 956 ], [ "Blog", - 758 + 761 ] ], "id" : "2025", @@ -151,7 +151,7 @@ { "drilldown" : "2025", "name" : "2025", - "y" : 3647 + "y" : 3666 }, { "drilldown" : "2024", @@ -188,7 +188,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" -- cgit