diff options
| author | Mohammad Sajid Anwar <mohammad.anwar@yahoo.com> | 2025-11-12 15:06:20 +0000 |
|---|---|---|
| committer | Mohammad Sajid Anwar <mohammad.anwar@yahoo.com> | 2025-11-12 15:06:20 +0000 |
| commit | ed251006b89063380df4e9ed19bee441bfb9c36c (patch) | |
| tree | 0bdf941f6f474e5bf2506c44dea91c596492cf04 | |
| parent | 7e527e85122404992ef7d38ddd016c9980b2806f (diff) | |
| download | perlweeklychallenge-club-ed251006b89063380df4e9ed19bee441bfb9c36c.tar.gz perlweeklychallenge-club-ed251006b89063380df4e9ed19bee441bfb9c36c.tar.bz2 perlweeklychallenge-club-ed251006b89063380df4e9ed19bee441bfb9c36c.zip | |
- Added solutions by Ali Moradi.
- Added solutions by Ulrich Rieke.
35 files changed, 621 insertions, 49 deletions
diff --git a/challenge-347/ulrich-rieke/cpp/ch-1.cpp b/challenge-347/ulrich-rieke/cpp/ch-1.cpp new file mode 100755 index 0000000000..755fe5361a --- /dev/null +++ b/challenge-347/ulrich-rieke/cpp/ch-1.cpp @@ -0,0 +1,42 @@ +#include <iostream>
+#include <regex>
+#include <string>
+#include <vector>
+#include <algorithm>
+#include <iterator>
+using namespace std::string_literals ;
+
+int monthIndex( const std::string & mo ) {
+ static std::vector<std::string> monthnames { "Jan" , "Feb" , "Mar" , "Apr" , "May" ,
+ "Jun" , "Jul" , "Aug" , "Sep" , "Oct" , "Nov" , "Dec" } ;
+ auto found = std::find( monthnames.begin( ) , monthnames.end( ) , mo ) ;
+ int n = static_cast<int>(std::distance( monthnames.begin( ) , found )) ;
+ return n + 1 ;
+}
+
+std::string parseDate( const std::string & date ) {
+ auto re = std::regex {R"(^(\d{1,2})[stndrh]{2}\s(\w{3})\s([12][901]\d{2})$)"} ;
+ std::smatch sm ;
+ std::regex_search( date , sm , re ) ;
+ std::string day { sm.str( 1 ) } ;
+ std::string monthtoLookFor { sm.str( 2 ) } ;
+ std::string year { sm.str( 3 ) } ;
+ int index = monthIndex( monthtoLookFor ) ;
+ std::string month { std::to_string( index ) } ;
+ if ( month.length( ) == 1 )
+ month = "0"s += month ;
+ if ( day.length( ) == 1 )
+ day = "0"s += day ;
+ std::string result ;
+ result += year + "-"s + month + "-"s + day ;
+ return result ;
+}
+
+int main( ) {
+ std::cout << parseDate( "1st Jan 2025" ) << '\n' ;
+ std::cout << parseDate( "22nd Feb 2025" ) << '\n' ;
+ std::cout << parseDate( "15th Apr 2025") << '\n' ;
+ std::cout << parseDate( "23rd Oct 2025" ) << '\n' ;
+ std::cout << parseDate( "31st Dec 2025") << '\n' ;
+ return 0 ;
+}
diff --git a/challenge-347/ulrich-rieke/cpp/ch-2.cpp b/challenge-347/ulrich-rieke/cpp/ch-2.cpp new file mode 100755 index 0000000000..af3c310c05 --- /dev/null +++ b/challenge-347/ulrich-rieke/cpp/ch-2.cpp @@ -0,0 +1,70 @@ +#include <string>
+#include <iostream>
+#include <regex>
+#include <vector>
+using namespace std::string_literals ;
+
+std::string handleRest( const std::string & rest ) {
+ std::string result ;
+ char dash = '-' ;
+ int len = static_cast<int>( rest.length( ) ) ;
+ if ( len == 2 || len == 3 ) {
+ result = rest ;
+ }
+ else {
+ result = rest.substr(0 , 2 ) ;
+ result.append(1, dash ) ;
+ result += rest.substr( 2 ) ;
+ }
+ return result ;
+}
+
+void printParts( const std::vector<std::string> & parts ) {
+ if ( parts.size( ) == 1 )
+ std::cout << *parts.begin( ) << '\n' ;
+ else {
+ char dash { '-' } ;
+ std::string result ;
+ for ( auto s : parts ) {
+ result += s ;
+ result.append(1, dash ) ;
+ }
+ result.pop_back( ) ;
+ std::cout << result << '\n' ;
+ }
+}
+
+int main( ) {
+ std::cout << "Enter a phone number consisting of digits , spaces and dashes only!\n" ;
+ std::string phonenumber ;
+ std::getline( std::cin , phonenumber ) ;
+ auto rx = std::regex{ R"(\s|\-)"s} ;
+ std::string reduced = std::regex_replace( phonenumber , rx , ""s ) ;
+ int len = static_cast<int>( reduced.length( ) ) ;
+ if ( len <= 4 ) {
+ std::cout << handleRest( reduced ) << '\n' ;
+ }
+ else {
+ std::vector<std::string> parts ;
+ int partnumber = len / 3 ;
+ int lengthrest = len % 3 ;
+ if ( lengthrest != 0 && lengthrest < 2 )
+ partnumber-- ;
+ int pos = 0 ;
+ int i = 0 ;
+ while ( i < partnumber ) {
+ parts.push_back( reduced.substr( pos , 3 ) ) ;
+ pos += 3 ;
+ i++ ;
+ }
+ int restlen = len - partnumber * 3 ;
+ if ( restlen == 0 )
+ printParts( parts ) ;
+ else {
+ std::string rest { reduced.substr( partnumber * 3 ) } ;
+ parts.push_back( handleRest( rest )) ;
+ printParts( parts ) ;
+ }
+ }
+ return 0 ;
+}
diff --git a/challenge-347/ulrich-rieke/haskell/ch-1.hs b/challenge-347/ulrich-rieke/haskell/ch-1.hs new file mode 100755 index 0000000000..0d7c720b71 --- /dev/null +++ b/challenge-347/ulrich-rieke/haskell/ch-1.hs @@ -0,0 +1,27 @@ +module Challenge347
+ where
+import Data.Char ( isDigit )
+import Data.List ( findIndices )
+
+months :: [String]
+months = ["Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" , "Jul" , "Aug" , "Sep" ,
+ "Oct" , "Nov" , "Dec"]
+
+parseDate :: String -> [String]
+parseDate str =
+ let [day , month , year] = words str
+ in [takeWhile isDigit day , month , year]
+
+convert :: String -> String
+convert str = if length str == 1 then "0" ++ str else str
+
+solution :: String -> String
+solution str =
+ let [day , month , year] = parseDate str
+ in year ++ "-" ++ (convert $ show ( (head $ findIndices (== month ) months ) + 1)) ++
+ "-" ++ convert day
+
+main :: IO ( )
+main = do
+ print $ fmap solution ["1st Jan 2025" , "22nd Feb 2025" , "15th Apr 2025" ,
+ "23rd Oct 2025" , "31st Dec 2025"]
diff --git a/challenge-347/ulrich-rieke/haskell/ch-2.hs b/challenge-347/ulrich-rieke/haskell/ch-2.hs new file mode 100755 index 0000000000..61eedff4cb --- /dev/null +++ b/challenge-347/ulrich-rieke/haskell/ch-2.hs @@ -0,0 +1,33 @@ +module Challenge347_2
+ where
+import Data.List.Split ( splitOneOf , chunksOf )
+import Data.List ( init , intercalate )
+
+reduceString :: String -> String
+reduceString str = foldl1 ( ++ ) $ splitOneOf "' '-" str
+
+solution :: String -> String
+solution str
+ |rest == 0 = intercalate "-" $ chunksOf 3 reduced
+ |rest == 1 = if l == 4 then intercalate "-" $ chunksOf 2 reduced else
+ if length firstpart == 3 then firstpart ++ "-" ++ ( intercalate "-" $
+ chunksOf 2 $ drop ( l -4 ) reduced ) else (intercalate "-" $ chunksOf 3
+ firstpart ) ++ "-" ++ ( intercalate "-" $ chunksOf 2 $ drop ( l - 4 )
+ reduced )
+ |rest == 2 = (intercalate "-" $ chunksOf 3 $ take ( l - 2 ) reduced) ++ "-"
+ ++ drop ( l - 2 ) reduced
+ where
+ l :: Int
+ l = length reduced
+ reduced :: String
+ reduced = reduceString str
+ firstpart :: String
+ firstpart = take ( l - 4 ) reduced
+ rest :: Int
+ rest = mod l 3
+
+main :: IO ( )
+main = do
+ putStrLn "Enter a string consisting of digits, dashes and spaces only!"
+ phonenumber <- getLine
+ print $ solution phonenumber
diff --git a/challenge-347/ulrich-rieke/perl/ch-1.pl b/challenge-347/ulrich-rieke/perl/ch-1.pl new file mode 100755 index 0000000000..940dff6bc8 --- /dev/null +++ b/challenge-347/ulrich-rieke/perl/ch-1.pl @@ -0,0 +1,38 @@ +#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+
+sub monthIndex {
+ my $month = shift ;
+ my @months = ("Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" , "Jul" , "Aug" ,
+ "Sep" , "Oct" , "Nov" , "Dec") ;
+ my $pos = 0 ;
+ while ( $months[$pos] ne $month ) {
+ $pos++ ;
+ }
+ return $pos + 1 ;
+}
+
+sub parseDate {
+ my $date = shift ;
+ my ( $day , $month , $year ) ;
+ my $mi ;
+ if ( $date =~ /^([1-3]?\d)[strdhn]{2}\s(\w{3})\s([12][091]\d{2})$/ ) {
+ ( $day , $month , $year ) = ( $1 , $2 , $3 ) ;
+ if ( length $day == 1 ) {
+ $day = '0' . $day ;
+ }
+ $mi = monthIndex( $month ) ;
+ if ( length $mi == 1 ) {
+ $mi = '0' . $mi ;
+ }
+ }
+ my @parts = ($year , $mi , $day ) ;
+ return join( '-' , @parts ) ;
+}
+say parseDate( "1st Jan 2025") ;
+say parseDate( "22nd Feb 2025") ;
+say parseDate( "15th Apr 2025") ;
+say parseDate( "23rd Oct 2025") ;
+say parseDate( "31st Dec 2025") ;
diff --git a/challenge-347/ulrich-rieke/perl/ch-2.pl b/challenge-347/ulrich-rieke/perl/ch-2.pl new file mode 100755 index 0000000000..34bf524719 --- /dev/null +++ b/challenge-347/ulrich-rieke/perl/ch-2.pl @@ -0,0 +1,60 @@ +#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+
+sub handleRest {
+ my $rest = shift ;
+ my $len = length $rest ;
+ my $result ;
+ if ( $len == 2 || $len == 3) {
+ $result = $rest ;
+ }
+ else {
+ $result = substr( $rest , 0 , 2 ) . '-' . substr( $rest , 2 ) ;
+ }
+ return $result ;
+}
+
+sub printParts {
+ my $parts = shift ;
+ if ( scalar( @$parts ) == 1 ) {
+ say $parts->[0] ;
+ }
+ else {
+ say join( '-' , @$parts ) ;
+ }
+}
+
+say "Enter a telephone number containing digits , space and dash only!" ;
+my $phonenumber = <STDIN> ;
+chomp $phonenumber ;
+$phonenumber =~ s/(\s|\-)//g ;
+my $len = length $phonenumber ;
+if ( $len <= 4 ) {
+ say handleRest( $phonenumber ) ;
+}
+else {
+ my @parts ;
+ my $partnumber = int( $len / 3 ) ;
+ my $lengthrest = $len % 3 ;
+ if ( $lengthrest != 0 && $lengthrest < 2 ) {
+ $partnumber-- ;
+ }
+ my $pos = 0 ;
+ my $i = 0 ;
+ while ( $i < $partnumber ) {
+ push( @parts , substr( $phonenumber , $pos , 3 ) ) ;
+ $pos += 3 ;
+ $i++ ;
+ }
+ my $restlen = $len - $partnumber * 3 ;
+ if ( $restlen == 0 ) {
+ printParts( \@parts ) ;
+ }
+ else {
+ my $rest = substr( $phonenumber , $partnumber * 3 ) ;
+ push( @parts , handleRest( $rest )) ;
+ printParts( \@parts ) ;
+ }
+}
diff --git a/challenge-347/ulrich-rieke/python/ch-1.py b/challenge-347/ulrich-rieke/python/ch-1.py new file mode 100755 index 0000000000..34efd226cf --- /dev/null +++ b/challenge-347/ulrich-rieke/python/ch-1.py @@ -0,0 +1,23 @@ +import re
+
+def parseDate( date ):
+ grp = re.search(r'^([1-3]?\d)[rdsthn]{2}\s(\w{3})\s([12][091]\d{2})$' , date ) ;
+ months = ["Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" , "Jul" , "Aug" , "Sep" ,
+ "Oct" , "Nov" , "Dec"] ;
+ (day , month , year ) = grp.groups( ) ;
+ if len(day) == 1:
+ day = '0' + day
+ monthindex = months.index( month ) + 1
+ mi = str(monthindex) ;
+ if monthindex < 10:
+ mi = '0' + mi
+ result = year + '-' + mi + '-' + day
+ return result
+
+print( parseDate("1st Jan 2025"))
+print( parseDate("22nd Feb 2025"))
+print( parseDate("15th Apr 2025"))
+print( parseDate("23rd Oct 2025"))
+print( parseDate("31st Dec 2025"))
+
+
diff --git a/challenge-347/ulrich-rieke/python/ch-2.py b/challenge-347/ulrich-rieke/python/ch-2.py new file mode 100755 index 0000000000..18499de8ff --- /dev/null +++ b/challenge-347/ulrich-rieke/python/ch-2.py @@ -0,0 +1,35 @@ +import re
+
+def findParts( word , partnum):
+ parts = []
+ i = 0
+ pos = 0
+ while i < partnum:
+ parts.append( word[pos:pos + 3] )
+ pos += 3
+ i += 1
+ return parts
+
+phonenumber = input( "Enter a string consisting of digits, dashes and spaces only!\n")
+reduced = re.sub(r"\s|\-" , "" , phonenumber)
+l = len( reduced )
+if l <= 4:
+ if l == 4:
+ print( reduced[0:2] + '-' + reduced[2:] )
+ else:
+ print( reduced )
+else:
+ restlen = l % 3
+ partnumber = l // 3
+ if restlen == 1:
+ partnumber -= 1
+ parts = findParts( reduced , partnumber )
+ restterm = reduced[partnumber * 3:]
+ if len(restterm) == 0:
+ print('-'.join( parts ))
+ else:
+ solution = '-'.join( parts )
+ if len( restterm ) == 4:
+ print( solution + '-' + restterm[0:2] + '-' + restterm[2:] )
+ else:
+ print( solution + '-' + restterm )
diff --git a/challenge-347/ulrich-rieke/raku/ch-1.raku b/challenge-347/ulrich-rieke/raku/ch-1.raku new file mode 100755 index 0000000000..559126864e --- /dev/null +++ b/challenge-347/ulrich-rieke/raku/ch-1.raku @@ -0,0 +1,33 @@ +use v6 ;
+
+sub monthIndex( $month ) {
+ my @months = ("Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" , "Jul" , "Aug" ,
+ "Sep" , "Oct" , "Nov" , "Dec") ;
+ my $pos = 0 ;
+ while ( @months[$pos] ne $month ) {
+ $pos++ ;
+ }
+ return $pos + 1 ;
+}
+
+sub parseDate( $date ) {
+ my ( $year , $day , $month , $mi ) ;
+ if ( $date ~~ /^(<[1..3]>?\d) <[strdnh]> ** 2 \s (\w **3) \s (<[12]><[091]>\d ** 2)
+ $/ ) {
+ ($day , $month , $year ) = ( ~$0 , ~$1 , $2 ) ;
+ if ($day.chars == 1) {
+ $day = '0' ~ $day ;
+ }
+ $mi = monthIndex( $month ) ;
+ }
+ if ( ~$mi.chars == 1 ) {
+ $mi = '0' ~ $mi ;
+ }
+ my @parts = ($year , $mi , $day) ;
+ return @parts.join('-') ;
+}
+say parseDate("1st Jan 2025") ;
+say parseDate("22nd Feb 2025") ;
+say parseDate( "15th Apr 2025" ) ;
+say parseDate( "23rd Oct 2025" ) ;
+say parseDate( "31st Dec 2025" ) ;
diff --git a/challenge-347/ulrich-rieke/raku/ch-2.raku b/challenge-347/ulrich-rieke/raku/ch-2.raku new file mode 100755 index 0000000000..69c0ccf124 --- /dev/null +++ b/challenge-347/ulrich-rieke/raku/ch-2.raku @@ -0,0 +1,54 @@ +use v6 ;
+
+sub handleRest( $rest ) {
+ my $len = $rest.chars ;
+ my $result ;
+ if ( $len == 2 || $len == 3 ) {
+ $result = $rest ;
+ }
+ else {
+ $result = $rest.substr( 0 , 2 ) ~ '-' ~ $rest.substr( 2 ) ;
+ }
+ return $result ;
+}
+
+sub printParts( @parts ) {
+ if ( @parts.elems == 1 ) {
+ say @parts[0] ;
+ }
+ else {
+ say @parts.join( '-' ) ;
+ }
+}
+
+say "Enter a telephone number containing digits , space and dashes only!" ;
+my $phonenumber = $*IN.get ;
+$phonenumber ~~ s:g/(\s|'-')// ;
+my $len = $phonenumber.chars ;
+if ( $len <= 4 ) {
+ say handleRest( $phonenumber ) ;
+}
+else {
+ my @parts ;
+ my $partnumber = $len div 3 ;
+ my $lengthrest = $len % 3 ;
+ if ( $lengthrest != 0 && $lengthrest < 2 ) {
+ $partnumber-- ;
+ }
+ my $pos = 0 ;
+ my $i = 0 ;
+ while ( $i < $partnumber ) {
+ @parts.push( $phonenumber.substr( $pos , 3 ) ) ;
+ $pos += 3 ;
+ $i++ ;
+ }
+ my $restlen = $len - $partnumber * 3 ;
+ if ( $restlen == 0 ) {
+ printParts( @parts ) ;
+ }
+ else {
+ my $rest = $phonenumber.substr( $partnumber * 3 ) ;
+ @parts.push( handleRest( $rest ) ) ;
+ printParts( @parts ) ;
+ }
+}
diff --git a/challenge-347/ulrich-rieke/rust/ch-1.rs b/challenge-347/ulrich-rieke/rust/ch-1.rs new file mode 100755 index 0000000000..081679931c --- /dev/null +++ b/challenge-347/ulrich-rieke/rust/ch-1.rs @@ -0,0 +1,52 @@ +use regex::Regex ; + +fn convert( term : &str ) -> String { + let mut converted : String = String::new( ) ; + converted.push('0' ) ; + converted.push_str( term ) ; + converted +} + +fn parse_date( date : &str ) -> String { + let months : Vec<&str> = vec!["Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" , + "Jul" , "Aug" , "Sep" , "Oct" , "Nov" , "Dec"] ; + let re = Regex::new(r"(?<d>\d{1,2})[strdnh]{2}\s(?<m>\w{3})\s(?<y>[12]\d{3})"). + unwrap( ) ; + let caps = re.captures( date ).unwrap( ) ; + let day : &str = &caps["d"] ; + let month : &str = &caps["m"] ; + let year : &str = &caps["y"] ; + let mut rearranged : String = String::new( ) ; + rearranged.push_str( year ) ; + rearranged.push( '-' ) ; + let mut revised : String ; + let monthindex : usize = months.iter( ).position( |mo| *mo == month).unwrap( ) + 1; + let monthval : String = monthindex.to_string( ) ; + let monthrev : &str = monthval.as_str( ) ; + if monthrev.chars( ).count( ) == 1 { + revised = convert( monthrev ) ; + let monthpart : &str = revised.as_str( ) ; + rearranged.push_str( monthpart ) ; + } + else { + rearranged.push_str( monthrev ) ; + } + rearranged.push( '-' ) ; + if day.chars( ).count( ) == 1 { + revised = convert( day ) ; + let dayrev = revised.as_str( ) ; + rearranged.push_str( dayrev ) ; + } + else { + rearranged.push_str( day ) ; + } + rearranged +} + +fn main() { + println!("{:?}" , parse_date( "1st Jan 2025" )) ; + println!("{:?}" , parse_date( "22nd Feb 2025" )) ; + println!("{:?}" , parse_date( "15th Apr 2025" )) ; + println!("{:?}" , parse_date( "23rd Oct 2025" )) ; + println!("{:?}" , parse_date( "31st Dec 2025" )) ; +} diff --git a/challenge-347/ulrich-rieke/rust/ch-2.rs b/challenge-347/ulrich-rieke/rust/ch-2.rs new file mode 100755 index 0000000000..fb7a047c70 --- /dev/null +++ b/challenge-347/ulrich-rieke/rust/ch-2.rs @@ -0,0 +1,67 @@ +use std::io ; +use regex::Regex ; + +fn handle_rest( term : &str ) -> String { + let len : usize = term.chars( ).count( ) ; + let mut result : String = String::new( ) ; + if len == 2 || len == 3 { + result = term.into( ) ; + } + else { + for c in term.chars( ).take( 2 ) { + result.push( c ) ; + } + result.push( '-') ; + for c in term.chars( ).skip( 2 ) { + result.push( c ) ; + } + } + result +} + +fn main() { + println!("Enter a phone number consisting of digits , dashes and spaces!"); + let mut inline : String = String::new( ) ; + io::stdin( ).read_line( &mut inline ).unwrap( ) ; + let before : &str = inline.trim( ) ; + let re = Regex::new(r"\s|\-").unwrap( ) ; + let after = re.replace_all( before , "" ) ; + let mut result : String = String::new( ) ; + let len : usize = after.chars( ).count( ) ; + if len <= 4 { + println!("{:?}" , handle_rest( &after )) ; + } + else { + let mut partnumber : usize = len / 3 ; + let restlen : usize = len % 3 ; + if restlen != 0 && restlen < 2 { + partnumber -= 1 ; + } + let mut i : usize = 0 ; + let mut passed : usize = 0 ; + while i < partnumber { + for c in after.chars( ).skip( passed ).take( 3 ) { + result.push( c ) ; + } + result.push( '-' ) ; + passed += 3 ; + i += 1 ; + } + let restlen : usize = len - partnumber * 3 ; + if restlen == 0 { + result.pop( ) ; + println!("{:?}" , result ) ; + } + else { + let mut last_part : String = String::new( ) ; + for c in after.chars( ).skip(partnumber * 3 ) { + last_part.push( c ) ; + } + let end_term : &str = last_part.as_str( ) ; + let processed_rest : String = handle_rest( end_term ) ; + let rest : &str = processed_rest.as_str( ) ; + result.push_str( rest ) ; + println!("{:?}" , result ) ; + } + } +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 90cc4d910c..417cb87441 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -9,6 +9,20 @@ [ "Perl", 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Ali Moradi", + "name" : "Ali Moradi" + }, + { + "data" : [ + [ + "Perl", + 2 ] ], "id" : "Andreas Mahnke", @@ -187,6 +201,20 @@ [ "Perl", 2 + ], + [ + "Raku", + 2 + ] + ], + "id" : "Ulrich Rieke", + "name" : "Ulrich Rieke" + }, + { + "data" : [ + [ + "Perl", + 2 ] ], "id" : "Wanderdoc", @@ -211,6 +239,11 @@ "colorByPoint" : 1, "data" : [ { + "drilldown" : "Ali Moradi", + "name" : "Ali Moradi", + "y" : 3 + }, + { "drilldown" : "Andreas Mahnke", "name" : "Andreas Mahnke", "y" : 2 @@ -286,6 +319,11 @@ "y" : 4 }, { + "drilldown" : "Ulrich Rieke", + "name" : "Ulrich Rieke", + "y" : 4 + }, + { "drilldown" : "Wanderdoc", "name" : "Wanderdoc", "y" : 2 @@ -295,7 +333,7 @@ } ], "subtitle" : { - "text" : "[Champions: 16] Last updated at 2025-11-11 18:51:09 GMT" + "text" : "[Champions: 18] Last updated at 2025-11-12 15:06:10 GMT" }, "title" : { "text" : "The Weekly Challenge - 347" diff --git a/stats/pwc-language-breakdown-2019.json b/stats/pwc-language-breakdown-2019.json index 493b4541c1..2c030f1673 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-11-11 18:51:09 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-11-12 15:06:10 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2020.json b/stats/pwc-language-breakdown-2020.json index dbe808c301..4b0d1bec21 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-11-11 18:51:09 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-11-12 15:06:10 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2021.json b/stats/pwc-language-breakdown-2021.json index 95738e4e34..587c0e464c 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-11-11 18:51:09 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-11-12 15:06:10 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2022.json b/stats/pwc-language-breakdown-2022.json index 51957433ec..ccecc77e68 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-11-11 18:51:09 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-11-12 15:06:10 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2023.json b/stats/pwc-language-breakdown-2023.json index b4b9eabf47..8b734ef0c5 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-11-11 18:51:09 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-11-12 15:06:10 GMT" }, "title" : { "text" : "The Weekly Challenge Language" |
