aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <mohammad.anwar@yahoo.com>2025-08-25 21:13:28 +0100
committerMohammad Sajid Anwar <mohammad.anwar@yahoo.com>2025-08-25 21:13:28 +0100
commitcfe111699674dcbdae6a9172888ec4a0cf5ca4c1 (patch)
treee2311b3c2ed8dd7ba2b4dc8f5c7ccb8c3e8430d3
parentdc4b31ab417aabe3c4cf880f22f514a7bed1ac2c (diff)
downloadperlweeklychallenge-club-cfe111699674dcbdae6a9172888ec4a0cf5ca4c1.tar.gz
perlweeklychallenge-club-cfe111699674dcbdae6a9172888ec4a0cf5ca4c1.tar.bz2
perlweeklychallenge-club-cfe111699674dcbdae6a9172888ec4a0cf5ca4c1.zip
- Added solutions by Ali Moradi.
- Added solutions by Richard Park. - Added solutions by David Ferrone. - Added solutions by E. Choroba. - Added solutions by Robbie Hatley. - Added solutions by Peter Campbell Smith. - Added solutions by Niels van Dijke. - Added solutions by Kjetil Skotheim. - Added solutions by Ulrich Rieke.
-rwxr-xr-xchallenge-336/perlboy1967/perl/ch-1.pl (renamed from challenge-336/perlboy1967/perl/ch1.pl)0
-rwxr-xr-xchallenge-336/perlboy1967/perl/ch-2.pl (renamed from challenge-336/perlboy1967/perl/ch2.pl)0
-rwxr-xr-xchallenge-336/ulrich-rieke/cpp/ch-1.cpp46
-rwxr-xr-xchallenge-336/ulrich-rieke/cpp/ch-2.cpp50
-rwxr-xr-xchallenge-336/ulrich-rieke/haskell/ch-1.hs22
-rwxr-xr-xchallenge-336/ulrich-rieke/haskell/ch-2.hs31
-rwxr-xr-xchallenge-336/ulrich-rieke/perl/ch-1.pl35
-rwxr-xr-xchallenge-336/ulrich-rieke/perl/ch-2.pl35
-rwxr-xr-xchallenge-336/ulrich-rieke/raku/ch-1.raku26
-rwxr-xr-xchallenge-336/ulrich-rieke/raku/ch-2.raku30
-rwxr-xr-xchallenge-336/ulrich-rieke/rust/ch-1.rs30
-rwxr-xr-xchallenge-336/ulrich-rieke/rust/ch-2.rs49
-rw-r--r--stats/pwc-current.json138
-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.json10
-rw-r--r--stats/pwc-language-breakdown-summary.json8
-rw-r--r--stats/pwc-leaders.json42
-rw-r--r--stats/pwc-summary-1-30.json6
-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.json4
-rw-r--r--stats/pwc-summary-211-240.json6
-rw-r--r--stats/pwc-summary-241-270.json6
-rw-r--r--stats/pwc-summary-271-300.json2
-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.json6
-rw-r--r--stats/pwc-summary-91-120.json2
-rw-r--r--stats/pwc-summary.json26
-rw-r--r--stats/pwc-yearly-language-summary.json10
35 files changed, 568 insertions, 78 deletions
diff --git a/challenge-336/perlboy1967/perl/ch1.pl b/challenge-336/perlboy1967/perl/ch-1.pl
index 1a6c36ec02..1a6c36ec02 100755
--- a/challenge-336/perlboy1967/perl/ch1.pl
+++ b/challenge-336/perlboy1967/perl/ch-1.pl
diff --git a/challenge-336/perlboy1967/perl/ch2.pl b/challenge-336/perlboy1967/perl/ch-2.pl
index d2af12fb92..d2af12fb92 100755
--- a/challenge-336/perlboy1967/perl/ch2.pl
+++ b/challenge-336/perlboy1967/perl/ch-2.pl
diff --git a/challenge-336/ulrich-rieke/cpp/ch-1.cpp b/challenge-336/ulrich-rieke/cpp/ch-1.cpp
new file mode 100755
index 0000000000..4dcf324053
--- /dev/null
+++ b/challenge-336/ulrich-rieke/cpp/ch-1.cpp
@@ -0,0 +1,46 @@
+#include <iostream>
+#include <string>
+#include <sstream>
+#include <vector>
+#include <utility>
+#include <algorithm>
+#include <set>
+
+std::vector<std::string> split( const std::string & text , 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 ;
+}
+
+int main( ) {
+ std::cout << "Enter some numbers separated by whitespace!\n" ;
+ std::string line ;
+ std::getline( std::cin , line ) ;
+ auto tokens { split( line, ' ' ) } ;
+ std::string numbers ;
+ for ( auto s : tokens )
+ numbers.push_back( std::stoi( s ) ) ;
+ std::set<int> uniques { numbers.begin( ) , numbers.end( ) } ;
+ std::vector<std::pair<int , int>> frequencies ;
+ for ( auto it = uniques.begin( ) ; it != uniques.end( ) ; ++it ) {
+ frequencies.push_back( std::make_pair( *it , std::count( numbers.begin( ) ,
+ numbers.end( ) , *it ))) ;
+ }
+ bool result = false ;
+ if ( frequencies.size( ) == 1 ) {
+ result = frequencies[0].second > 1 ;
+ }
+ else {
+ std::sort( frequencies.begin( ) , frequencies.end( ) , []( const auto &
+ aPair , const auto & bPair ) { return aPair.second < bPair.second ; }
+ ) ;
+ int mini = frequencies[0].second ;
+ result = mini > 1 && std::all_of( frequencies.begin( ) + 1 , frequencies.end( ),
+ [mini]( const auto & p ) { return p.second % mini == 0 ; } ) ;
+ }
+ std::cout << std::boolalpha << result << '\n' ;
+ return 0 ;
+}
diff --git a/challenge-336/ulrich-rieke/cpp/ch-2.cpp b/challenge-336/ulrich-rieke/cpp/ch-2.cpp
new file mode 100755
index 0000000000..5304fa2916
--- /dev/null
+++ b/challenge-336/ulrich-rieke/cpp/ch-2.cpp
@@ -0,0 +1,50 @@
+#include <vector>
+#include <string>
+#include <sstream>
+#include <regex>
+#include <iostream>
+#include <numeric>
+#include <algorithm>
+
+std::vector<std::string> split( const std::string & text , 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 ;
+}
+
+int main( ) {
+ std::cout << "Enter some numbers and D , C or + separated by whitespace!\n" ;
+ std::string line ;
+ std::getline( std::cin , line ) ;
+ auto tokens { split( line , ' ' ) } ;
+ std::vector<int> numbers ;
+ std::string numpattern {"(\\-)*\\d+"} ;
+ std::regex nu { numpattern } ;
+ auto until = std::find_if( tokens.begin( ) , tokens.end( ) , [nu]( const auto w )
+ { return ! std::regex_match( w.begin( ) , w.end( ) , nu ) ; } ) ;
+ for ( auto it = tokens.begin( ) ; it != until ; ++it )
+ numbers.push_back( std::stoi( *it ) ) ;
+ for ( auto it = until ; it != tokens.end( ) ; ++it ) {
+ if ( ! std::regex_match( *it , nu ) ) { // no number !
+ if ( *it == "C" ) {
+ numbers.pop_back( ) ;
+ }
+ if ( *it == "D" ) {
+ int last = numbers.back( ) ;
+ numbers.push_back( last * 2 ) ;
+ }
+ if ( *it == "+" ) {
+ int l = numbers.size( ) ;
+ numbers.push_back( numbers[l - 2] + numbers[l - 1] ) ;
+ }
+ }
+ else { // it's a number !
+ numbers.push_back( std::stoi( *it ) ) ;
+ }
+ }
+ std::cout << std::accumulate( numbers.begin( ) , numbers.end( ) , 0 ) << '\n' ;
+ return 0 ;
+}
diff --git a/challenge-336/ulrich-rieke/haskell/ch-1.hs b/challenge-336/ulrich-rieke/haskell/ch-1.hs
new file mode 100755
index 0000000000..c31c224de3
--- /dev/null
+++ b/challenge-336/ulrich-rieke/haskell/ch-1.hs
@@ -0,0 +1,22 @@
+module Challenge336
+ where
+import Data.List( group , findIndices, sortOn )
+import qualified Data.Set as S
+
+makePairs :: [Int] -> [(Int , Int)]
+makePairs list = map (\i -> ( i , length $ findIndices ( == i ) list )) $ S.toList
+ $ S.fromList list
+
+checkCondition :: [(Int , Int)] -> Bool
+checkCondition frequencies =
+ let sorted = sortOn snd frequencies
+ mini = snd $ head sorted
+ l = length sorted
+ in if l == 1 then mini > 1 else (all (\p -> snd p `mod` mini == 0 ) $ drop 1
+ sorted) && ( mini > 1 )
+
+main :: IO ( )
+main = do
+ putStrLn "Enter some integers separated by blanks!"
+ numberline <- getLine
+ print $ checkCondition $ makePairs $ map read $ words numberline
diff --git a/challenge-336/ulrich-rieke/haskell/ch-2.hs b/challenge-336/ulrich-rieke/haskell/ch-2.hs
new file mode 100755
index 0000000000..ab57272255
--- /dev/null
+++ b/challenge-336/ulrich-rieke/haskell/ch-2.hs
@@ -0,0 +1,31 @@
+module Challenge336_2
+ where
+import Data.List ( (!!) )
+import Data.Char ( isDigit )
+
+convert :: String -> Int
+convert str = if head str == '-' then (read ( drop 1 str )) * (-1) else read str
+
+addNumber :: [Int] -> String -> [Int]
+addNumber list str
+ |str == "C" = take ( l - 1 ) list
+ |str == "D" = list ++ [ (last list) * 2 ]
+ |str == "+" = list ++ [ (list !! ( l - 2 )) + list !! ( l - 1 ) ]
+ |otherwise = list ++ [ convert str ]
+ where
+ l :: Int
+ l = length list
+
+solution :: String -> Int
+solution input =
+ let theWords = words input
+ (firstPart , secondPart ) = span (\s -> isDigit ( head s ) || head s ==
+ '-' ) theWords
+ startnumbers = map convert firstPart
+ in sum $ foldl addNumber startnumbers secondPart
+
+main :: IO ( )
+main = do
+ putStrLn "Enter some integers , C , D or + separated by blanks!"
+ inputline <- getLine
+ print $ solution inputline
diff --git a/challenge-336/ulrich-rieke/perl/ch-1.pl b/challenge-336/ulrich-rieke/perl/ch-1.pl
new file mode 100755
index 0000000000..dcb6ce2a75
--- /dev/null
+++ b/challenge-336/ulrich-rieke/perl/ch-1.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+use List::Util qw ( all ) ;
+
+say "Enter some integers separated by blanks!" ;
+my $line = <STDIN> ;
+chomp $line ;
+my @numbers = split( /\s+/ , $line ) ;
+my %frequencies ;
+my @pairs ;
+map { $frequencies{$_}++ } @numbers ;
+for my $k ( keys %frequencies ) {
+ push( @pairs , [$k , $frequencies{$k} ] ) ;
+}
+my $result = 0 ;
+if ( scalar( @pairs ) == 1 ) {
+ if ( $pairs[0]->[1] > 1 ) {
+ $result = 1 ;
+ }
+}
+else {
+ my @sorted = sort { $a->[1] <=> $b->[1] } @pairs ;
+ my $mini = $sorted[0]->[1] ;
+ if ( $mini > 1 && all { $_->[1] % $mini == 0 } @sorted[1..$#sorted] ) {
+ $result = 1 ;
+ }
+}
+if ( $result == 0 ) {
+ say "false" ;
+}
+else {
+ say "true" ;
+}
diff --git a/challenge-336/ulrich-rieke/perl/ch-2.pl b/challenge-336/ulrich-rieke/perl/ch-2.pl
new file mode 100755
index 0000000000..7242f311da
--- /dev/null
+++ b/challenge-336/ulrich-rieke/perl/ch-2.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+use List::Util qw ( sum ) ;
+
+say "Enter some numbers and the letters C , D or + separated by spaces!" ;
+my $line = <STDIN> ;
+chomp $line ;
+my @parts = split( /\s+/ , $line ) ;
+my @numbers ;
+my $len = scalar( @parts ) ;
+my $pos = 0 ;
+while ( $pos < $len && $parts[$pos] =~ /\d+/ ) {
+ push( @numbers , $parts[$pos] ) ;
+ $pos++ ;
+}
+for my $p ($pos..$len - 1) {
+ if ( $parts[$p] =~ /C|D|\+/ ) {
+ if ( $parts[$p] eq 'C' ) {
+ pop( @numbers ) ;
+ }
+ if ( $parts[$p] eq 'D' ) {
+ push( @numbers , $numbers[-1] * 2 ) ;
+ }
+ if ( $parts[$p] eq '+' ) {
+ my $l = scalar( @numbers ) ;
+ push( @numbers , $numbers[$l - 2 ] + $numbers[$l - 1] ) ;
+ }
+ }
+ else { #it must be a number !
+ push( @numbers , $parts[$p] ) ;
+ }
+}
+say sum( @numbers ) ;
diff --git a/challenge-336/ulrich-rieke/raku/ch-1.raku b/challenge-336/ulrich-rieke/raku/ch-1.raku
new file mode 100755
index 0000000000..3512ffbc1f
--- /dev/null
+++ b/challenge-336/ulrich-rieke/raku/ch-1.raku
@@ -0,0 +1,26 @@
+use v6 ;
+
+say "Enter some integers separated by blanks!" ;
+my $line = $*IN.get ;
+my @numbers = $line.words.map( {.Int } ) ;
+my %frequencies ;
+for @numbers -> $k {
+ %frequencies{$k}++ ;
+}
+my $result ;
+if %frequencies.keys.elems == 1 {
+ my $num = %frequencies.keys[0] ;
+ $result = $num > 1 ;
+}
+else {
+ my @pairs ;
+ for %frequencies.keys -> $k {
+ @pairs.push( [$k , %frequencies{$k}] ) ;
+ }
+ my @sorted = @pairs.sort( {$^a[1] <=> $^b[1] } ) ;
+ my $mini = @sorted[0][1] ;
+ $result = $mini > 1 && @sorted[1..@sorted.elems - 1].grep( {$_[1] %% $mini} )
+ .elems == @sorted.elems - 1 ;
+}
+say $result ;
+
diff --git a/challenge-336/ulrich-rieke/raku/ch-2.raku b/challenge-336/ulrich-rieke/raku/ch-2.raku
new file mode 100755
index 0000000000..2d2eff22b5
--- /dev/null
+++ b/challenge-336/ulrich-rieke/raku/ch-2.raku
@@ -0,0 +1,30 @@
+use v6 ;
+
+say "Enter some integers and the character + , C or D separated by whitespace!" ;
+my $line = $*IN.get ;
+my @parts = $line.words ;
+my @numbers ;
+my $len = @parts.elems ;
+my $pos = 0 ;
+while ( $pos < $len && @parts[$pos] ~~ /\d+/ ) {
+ @numbers.push( +(@parts[$pos]) ) ;
+ $pos++ ;
+}
+for ($pos..$len - 1 ) -> $i {
+ if ( @parts[ $i ] ~~ /'C' | 'D' | '+' / ) {
+ if ( @parts[ $i ] eq 'C' ) {
+ @numbers.pop( ) ;
+ }
+ if ( @parts[ $i ] eq 'D' ) {
+ @numbers.push( @numbers[*-1] * 2 ) ;
+ }
+ if ( @parts[ $i ] eq '+' ) {
+ my $l = @numbers.elems ;
+ @numbers.push( @numbers[$l - 2 ] + @numbers[ $l - 1 ] ) ;
+ }
+ }
+ else { #we must be at a number
+ @numbers.push( +@parts[$i] ) ;
+ }
+}
+say [+] @numbers ;
diff --git a/challenge-336/ulrich-rieke/rust/ch-1.rs b/challenge-336/ulrich-rieke/rust/ch-1.rs
new file mode 100755
index 0000000000..902a91f315
--- /dev/null
+++ b/challenge-336/ulrich-rieke/rust/ch-1.rs
@@ -0,0 +1,30 @@
+use std::io ;
+use std::collections::HashSet ;
+
+fn main() {
+ println!("Enter some integers separated by blanks!");
+ let mut inline : String = String::new( ) ;
+ io::stdin( ).read_line( &mut inline ).unwrap( ) ;
+ let numbers : Vec<i32> = inline.trim( ).split_whitespace( ).map( |s|
+ s.parse::<i32>( ).unwrap( )).collect( ) ;
+ let mut uniques : HashSet<i32> = HashSet::new( ) ;
+ for n in &numbers {
+ uniques.insert(*n ) ;
+ }
+ let mut numfrequencies : Vec<(i32, usize)> = Vec::new( ) ;
+ for n in &uniques {
+ numfrequencies.push( (*n , numbers.iter( ).filter( |&d| *d == *n ).count( )) ) ;
+ }
+ let result : bool ;
+ if uniques.len( ) == 1 {
+ result = numbers.len( ) > 1 ;
+ }
+ else {
+ let freq_slice = &mut numfrequencies[..] ;
+ freq_slice.sort_by( |a , b| a.1.cmp( &b.1 ) ) ;
+ let mini : usize = freq_slice[0].1 ;
+ result = mini > 1 && freq_slice.into_iter( ).skip( 1 ).map( |p| p.1 )
+ .all( |n| n % mini == 0 ) ;
+ }
+ println!("{}" , result ) ;
+}
diff --git a/challenge-336/ulrich-rieke/rust/ch-2.rs b/challenge-336/ulrich-rieke/rust/ch-2.rs
new file mode 100755
index 0000000000..53db5bfeb8
--- /dev/null
+++ b/challenge-336/ulrich-rieke/rust/ch-2.rs
@@ -0,0 +1,49 @@
+use std::io ;
+
+fn main() {
+ println!("Enter some integers or letters D , C or + separated by blanks!");
+ let mut inline : String = String::new( ) ;
+ io::stdin( ).read_line( &mut inline ).unwrap( ) ;
+ let entrystrings : Vec<&str> = inline.trim( ).split_whitespace( ).collect( );
+ let mut numbers : Vec<i32> = Vec::new( ) ;
+ if let Some( pos ) = entrystrings.iter( ).position( |s| ! s.parse::<i32>( ).
+ is_ok( ) ) {
+ if pos < entrystrings.len( ) {
+ entrystrings.iter( ).take( pos ).map( |s| s.parse::<i32>( ).unwrap( )).
+ for_each( |n| numbers.push( n ) ) ;
+ let len : usize = entrystrings.len( ) ;
+ for p in pos..len {
+ let value : &str = entrystrings[p] ;
+ if value == "C" {
+ numbers.remove( numbers.len( ) - 1 ) ;
+ }
+ if value == "D" {
+ let l = numbers.len( ) ;
+ numbers.push( numbers[l - 1] * 2 ) ;
+ }
+ if value == "+" {
+ let l = numbers.len( ) ;
+ numbers.push( numbers[l - 2] + numbers[l - 1] ) ;
+ }
+ if value.chars( ).count( ) >= 2 {
+ let num : i32 = value.parse::<i32>( ).unwrap( ) ;
+ numbers.push( num ) ;
+ }
+ if value.chars( ).count( ) == 1 && value.chars( ).nth( 0 ).unwrap( ).
+ is_ascii_digit( ) {
+ let num : i32 = value.parse::<i32>( ).unwrap( ) ;
+ numbers.push( num ) ;
+ }
+ }
+ }
+ else {
+ }
+ println!("{}" , numbers.into_iter( ).sum::<i32>( ) ) ;
+ }
+ else {
+ for s in entrystrings {
+ numbers.push( s.parse::<i32>( ).unwrap( )) ;
+ }
+ println!("{}" , numbers.into_iter( ).sum::<i32>( ) ) ;
+ }
+}
diff --git a/stats/pwc-current.json b/stats/pwc-current.json
index ed86e52244..7157cfe9d7 100644
--- a/stats/pwc-current.json
+++ b/stats/pwc-current.json
@@ -7,12 +7,108 @@
{
"data" : [
[
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Ali Moradi",
+ "name" : "Ali Moradi"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "David Ferrone",
+ "name" : "David Ferrone"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "E. Choroba",
+ "name" : "E. Choroba"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "Kjetil Skotheim",
+ "name" : "Kjetil Skotheim"
+ },
+ {
+ "data" : [
+ [
"Raku",
2
]
],
"id" : "Mark Anderson",
"name" : "Mark Anderson"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ],
+ "id" : "Niels van Dijke",
+ "name" : "Niels van Dijke"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Peter Campbell Smith",
+ "name" : "Peter Campbell Smith"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 1
+ ]
+ ],
+ "id" : "Robbie Hatley",
+ "name" : "Robbie Hatley"
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Raku",
+ 2
+ ]
+ ],
+ "id" : "Ulrich Rieke",
+ "name" : "Ulrich Rieke"
}
]
},
@@ -33,16 +129,56 @@
"colorByPoint" : 1,
"data" : [
{
+ "drilldown" : "Ali Moradi",
+ "name" : "Ali Moradi",
+ "y" : 3
+ },
+ {
+ "drilldown" : "David Ferrone",
+ "name" : "David Ferrone",
+ "y" : 2
+ },
+ {
+ "drilldown" : "E. Choroba",
+ "name" : "E. Choroba",
+ "y" : 2
+ },
+ {
+ "drilldown" : "Kjetil Skotheim",
+ "name" : "Kjetil Skotheim",
+ "y" : 2
+ },
+ {
"drilldown" : "Mark Anderson",
"name" : "Mark Anderson",
"y" : 2
+ },
+ {
+ "drilldown" : "Niels van Dijke",
+ "name" : "Niels van Dijke",
+ "y" : 2
+ },
+ {
+ "drilldown" : "Peter Campbell Smith",
+ "name" : "Peter Campbell Smith",
+ "y" : 3
+ },
+ {
+ "drilldown" : "Robbie Hatley",
+ "name" : "Robbie Hatley",
+ "y" : 3
+ },
+ {
+ "drilldown" : "Ulrich Rieke",
+ "name" : "Ulrich Rieke",
+ "y" : 4
}
],
"name" : "The Weekly Challenge - 336"
}
],
"subtitle" : {
- "text" : "[Champions: 1] Last updated at 2025-08-25 09:42:02 GMT"
+ "text" : "[Champions: 9] Last updated at 2025-08-25 20:11:59 GMT"
},
"title" : {
"text" : "The Weekly Challenge - 336"
diff --git a/stats/pwc-language-breakdown-2019.json b/stats/pwc-language-breakdown-2019.json
index 6ee477d9a9..2a333386af 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-08-25 09:42:02 GMT"
+ "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-08-25 20:11:59 GMT"
},
"title" : {
"text" : "The Weekly Challenge Language"
diff --git a/stats/pwc-language-breakdown-2020.json b/stats/pwc-language-breakdown-2020.json
index 3849122a8b..c5f9573d00 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-08-25 09:42:02 GMT"
+ "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-08-25 20:11:59 GMT"
},
"title" : {
"text" : "The Weekly Challenge Language"
diff --git a/stats/pwc-language-breakdown-2021.json b/stats/pwc-language-breakdown-2021.json
index 38bc4e0dc3..c96952aeab 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-08-25 09:42:02 GMT"
+ "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-08-25 20:11:59 GMT"
},
"title" : {
"text" : "The Weekly Challenge Language"
diff --git a/stats/pwc-language-breakdown-2022.json b/stats/pwc-language-breakdown-2022.json
index 04cdad8f95..659226fc06 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-08-25 09:42:02 GMT"
+ "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-08-25 20:11:59 GMT"
},
"title" : {
"text" : "The Weekly Challenge Language"
diff --git a/stats/pwc-language-breakdown-2023.json b/stats/pwc-language-breakdown-2023.json
index 89d25584bf..d3f60c806d 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-08-25 09:42:02 GMT"
+ "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-08-25 20:11:59 GMT"
},
"title" : {
"text" : "The Weekly Challenge Language"
diff --git a/stats/pwc-language-breakdown-2024.json b/stats/pwc-language-breakdown-2024.json
index be528e2175..bc4a17b665 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-08-25 09:42:02 GMT"
+ "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-08-25 20:11:59 GMT"
},
"title" : {
"text" : "The Weekly Challenge Language"
diff --git a/stats/pwc-language-breakdown-2025.json b/stats/pwc-language-breakdown-2025.json
index dc08ef1307..56cab46fe4 100644
--- a/stats/pwc-language-breakdown-2025.json
+++ b/stats/pwc-language-breakdown-2025.json
@@ -8,15 +8,15 @@
"data" : [
[
"Perl",
- 0
+ 16
],
[
"Raku",
- 2
+ 4
],
[
"Blog",
- 0
+ 3
]
],
"id" : "336",
@@ -637,7 +637,7 @@
{
"drilldown" : "336",
"name" : "336",
- "y" : 2
+ "y" : 23
},
{
"drilldown" : "335",
@@ -809,7 +809,7 @@
}
],
"subtitle" : {
- "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-08-25 09:42:02 GMT"
+ "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-08-25 20:11:59 GMT"
},
"title" : {
"text" : "The Weekly Challenge Language"
diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json
index b66bbfd458..0dadaa05a5 100644
--- a/stats/pwc-language-breakdown-summary.json
+++ b/stats/pwc-language-breakdown-summary.json
@@ -10,15 +10,15 @@
"data" : [
[
"Perl",
- 17296
+ 17312
],
[
"Raku",
- 9631
+ 9633
],
[
"Blog",
- 6218
+ 6221