From 2cb74a7aa10c72b7862513e5e320bc29f1d5f55f Mon Sep 17 00:00:00 2001 From: Mohammad Sajid Anwar Date: Mon, 10 Nov 2025 19:06:25 +0000 Subject: - Added solutions by Eric Cheung. - Added solutions by Mohammad Sajid Anwar. - Added solutions by E. Choroba. - Added solutions by Mark Anderson. - Added solutions by PokGoPun. - Added solutions by Niels van Dijke. - Added solutions by David Ferrone. - Added solutions by Benjamin Andre. - Added solutions by Peter Campbell Smith. - Added solutions by Wanderdoc. --- challenge-345/perlboy1967/perl/ch-1.pl | 33 ++ challenge-345/perlboy1967/perl/ch-2.pl | 57 +++ challenge-345/perlboy1967/perl/ch1.pl | 33 -- challenge-345/perlboy1967/perl/ch2.pl | 57 --- challenge-346/perlboy1967/perl/ch-1.pl | 47 +++ challenge-346/perlboy1967/perl/ch-2.pl | 45 +++ challenge-346/perlboy1967/perl/ch1.pl | 47 --- challenge-346/perlboy1967/perl/ch2.pl | 45 --- challenge-347/eric-cheung/python/ch-1.py | 16 + challenge-347/eric-cheung/python/ch-2.py | 25 ++ challenge-347/mohammad-anwar/perl/ch-1.pl | 23 ++ challenge-347/mohammad-anwar/python/ch-1.py | 28 ++ challenge-347/mohammad-anwar/raku/ch-1.raku | 20 + challenge-347/perlboy1967/perl/ch-1.pl | 40 ++ challenge-347/perlboy1967/perl/ch-2.pl | 51 +++ challenge-347/perlboy1967/perl/ch1.pl | 40 -- challenge-347/perlboy1967/perl/ch2.pl | 51 --- stats/pwc-challenge-345.json | 17 +- stats/pwc-challenge-346.json | 566 ++++++++++++++++++++++++++++ stats/pwc-current.json | 421 +-------------------- 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 | 33 +- stats/pwc-language-breakdown-summary.json | 8 +- stats/pwc-leaders.json | 60 +-- 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 | 8 +- stats/pwc-summary-211-240.json | 6 +- stats/pwc-summary-241-270.json | 2 +- stats/pwc-summary-271-300.json | 2 +- stats/pwc-summary-301-330.json | 2 +- stats/pwc-summary-31-60.json | 2 +- stats/pwc-summary-61-90.json | 6 +- stats/pwc-summary-91-120.json | 2 +- stats/pwc-summary.json | 20 +- stats/pwc-yearly-language-summary.json | 10 +- 42 files changed, 1077 insertions(+), 766 deletions(-) create mode 100755 challenge-345/perlboy1967/perl/ch-1.pl create mode 100755 challenge-345/perlboy1967/perl/ch-2.pl delete mode 100755 challenge-345/perlboy1967/perl/ch1.pl delete mode 100755 challenge-345/perlboy1967/perl/ch2.pl create mode 100755 challenge-346/perlboy1967/perl/ch-1.pl create mode 100755 challenge-346/perlboy1967/perl/ch-2.pl delete mode 100755 challenge-346/perlboy1967/perl/ch1.pl delete mode 100755 challenge-346/perlboy1967/perl/ch2.pl create mode 100755 challenge-347/eric-cheung/python/ch-1.py create mode 100755 challenge-347/eric-cheung/python/ch-2.py create mode 100644 challenge-347/mohammad-anwar/perl/ch-1.pl create mode 100644 challenge-347/mohammad-anwar/python/ch-1.py create mode 100644 challenge-347/mohammad-anwar/raku/ch-1.raku create mode 100755 challenge-347/perlboy1967/perl/ch-1.pl create mode 100755 challenge-347/perlboy1967/perl/ch-2.pl delete mode 100755 challenge-347/perlboy1967/perl/ch1.pl delete mode 100755 challenge-347/perlboy1967/perl/ch2.pl create mode 100644 stats/pwc-challenge-346.json diff --git a/challenge-345/perlboy1967/perl/ch-1.pl b/challenge-345/perlboy1967/perl/ch-1.pl new file mode 100755 index 0000000000..891d1f6626 --- /dev/null +++ b/challenge-345/perlboy1967/perl/ch-1.pl @@ -0,0 +1,33 @@ +#!/bin/perl + +=pod + +L + +Author: Niels 'PerlBoy' van Dijke + +Task 1: Peak Positions +Submitted by: Mohammad Sajid Anwar + +You are given an array of integers, @ints. + +Find all the peaks in the array, a peak is an element that is strictly +greater than its left and right neighbours. Return the indices of all such +peak positions. + +=cut + +use Test2::V0 qw(-no_srand); +use exact 'v5.32', -signatures; + +sub peakPositions (@ints) { + map { $ints[$_-1] < $ints[$_] > $ints[$_+1] ? $_ : () } 1 .. $#ints - 1; +} + +is([peakPositions(1,3,2)],[1],'Example 1'); +is([peakPositions(2,4,6,5,3)],[2],'Example 2'); +is([peakPositions(1,2,3,2,4,1)],[2,4],'Example 3'); +is([peakPositions(5,3,1)],[],'Example 4'); +is([peakPositions(1,5,1,5,1,5,1)],[1,3,5],'Example 5'); + +done_testing; diff --git a/challenge-345/perlboy1967/perl/ch-2.pl b/challenge-345/perlboy1967/perl/ch-2.pl new file mode 100755 index 0000000000..1621f26920 --- /dev/null +++ b/challenge-345/perlboy1967/perl/ch-2.pl @@ -0,0 +1,57 @@ +#!/bin/perl + +=pod + +L + +Author: Niels 'PerlBoy' van Dijke + +Task 2: Last Visitor +Submitted by: Mohammad Sajid Anwar + +You are given an integer array @ints where each element is either a positive integer or -1. + +We process the array from left to right while maintaining two lists: + +|| @seen: stores previously seen positive integers (newest at the front) +|| @ans: stores the answers for each -1 + +Rules: + +If $ints[i] is a positive number -> insert it at the front of @seen +If $ints[i] is -1: + +Let $x be how many -1s in a row we’ve seen before this one. + +If $x < len(@seen) -> append seen[x] to @ans + +Else -> append -1 to @ans + +At the end, return @ans. + +=cut + +use Test2::V0 qw(-no_srand); +use exact 'v5.32', -signatures; + +sub lastVisitor (@ints) { + my ($i,@seen,@ans) = (0); + for (@ints) { + if ($_ >= 0) { + push(@seen,$_); + $i++ if ($i < 0); + } else { + $i += $_ if (@seen); + push(@ans,$seen[$i] // -1); + } + } + return @ans; +} + +is([lastVisitor(5,-1,-1)],[5,-1],'Example 1'); +is([lastVisitor(3,7,-1,-1,-1)],[7,3,-1],'Example 2'); +is([lastVisitor(2,-1,4,-1,-1)],[2,4,2],'Example 3'); +is([lastVisitor(10,20,-1,30,-1,-1)],[20,30,20],'Example 4'); +is([lastVisitor(-1,-1,5,-1)],[-1,-1,5],'Example 5'); + +done_testing; diff --git a/challenge-345/perlboy1967/perl/ch1.pl b/challenge-345/perlboy1967/perl/ch1.pl deleted file mode 100755 index 891d1f6626..0000000000 --- a/challenge-345/perlboy1967/perl/ch1.pl +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/perl - -=pod - -L - -Author: Niels 'PerlBoy' van Dijke - -Task 1: Peak Positions -Submitted by: Mohammad Sajid Anwar - -You are given an array of integers, @ints. - -Find all the peaks in the array, a peak is an element that is strictly -greater than its left and right neighbours. Return the indices of all such -peak positions. - -=cut - -use Test2::V0 qw(-no_srand); -use exact 'v5.32', -signatures; - -sub peakPositions (@ints) { - map { $ints[$_-1] < $ints[$_] > $ints[$_+1] ? $_ : () } 1 .. $#ints - 1; -} - -is([peakPositions(1,3,2)],[1],'Example 1'); -is([peakPositions(2,4,6,5,3)],[2],'Example 2'); -is([peakPositions(1,2,3,2,4,1)],[2,4],'Example 3'); -is([peakPositions(5,3,1)],[],'Example 4'); -is([peakPositions(1,5,1,5,1,5,1)],[1,3,5],'Example 5'); - -done_testing; diff --git a/challenge-345/perlboy1967/perl/ch2.pl b/challenge-345/perlboy1967/perl/ch2.pl deleted file mode 100755 index 1621f26920..0000000000 --- a/challenge-345/perlboy1967/perl/ch2.pl +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/perl - -=pod - -L - -Author: Niels 'PerlBoy' van Dijke - -Task 2: Last Visitor -Submitted by: Mohammad Sajid Anwar - -You are given an integer array @ints where each element is either a positive integer or -1. - -We process the array from left to right while maintaining two lists: - -|| @seen: stores previously seen positive integers (newest at the front) -|| @ans: stores the answers for each -1 - -Rules: - -If $ints[i] is a positive number -> insert it at the front of @seen -If $ints[i] is -1: - -Let $x be how many -1s in a row we’ve seen before this one. - -If $x < len(@seen) -> append seen[x] to @ans - -Else -> append -1 to @ans - -At the end, return @ans. - -=cut - -use Test2::V0 qw(-no_srand); -use exact 'v5.32', -signatures; - -sub lastVisitor (@ints) { - my ($i,@seen,@ans) = (0); - for (@ints) { - if ($_ >= 0) { - push(@seen,$_); - $i++ if ($i < 0); - } else { - $i += $_ if (@seen); - push(@ans,$seen[$i] // -1); - } - } - return @ans; -} - -is([lastVisitor(5,-1,-1)],[5,-1],'Example 1'); -is([lastVisitor(3,7,-1,-1,-1)],[7,3,-1],'Example 2'); -is([lastVisitor(2,-1,4,-1,-1)],[2,4,2],'Example 3'); -is([lastVisitor(10,20,-1,30,-1,-1)],[20,30,20],'Example 4'); -is([lastVisitor(-1,-1,5,-1)],[-1,-1,5],'Example 5'); - -done_testing; diff --git a/challenge-346/perlboy1967/perl/ch-1.pl b/challenge-346/perlboy1967/perl/ch-1.pl new file mode 100755 index 0000000000..aba8ac09e5 --- /dev/null +++ b/challenge-346/perlboy1967/perl/ch-1.pl @@ -0,0 +1,47 @@ +#!/bin/perl + +=pod + +L + +Author: Niels 'PerlBoy' van Dijke + +Task 1: Longest Parenthesis +Submitted by: Mohammad Sajid Anwar + +You are given a string containing only ( and ). + +Write a script to find the length of the longest valid parenthesis. + +=cut + +use Test2::V0 qw(-no_srand); +use exact 'v5.32', -signatures; + +use List::Util qw(max); + +sub longestParenthesis ($str) { + my ($maxLen,$i,@stack) = (0,0,-1); + for (split//,$str) { + if ($_ eq '(') { + push @stack,$i; + } else { + pop @stack; + if (@stack) { + $maxLen = max($maxLen,$i - $stack[-1]); + } else { + push @stack, $i; + } + } + $i++; + } + return $maxLen; +} + +is(longestParenthesis('(()())'),6,'Example 1'); +is(longestParenthesis(')()())'),4,'Example 2'); +is(longestParenthesis('((()))()(((()'),8,'Example 3'); +is(longestParenthesis('))))((()('),2,'Example 4'); +is(longestParenthesis('()(()'),2,'Example 5'); + +done_testing; diff --git a/challenge-346/perlboy1967/perl/ch-2.pl b/challenge-346/perlboy1967/perl/ch-2.pl new file mode 100755 index 0000000000..574c7283c8 --- /dev/null +++ b/challenge-346/perlboy1967/perl/ch-2.pl @@ -0,0 +1,45 @@ +#!/bin/perl + +=pod + +L + +Author: Niels 'PerlBoy' van Dijke + +Task 2: Magic Expression +Submitted by: Mohammad Sajid Anwar + +You are given a string containing only digits and a target integer. + +Write a script to insert binary operators +, - and * between the digits +in the given string that evaluates to target integer. + +=cut + +use Test2::V0 qw(-no_srand); +use exact 'v5.32', -signatures; + +use Algorithm::Combinatorics qw(variations_with_repetition); + +sub magicExpression ($str,$target) { + my @d = split//,$str; + my (@res,$eval); + my @op = ('*','+','-',''); + my $sprintfFmt = join('%s',@d); + for my $op (variations_with_repetition(\@op,$#d)) { + my $s = sprintf($sprintfFmt,@$op); + next if $s =~ m#\D[0]+\d#; + $eval .= sprintf(qq{push(\@res,'%s') if %s == %d;\n}, $s, $s, $target); + } + eval $eval; + @res; +} + +is([magicExpression('123',6)],['1*2*3','1+2+3'],'Example 1'); +is([magicExpression('105',5)],['1*0+5','10-5'],'Example 2'); +is([magicExpression('232',8)],['2*3+2','2+3*2'],'Example 3'); +is([magicExpression('1234',10)],['1*2*3+4','1+2+3+4'],'Example 4'); +is([magicExpression('1001',2)],['1+0*0+1','1+0+0+1','1+0-0+1', + '1-0*0+1','1-0+0+1','1-0-0+1'],'Example 5'); + +done_testing; diff --git a/challenge-346/perlboy1967/perl/ch1.pl b/challenge-346/perlboy1967/perl/ch1.pl deleted file mode 100755 index aba8ac09e5..0000000000 --- a/challenge-346/perlboy1967/perl/ch1.pl +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/perl - -=pod - -L - -Author: Niels 'PerlBoy' van Dijke - -Task 1: Longest Parenthesis -Submitted by: Mohammad Sajid Anwar - -You are given a string containing only ( and ). - -Write a script to find the length of the longest valid parenthesis. - -=cut - -use Test2::V0 qw(-no_srand); -use exact 'v5.32', -signatures; - -use List::Util qw(max); - -sub longestParenthesis ($str) { - my ($maxLen,$i,@stack) = (0,0,-1); - for (split//,$str) { - if ($_ eq '(') { - push @stack,$i; - } else { - pop @stack; - if (@stack) { - $maxLen = max($maxLen,$i - $stack[-1]); - } else { - push @stack, $i; - } - } - $i++; - } - return $maxLen; -} - -is(longestParenthesis('(()())'),6,'Example 1'); -is(longestParenthesis(')()())'),4,'Example 2'); -is(longestParenthesis('((()))()(((()'),8,'Example 3'); -is(longestParenthesis('))))((()('),2,'Example 4'); -is(longestParenthesis('()(()'),2,'Example 5'); - -done_testing; diff --git a/challenge-346/perlboy1967/perl/ch2.pl b/challenge-346/perlboy1967/perl/ch2.pl deleted file mode 100755 index 574c7283c8..0000000000 --- a/challenge-346/perlboy1967/perl/ch2.pl +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/perl - -=pod - -L - -Author: Niels 'PerlBoy' van Dijke - -Task 2: Magic Expression -Submitted by: Mohammad Sajid Anwar - -You are given a string containing only digits and a target integer. - -Write a script to insert binary operators +, - and * between the digits -in the given string that evaluates to target integer. - -=cut - -use Test2::V0 qw(-no_srand); -use exact 'v5.32', -signatures; - -use Algorithm::Combinatorics qw(variations_with_repetition); - -sub magicExpression ($str,$target) { - my @d = split//,$str; - my (@res,$eval); - my @op = ('*','+','-',''); - my $sprintfFmt = join('%s',@d); - for my $op (variations_with_repetition(\@op,$#d)) { - my $s = sprintf($sprintfFmt,@$op); - next if $s =~ m#\D[0]+\d#; - $eval .= sprintf(qq{push(\@res,'%s') if %s == %d;\n}, $s, $s, $target); - } - eval $eval; - @res; -} - -is([magicExpression('123',6)],['1*2*3','1+2+3'],'Example 1'); -is([magicExpression('105',5)],['1*0+5','10-5'],'Example 2'); -is([magicExpression('232',8)],['2*3+2','2+3*2'],'Example 3'); -is([magicExpression('1234',10)],['1*2*3+4','1+2+3+4'],'Example 4'); -is([magicExpression('1001',2)],['1+0*0+1','1+0+0+1','1+0-0+1', - '1-0*0+1','1-0+0+1','1-0-0+1'],'Example 5'); - -done_testing; diff --git a/challenge-347/eric-cheung/python/ch-1.py b/challenge-347/eric-cheung/python/ch-1.py new file mode 100755 index 0000000000..494a0ea2e0 --- /dev/null +++ b/challenge-347/eric-cheung/python/ch-1.py @@ -0,0 +1,16 @@ + +from datetime import datetime +from dateutil.parser import parse + +## strInputDate = "1st Jan 2025" ## Example 1 +## strInputDate = "22nd Feb 2025" ## Example 2 +## strInputDate = "15th Apr 2025" ## Example 3 +## strInputDate = "23rd Oct 2025" ## Example 4 +strInputDate = "31st Dec 2025" ## Example 5 + +strOutputDateFormat = "%Y-%m-%d" + +objDate = parse(strInputDate) + +print (objDate.strftime(strOutputDateFormat)) + diff --git a/challenge-347/eric-cheung/python/ch-2.py b/challenge-347/eric-cheung/python/ch-2.py new file mode 100755 index 0000000000..451bf4727e --- /dev/null +++ b/challenge-347/eric-cheung/python/ch-2.py @@ -0,0 +1,25 @@ + +## strPhoneNum = "1-23-45-6" ## Example 1 +## strPhoneNum = "1234" ## Example 2 +## strPhoneNum = "12 345-6789" ## Example 3 +## strPhoneNum = "123 4567" ## Example 4 +strPhoneNum = "123 456-78" ## Example 5 + +strTempPhoneNum = strPhoneNum.replace(" ", "").replace("-", "") + +arrPhoneNum = [] + +while (nLen := len(strTempPhoneNum)) > 0: + if nLen <= 3: + arrPhoneNum.append(strTempPhoneNum) + break + + if nLen == 4: + arrPhoneNum.append(strTempPhoneNum[:2]) + arrPhoneNum.append(strTempPhoneNum[2:]) + break + + arrPhoneNum.append(strTempPhoneNum[:3]) + strTempPhoneNum = strTempPhoneNum[3:] + +print ("-".join(arrPhoneNum)) diff --git a/challenge-347/mohammad-anwar/perl/ch-1.pl b/challenge-347/mohammad-anwar/perl/ch-1.pl new file mode 100644 index 0000000000..dd080d9a0e --- /dev/null +++ b/challenge-347/mohammad-anwar/perl/ch-1.pl @@ -0,0 +1,23 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use Test::More; + +my @examples = ( + ["1st Jan 2025", "2025-01-01"], + ["22nd Feb 2025", "2025-02-22"], + ["15th Apr 2025", "2025-04-15"], + ["23rd Oct 2025", "2025-10-23"], + ["31st Dec 2025", "2025-12-31"], +); + +is(format_date($_->[0]), $_->[1]) for @examples; + +done_testing; + +sub format_date { + my $str = shift; + $str =~ /(\d+)\w{2} (\w{3}) (\d+)/; + sprintf("%04d-%02d-%02d", $3, 1+index("JanFebMarAprMayJunJulAugSepOctNovDec",$2)/3, $1); +} diff --git a/challenge-347/mohammad-anwar/python/ch-1.py b/challenge-347/mohammad-anwar/python/ch-1.py new file mode 100644 index 0000000000..522239492c --- /dev/null +++ b/challenge-347/mohammad-anwar/python/ch-1.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 + +import re + +def test_format_date(): + examples = [ + ["1st Jan 2025", "2025-01-01"], + ["22nd Feb 2025", "2025-02-22"], + ["15th Apr 2025", "2025-04-15"], + ["23rd Oct 2025", "2025-10-23"], + ["31st Dec 2025", "2025-12-31"], + ] + + for input_str, expected in examples: + result = format_date(input_str) + assert result == expected, f"Expected {expected}, got {result} for input {input_str}" + print("All tests passed!") + +def format_date(date_str): + match = re.search(r'(\d+)\w{2} (\w{3}) (\d+)', date_str) + if match: + day, month, year = match.groups() + month_num = 1 + "JanFebMarAprMayJunJulAugSepOctNovDec".index(month) // 3 + return f"{year}-{month_num:02d}-{int(day):02d}" + return "" + +if __name__ == "__main__": + test_format_date() diff --git a/challenge-347/mohammad-anwar/raku/ch-1.raku b/challenge-347/mohammad-anwar/raku/ch-1.raku new file mode 100644 index 0000000000..caed453736 --- /dev/null +++ b/challenge-347/mohammad-anwar/raku/ch-1.raku @@ -0,0 +1,20 @@ +#!/usr/bin/env raku + +use Test; + +my @examples = ( + ["1st Jan 2025", "2025-01-01"], + ["22nd Feb 2025", "2025-02-22"], + ["15th Apr 2025", "2025-04-15"], + ["23rd Oct 2025", "2025-10-23"], + ["31st Dec 2025", "2025-12-31"], +); + +is(format-date($_[0]), $_[1]) for @examples; + +done-testing; + +sub format-date(Str $str) { + $str ~~ /(\d+) \w**2 \s (\w**3) \s (\d+)/; + sprintf("%04d-%02d-%02d", $2, 1+index("JanFebMarAprMayJunJulAugSepOctNovDec", $1)/3, $0); +} diff --git a/challenge-347/perlboy1967/perl/ch-1.pl b/challenge-347/perlboy1967/perl/ch-1.pl new file mode 100755 index 0000000000..88a583e9ec --- /dev/null +++ b/challenge-347/perlboy1967/perl/ch-1.pl @@ -0,0 +1,40 @@ +#!/bin/perl + +=pod + +L + +Author: Niels 'PerlBoy' van Dijke + +Task 1: Format Date +Submitted by: Mohammad Sajid Anwar + +You are given a date in the form: 10th Nov 2025. + +Write a script to format the given date in the form: 2025-11-10 using the set below. + +|| @DAYS = ("1st", "2nd", "3rd", ....., "30th", "31st") +|| @MONTHS = ("Jan", "Feb", "Mar", ....., "Nov", "Dec") +|| @YEARS = (1900..2100) + +=cut + +use Test2::V0 qw(-no_srand); +use exact 'v5.32', -signatures; + +sub formatData ($str) { + state $M = { 'Jan' => 1, 'Feb' => 2, 'Mar' => 3, + 'Apr' => 4, 'May' => 5, 'Jun' => 6, + 'Jul' => 7, 'Aug' => 8, 'Sep' => 9, + 'Oct' =>10, 'Nov' =>11, 'Dec' =>12}; + return sprintf('%d-%02d-%02d',$3,$M->{$2},$1) + if $str =~ m/(\d+)\S+\s+([A-Z][a-z][a-z])\s+(\d+)/; +} + +is(formatData('1st Jan 2025'),'2025-01-01','Example 1'); +is(formatData('22nd Feb 2025'),'2025-02-22','Example 2'); +is(formatData('15th Apr 2025'),'2025-04-15','Example 3'); +is(formatData('23rd Oct 2025'),'2025-10-23','Example 4'); +is(formatData('31st Dec 2025'),'2025-12-31','Example 5'); + +done_testing; diff --git a/challenge-347/perlboy1967/perl/ch-2.pl b/challenge-347/perlboy1967/perl/ch-2.pl new file mode 100755 index 0000000000..2a0d95021d --- /dev/null +++ b/challenge-347/perlboy1967/perl/ch-2.pl @@ -0,0 +1,51 @@ +#!/bin/perl + +=pod + +L + +Author: Niels 'PerlBoy' van Dijke + +Task 2: Format Phone Number +Submitted by: Mohammad Sajid Anwar + +You are given a phone number as a string containing digits, space and dash only. + +Write a script to format the given phone number using the below rules: + +1. Removing all spaces and dashes +2. Grouping digits into blocks of length 3 from left to right +3. Handling the final digits (4 or fewer) specially: +- 2 digits: one block of length 2 +- 3 digits: one block of length 3 +- 4 digits: two blocks of length 2 +4. Joining all blocks with dashes + +=cut + +use Test2::V0 qw(-no_srand); +use exact 'v5.32', -signatures; + +sub formatPhoneNumber ($str) { + $str =~ s/\D+//g; + + # Split the string in three character substrings + my @p = unpack('(A3)*',$str); + + # The remainder is in $p[-1] + # Length is either one or two. + # Two is okay, one needs 'borrowing at $p[-2] + if (length $p[-1] == 1) { + push(@p,unpack('(A2)*',join('',reverse(pop(@p),pop(@p)))); + } + + return join('-',@p); +} + +is(formatPhoneNumber('1-23-45-6'),'123-456','Example 1'); +is(formatPhoneNumber('1234'),'12-34','Example 2'); +is(formatPhoneNumber('12 345-6789'),'123-456-789','Example 3'); +is(formatPhoneNumber('123 4567'),'123-45-67','Example 4'); +is(formatPhoneNumber('123 456-78'),'123-456-78','Example 5'); + +done_testing; diff --git a/challenge-347/perlboy1967/perl/ch1.pl b/challenge-347/perlboy1967/perl/ch1.pl deleted file mode 100755 index 88a583e9ec..0000000000 --- a/challenge-347/perlboy1967/perl/ch1.pl +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/perl - -=pod - -L - -Author: Niels 'PerlBoy' van Dijke - -Task 1: Format Date -Submitted by: Mohammad Sajid Anwar - -You are given a date in the form: 10th Nov 2025. - -Write a script to format the given date in the form: 2025-11-10 using the set below. - -|| @DAYS = ("1st", "2nd", "3rd", ....., "30th", "31st") -|| @MONTHS = ("Jan", "Feb", "Mar", ....., "Nov", "Dec") -|| @YEARS = (1900..2100) - -=cut - -use Test2::V0 qw(-no_srand); -use exact 'v5.32', -signatures; - -sub formatData ($str) { - state $M = { 'Jan' => 1, 'Feb' => 2, 'Mar' => 3, - 'Apr' => 4, 'May' => 5, 'Jun' => 6, - 'Jul' => 7, 'Aug' => 8, 'Sep' => 9, - 'Oct' =>10, 'Nov' =>11, 'Dec' =>12}; - return sprintf('%d-%02d-%02d',$3,$M->{$2},$1) - if $str =~ m/(\d+)\S+\s+([A-Z][a-z][a-z])\s+(\d+)/; -} - -is(formatData('1st Jan 2025'),'2025-01-01','Example 1'); -is(formatData('22nd Feb 2025'),'2025-02-22','Example 2'); -is(formatData('15th Apr 2025'),'2025-04-15','Example 3'); -is(formatData('23rd Oct 2025'),'2025-10-23','Example 4'); -is(formatData('31st Dec 2025'),'2025-12-31','Example 5'); - -done_testing; diff --git a/challenge-347/perlboy1967/perl/ch2.pl b/challenge-347/perlboy1967/perl/ch2.pl deleted file mode 100755 index 2a0d95021d..0000000000 --- a/challenge-347/perlboy1967/perl/ch2.pl +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/perl - -=pod - -L - -Author: Niels 'PerlBoy' van Dijke - -Task 2: Format Phone Number -Submitted by: Mohammad Sajid Anwar - -You are given a phone number as a string containing digits, space and dash only. - -Write a script to format the given phone number using the below rules: - -1. Removing all spaces and dashes -2. Grouping digits into blocks of length 3 from left to right -3. Handling the final digits (4 or fewer) specially: -- 2 digits: one block of length 2 -- 3 digits: one block of length 3 -- 4 digits: two blocks of length 2 -4. Joining all blocks with dashes - -=cut - -use Test2::V0 qw(-no_srand); -use exact 'v5.32', -signatures; - -sub formatPhoneNumber ($str) { - $str =~ s/\D+//g; - - # Split the string in three character substrings - my @p = unpack('(A3)*',$str); - - # The remainder is in $p[-1] - # Length is either one or two. - # Two is okay, one needs 'borrowing at $p[-2] - if (length $p[-1] == 1) { - push(@p,unpack('(A2)*',join('',reverse(pop(@p),pop(@p)))); - } - - return join('-',@p); -} - -is(formatPhoneNumber('1-23-45-6'),'123-456','Example 1'); -is(formatPhoneNumber('1234'),'12-34','Example 2'); -is(formatPhoneNumber('12 345-6789'),'123-456-789','Example 3'); -is(formatPhoneNumber('123 4567'),'123-45-67','Example 4'); -is(formatPhoneNumber('123 456-78'),'123-456-78','Example 5'); - -done_testing; diff --git a/stats/pwc-challenge-345.json b/stats/pwc-challenge-345.json index 28ff4de607..6b9bf104e8 100644 --- a/stats/pwc-challenge-345.json +++ b/stats/pwc-challenge-345.json @@ -220,6 +220,16 @@ "id" : "Mohammad Sajid Anwar", "name" : "Mohammad Sajid Anwar" }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Niels van Dijke", + "name" : "Niels van Dijke" + }, { "data" : [ [ @@ -498,6 +508,11 @@ "name" : "Mohammad Sajid Anwar", "y" : 2 }, + { + "drilldown" : "Niels van Dijke", + "name" : "Niels van Dijke", + "y" : 2 + }, { "drilldown" : "Packy Anderson", "name" : "Packy Anderson", @@ -568,7 +583,7 @@ } ], "subtitle" : { - "text" : "[Champions: 31] Last updated at 2025-11-07 23:55:59 GMT" + "text" : "[Champions: 32] Last updated at 2025-11-10 19:05:27 GMT" }, "title" : { "text" : "The Weekly Challenge - 345" diff --git a/stats/pwc-challenge-346.json b/stats/pwc-challenge-346.json new file mode 100644 index 0000000000..cf34bf7cc3 --- /dev/null +++ b/stats/pwc-challenge-346.json @@ -0,0 +1,566 @@ +{ + "chart" : { + "type" : "column" + }, + "drilldown" : { + "series" : [ + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Ali Moradi", + "name" : "Ali Moradi" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Andreas Mahnke", + "name" : "Andreas Mahnke" + }, + { + "data" : [ + [ + "Raku", + 1 + ] + ], + "id" : "Andrew Shitov", + "name" : "Andrew Shitov" + }, + { + "data" : [ + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Arne Sommer", + "name" : "Arne Sommer" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ] + ], + "id" : "Athanasius", + "name" : "Athanasius" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Bob Lied", + "name" : "Bob Lied" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "David Ferrone", + "name" : "David Ferrone" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "E. Choroba", + "name" : "E. Choroba" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Jaldhar H. Vyas", + "name" : "Jaldhar H. Vyas" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Jorg Sommrey", + "name" : "Jorg Sommrey" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Kjetil Skotheim", + "name" : "Kjetil Skotheim" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Lubos Kolouch", + "name" : "Lubos Kolouch" + }, + { + "data" : [ + [ + "Raku", + 1 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Luca Ferrari", + "name" : "Luca Ferrari" + }, + { + "data" : [ + [ + "Raku", + 2 + ] + ], + "id" : "Mark Anderson", + "name" : "Mark Anderson" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Matthew Neleigh", + "name" : "Matthew Neleigh" + }, + { + "data" : [ + [ + "Perl", + 1 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Matthias Muth", + "name" : "Matthias Muth" + }, + { + "data" : [ + [ + "Perl", + 1 + ], + [ + "Raku", + 1 + ] + ], + "id" : "Mohammad Sajid Anwar", + "name" : "Mohammad Sajid Anwar" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Niels van Dijke", + "name" : "Niels van Dijke" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Packy Anderson", + "name" : "Packy Anderson" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Peter Campbell Smith", + "name" : "Peter Campbell Smith" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Peter Meszaros", + "name" : "Peter Meszaros" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Robbie Hatley", + "name" : "Robbie Hatley" + }, + { + "data" : [ + [ + "Raku", + 2 + ] + ], + "id" : "Robert Ransbottom", + "name" : "Robert Ransbottom" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Roger Bell_West", + "name" : "Roger Bell_West" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Simon Green", + "name" : "Simon Green" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 2 + ] + ], + "id" : "Thomas Kohler", + "name" : "Thomas Kohler" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 1 + ] + ], + "id" : "Ulrich Rieke", + "name" : "Ulrich Rieke" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Vinod Kumar K", + "name" : "Vinod Kumar K" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "W. Luis Mochan", + "name" : "W. Luis Mochan" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Wanderdoc", + "name" : "Wanderdoc" + } + ] + }, + "legend" : { + "enabled" : 0 + }, + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + } + } + }, + "series" : [ + { + "colorByPoint" : 1, + "data" : [ + { + "drilldown" : "Ali Moradi", + "name" : "Ali Moradi", + "y" : 3 + }, + { + "drilldown" : "Andreas Mahnke", + "name" : "Andreas Mahnke", + "y" : 2 + }, + { + "drilldown" : "Andrew Shitov", + "name" : "Andrew Shitov", + "y" : 1 + }, + { + "drilldown" : "Arne Sommer", + "name" : "Arne Sommer", + "y" : 3 + }, + { + "drilldown" : "Athanasius", + "name" : "Athanasius", + "y" : 4 + }, + { + "drilldown" : "Bob Lied", + "name" : "Bob Lied", + "y" : 2 + }, + { + "drilldown" : "David Ferrone", + "name" : "David Ferrone", + "y" : 2 + }, + { + "drilldown" : "E. Choroba", + "name" : "E. Choroba", + "y" : 2 + }, + { + "drilldown" : "Jaldhar H. Vyas", + "name" : "Jaldhar H. Vyas", + "y" : 5 + }, + { + "drilldown" : "Jorg Sommrey", + "name" : "Jorg Sommrey", + "y" : 3 + }, + { + "drilldown" : "Kjetil Skotheim", + "name" : "Kjetil Skotheim", + "y" : 2 + }, + { + "drilldown" : "Lubos Kolouch", + "name" : "Lubos Kolouch", + "y" : 2 + }, + { + "drilldown" : "Luca Ferrari", + "name" : "Luca Ferrari", + "y" : 2 + }, + { + "drilldown" : "Mark Anderson", + "name" : "Mark Anderson", + "y" : 2 + }, + { + "drilldown" : "Matthew Neleigh", + "name" : "Matthew Neleigh", + "y" : 2 + }, + { + "drilldown" : "Matthias Muth", + "name" : "Matthias Muth", + "y" : 2 + }, + { + "drilldown" : "Mohammad Sajid Anwar", + "name" : "Mohammad Sajid Anwar", + "y" : 2 + }, + { + "drilldown" : "Niels van Dijke", + "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" : "Peter Meszaros", + "name" : "Peter Meszaros", + "y" : 2 + }, + { + "drilldown" : "Robbie Hatley", + "name" : "Robbie Hatley", + "y" : 2 + }, + { + "drilldown" : "Robert Ransbottom", + "name" : "Robert Ransbottom", + "y" : 2 + }, + { + "drilldown" : "Roger Bell_West", + "name" : "Roger Bell_West", + "y" : 3 + }, + { + "drilldown" : "Simon Green", + "name" : "Simon Green", + "y" : 3 + }, + { + "drilldown" : "Thomas Kohler", + "name" : "Thomas Kohler", + "y" : 4 + }, + { + "drilldown" : "Ulrich Rieke", + "name" : "Ulrich Rieke", + "y" : 3 + }, + { + "drilldown" : "Vinod Kumar K", + "name" : "Vinod Kumar K", + "y" : 2 + }, + { + "drilldown" : "W. Luis Mochan", + "name" : "W. Luis Mochan", + "y" : 3 + }, + { + "drilldown" : "Wanderdoc", + "name" : "Wanderdoc", + "y" : 2 + } + ], + "name" : "The Weekly Challenge - 346" + } + ], + "subtitle" : { + "text" : "[Champions: 30] Last updated at 2025-11-10 19:05:27 GMT" + }, + "title" : { + "text" : "The Weekly Challenge - 346" + }, + "tooltip" : { + "followPointer" : 1, + "headerFormat" : "{series.name}
", + "pointFormat" : "{point.name}: {point.y:f}
" + }, + "xAxis" : { + "type" : "category" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + } +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index f922990c49..00b9301d23 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -4,78 +4,6 @@ }, "drilldown" : { "series" : [ - { - "data" : [ - [ - "Perl", - 2 - ], - [ - "Blog", - 1 - ] - ], - "id" : "Ali Moradi", - "name" : "Ali Moradi" - }, - { - "data" : [ - [ - "Perl", - 2 - ] - ], - "id" : "Andreas Mahnke", - "name" : "Andreas Mahnke" - }, - { - "data" : [ - [ - "Raku", - 1 - ] - ], - "id" : "Andrew Shitov", - "name" : "Andrew Shitov" - }, - { - "data" : [ - [ - "Raku", - 2 - ], - [ - "Blog", - 1 - ] - ], - "id" : "Arne Sommer", - "name" : "Arne Sommer" - }, - { - "data" : [ - [ - "Perl", - 2 - ], - [ - "Raku", - 2 - ] - ], - "id" : "Athanasius", - "name" : "Athanasius" - }, - { - "data" : [ - [ - "Perl", - 2 - ] - ], - "id" : "Bob Lied", - "name" : "Bob Lied" - }, { "data" : [ [ @@ -96,72 +24,6 @@ "id" : "E. Choroba", "name" : "E. Choroba" }, - { - "data" : [ - [ - "Perl", - 2 - ], - [ - "Raku", - 2 - ], - [ - "Blog", - 1 - ] - ], - "id" : "Jaldhar H. Vyas", - "name" : "Jaldhar H. Vyas" - }, - { - "data" : [ - [ - "Perl", - 2 - ], - [ - "Blog", - 1 - ] - ], - "id" : "Jorg Sommrey", - "name" : "Jorg Sommrey" - }, - { - "data" : [ - [ - "Perl", - 2 - ] - ], - "id" : "Kjetil Skotheim", - "name" : "Kjetil Skotheim" - }, - { - "data" : [ - [ - "Perl", - 2 - ] - ], - "id" : "Lubos Kolouch", - "name" : "Lubos Kolouch" - }, - { - "data" : [ - [ - "Raku", - 1 - ], - [ - "Blog", - 1 - ] - ], - "id" : "Luca Ferrari", - "name" : "Luca Ferrari" - }, { "data" : [ [ @@ -172,30 +34,6 @@ "id" : "Mark Anderson", "name" : "Mark Anderson" }, - { - "data" : [ - [ - "Perl", - 2 - ] - ], - "id" : "Matthew Neleigh", - "name" : "Matthew Neleigh" - }, - { - "data" : [ - [ - "Perl", - 1 - ], - [ - "Blog", - 1 - ] - ], - "id" : "Matthias Muth", - "name" : "Matthias Muth" - }, { "data" : [ [ @@ -215,18 +53,10 @@ [ "Perl", 2 - ], - [ - "Raku", - 2 - ], - [ - "Blog", - 1 ] ], - "id" : "Packy Anderson", - "name" : "Packy Anderson" + "id" : "Niels van Dijke", + "name" : "Niels van Dijke" }, { "data" : [ @@ -241,126 +71,6 @@ ], "id" : "Peter Campbell Smith", "name" : "Peter Campbell Smith" - }, - { - "data" : [ - [ - "Perl", - 2 - ] - ], - "id" : "Peter Meszaros", - "name" : "Peter Meszaros" - }, - { - "data" : [ - [ - "Perl", - 2 - ] - ], - "id" : "Robbie Hatley", - "name" : "Robbie Hatley" - }, - { - "data" : [ - [ - "Raku", - 2 - ] - ], - "id" : "Robert Ransbottom", - "name" : "Robert Ransbottom" - }, - { - "data" : [ - [ - "Perl", - 2 - ], - [ - "Blog", - 1 - ] - ], - "id" : "Roger Bell_West", - "name" : "Roger Bell_West" - }, - { - "data" : [ - [ - "Perl", - 2 - ], - [ - "Blog", - 1 - ] - ], - "id" : "Simon Green", - "name" : "Simon Green" - }, - { - "data" : [ - [ - "Perl", - 2 - ], - [ - "Blog", - 2 - ] - ], - "id" : "Thomas Kohler", - "name" : "Thomas Kohler" - }, - { - "data" : [ - [ - "Perl", - 2 - ], - [ - "Raku", - 1 - ] - ], - "id" : "Ulrich Rieke", - "name" : "Ulrich Rieke" - }, - { - "data" : [ - [ - "Perl", - 2 - ] - ], - "id" : "Vinod Kumar K", - "name" : "Vinod Kumar K" - }, - { - "data" : [ - [ - "Perl", - 2 - ], - [ - "Blog", - 1 - ] - ], - "id" : "W. Luis Mochan", - "name" : "W. Luis Mochan" - }, - { - "data" : [ - [ - "Perl", - 2 - ] - ], - "id" : "Wanderdoc", - "name" : "Wanderdoc" } ] }, @@ -380,36 +90,6 @@ { "colorByPoint" : 1, "data" : [ - { - "drilldown" : "Ali Moradi", - "name" : "Ali Moradi", - "y" : 3 - }, - { - "drilldown" : "Andreas Mahnke", - "name" : "Andreas Mahnke", - "y" : 2 - }, - { - "drilldown" : "Andrew Shitov", - "name" : "Andrew Shitov", - "y" : 1 - }, - { - "drilldown" : "Arne Sommer", - "name" : "Arne Sommer", - "y" : 3 - }, - { - "drilldown" : "Athanasius", - "name" : "Athanasius", - "y" : 4 - }, - { - "drilldown" : "Bob Lied", - "name" : "Bob Lied", - "y" : 2 - }, { "drilldown" : "David Ferrone", "name" : "David Ferrone", @@ -420,120 +100,35 @@ "name" : "E. Choroba", "y" : 2 }, - { - "drilldown" : "Jaldhar H. Vyas", - "name" : "Jaldhar H. Vyas", - "y" : 5 - }, - { - "drilldown" : "Jorg Sommrey", - "name" : "Jorg Sommrey", - "y" : 3 - }, - { - "drilldown" : "Kjetil Skotheim", - "name" : "Kjetil Skotheim", - "y" : 2 - }, - { - "drilldown" : "Lubos Kolouch", - "name" : "Lubos Kolouch", - "y" : 2 - }, - { - "drilldown" : "Luca Ferrari", - "name" : "Luca Ferrari", - "y" : 2 - }, { "drilldown" : "Mark Anderson", "name" : "Mark Anderson", "y" : 2 }, - { - "drilldown" : "Matthew Neleigh", - "name" : "Matthew Neleigh", - "y" : 2 - }, - { - "drilldown" : "Matthias Muth", - "name" : "Matthias Muth", - "y" : 2 - }, { "drilldown" : "Mohammad Sajid Anwar", "name" : "Mohammad Sajid Anwar", "y" : 2 }, { - "drilldown" : "Packy Anderson", - "name" : "Packy Anderson", - "y" : 5 + "drilldown" : "Niels van Dijke", + "name" : "Niels van Dijke", + "y" : 2 }, { "drilldown" : "Peter Campbell Smith", "name" : "Peter Campbell Smith", "y" : 3 - }, - { - "drilldown" : "Peter Meszaros", - "name" : "Peter Meszaros", - "y" : 2 - }, - { - "drilldown" : "Robbie Hatley", - "name" : "Robbie Hatley", - "y" : 2 - }, - { - "drilldown" : "Robert Ransbottom", - "name" : "Robert Ransbottom", - "y" : 2 - }, - { - "drilldown" : "Roger Bell_West", - "name" : "Roger Bell_West", - "y" : 3 - }, - { - "drilldown" : "Simon Green", - "name" : "Simon Green", - "y" : 3 - }, - { - "drilldown" : "Thomas Kohler", - "name" : "Thomas Kohler", - "y" : 4 - }, - { - "drilldown" : "Ulrich Rieke", - "name" : "Ulrich Rieke", - "y" : 3 - }, - { - "drilldown" : "Vinod Kumar K", - "name" : "Vinod Kumar K", - "y" : 2 - }, - { - "drilldown" : "W. Luis Mochan", - "name" : "W. Luis Mochan", - "y" : 3 - }, - { - "drilldown" : "Wanderdoc", - "name" : "Wanderdoc", - "y" : 2 } ], - "name" : "The Weekly Challenge - 346" + "name" : "The Weekly Challenge - 347" } ], "subtitle" : { - "text" : "[Champions: 29] Last updated at 2025-11-10 00:42:38 GMT" + "text" : "[Champions: 6] Last updated at 2025-11-10 19:06:00 GMT" }, "title" : { - "text" : "The Weekly Challenge - 346" + "text" : "The Weekly Challenge - 347" }, "tooltip" : { "followPointer" : 1, diff --git a/stats/pwc-language-breakdown-2019.json b/stats/pwc-language-breakdown-2019.json index 9ba78bcb9a..53f7d9d95f 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-10 00:42:38 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-11-10 19:06:00 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2020.json b/stats/pwc-language-breakdown-2020.json index be72a8bbe8..f6f4f511d7 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-10 00:42:38 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-11-10 19:06:00 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2021.json b/stats/pwc-language-breakdown-2021.json index c39084173c..fd550a1941 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-10 00:42:38 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-11-10 19:06:00 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2022.json b/stats/pwc-language-breakdown-2022.json index d806771bc3..501c0a2e61 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-10 00:42:38 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-11-10 19:06:00 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2023.json b/stats/pwc-language-breakdown-2023.json index 6bd10ce575..182475e237 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-10 00:42:38 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-11-10 19:06:00 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2024.json b/stats/pwc-language-breakdown-2024.json index 5923a9004c..313b87490b 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-11-10 00:42:38 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-11-10 19:06:00 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2025.json b/stats/pwc-language-breakdown-2025.json index 370bfc5f8b..30cfada1b5 100644 --- a/stats/pwc-language-breakdown-2025.json +++ b/stats/pwc-language-breakdown-2025.json @@ -8,7 +8,25 @@ "data" : [ [ "Perl", - 46 + 9 + ], + [ + "Raku", + 3 + ], + [ + "Blog", + 1 + ] + ], + "id" : "347", + "name" : "347" + }, + { + "data" : [ + [ + "Perl", + 48 ], [ "Raku", @@ -26,7 +44,7 @@ "data" : [ [ "Perl", - 47 + 49 ], [ "Raku", @@ -814,15 +832,20 @@ { "colorByPoint" : "true", "data" : [ + { + "drilldown" : "347", + "name" : "347", + "y" : 13 + }, { "drilldown" : "346", "name" : "346", - "y" : 75 + "y" : 77 }, { "drilldown" : "345", "name" : "345", - "y" : 84 + "y" : 86 }, { "drilldown" : "344", @@ -1039,7 +1062,7 @@ } ], "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-11-10 00:42:38 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-11-10 19:06:00 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 1582a99a0d..54a40c1a61 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -10,15 +10,15 @@ "data" : [ [ "Perl", - 17843 + 17856 ], [ "Raku", - 9882 + 9885 ], [ "Blog", - 6389 + 6390 ] ], "dataLabels" : { @@ -37,7 +37,7 @@ } ], "subtitle" : { - "text" : "Last updated at 2025-11-10 00:42:38 GMT" + "text" : "Last updated at 2025-11-10 19:06:00 GMT" }, "title" : { "text" : "The Weekly Challenge Contributions [2019 - 2025]" diff --git a/stats/pwc-leaders.json b/stats/pwc-leaders.json index b54e09498d..7bace99c4a 100644 --- a/stats/pwc-leaders.json +++ b/stats/pwc-leaders.json @@ -194,7 +194,7 @@ "data" : [ [ "Perl", - 681 + 683 ], [ "Blog", @@ -276,11 +276,11 @@ "data" : [ [ "Perl", - 418 + 420 ], [ "Blog", - 202 + 203 ] ], "id" : "Peter Campbell Smith", @@ -300,33 +300,33 @@ "data" : [ [ "Perl", - 294 + 21 + ], + [ + "Raku", + 557 ], [ "Blog", - 287 + 5 ] ], - "id" : "Thomas Kohler", - "name" : "Thomas Kohler" + "id" : "Mark Anderson", + "name" : "Mark Anderson" }, { "data" : [ [ "Perl", - 21 - ], - [ - "Raku", - 555 + 294 ], [ "Blog", - 5 + 287 ] ], - "id" : "Mark Anderson", - "name" : "Mark Anderson" + "id" : "Thomas Kohler", + "name" : "Thomas Kohler" }, { "data" : [ @@ -456,7 +456,7 @@ "data" : [ [ "Perl", - 428 + 434 ] ], "id" : "Niels van Dijke", @@ -480,11 +480,11 @@ "data" : [ [ "Perl", - 179 + 180 ], [ "Raku", - 112 + 113 ], [ "Blog", @@ -540,7 +540,7 @@ "data" : [ [ "Perl", - 330 + 332 ], [ "Raku", @@ -852,7 +852,7 @@ { "drilldown" : "E. Choroba", "name" : "12: E. Choroba", - "y" : 1476 + "y" : 1480 }, { "drilldown" : "Adam Russell", @@ -877,7 +877,7 @@ { "drilldown" : "Peter Campbell Smith", "name" : "17: Peter Campbell Smith", - "y" : 1240 + "y" : 1246 }, { "drilldown" : "Paulo Custodio", @@ -885,13 +885,13 @@ "y" : 1188 }, { - "drilldown" : "Thomas Kohler", - "name" : "19: Thomas Kohler", - "y" : 1162 + "drilldown" : "Mark Anderson", + "name" : "19: Mark Anderson", + "y" : 1166 }, { - "drilldown" : "Mark Anderson", - "name" : "20: Mark Anderson", + "drilldown" : "Thomas Kohler", + "name" : "20: Thomas Kohler", "y" : 1162 }, { @@ -937,7 +937,7 @@ { "drilldown" : "Niels van Dijke", "name" : "29: Niels van Dijke", - "y" : 856 + "y" : 868 }, { "drilldown" : "Duncan C. White", @@ -947,7 +947,7 @@ { "drilldown" : "Mohammad Sajid Anwar", "name" : "31: Mohammad Sajid Anwar", - "y" : 744 + "y" : 748 }, { "drilldown" : "Robert Ransbottom", @@ -967,7 +967,7 @@ { "drilldown" : "David Ferrone", "name" : "35: David Ferrone", - "y" : 704 + "y" : 708 }, { "drilldown" : "Bruce Gray", @@ -1049,7 +1049,7 @@ } ], "subtitle" : { - "text" : "Click the columns to drilldown the score breakdown. Last updated at 2025-11-10 00:42:38 GMT" + "text" : "Click the columns to drilldown the score breakdown. Last updated at 2025-11-10 19:06:00 GMT" }, "title" : { "text" : "Team Leaders (TOP 50)" diff --git a/stats/pwc-summary-1-30.json b/stats/pwc-summary-1-30.json index 10fb1e84dd..e10a69e72a 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-11-10 00:42:38 GMT" + "text" : "[Champions: 30] Last updated at 2025-11-10 19:06:00 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 7e1f15950a..8398b86fa3 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-11-10 00:42:38 GMT" + "text" : "[Champions: 30] Last updated at 2025-11-10 19:06:00 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 980224cfb0..053a5ee637 100644 --- a/stats/pwc-summary-151-180.json +++ b/stats/pwc-summary-151-180.json @@ -71,7 +71,7 @@ 0, 0, 0, - 555, + 557, 1, 49, 91 @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-11-10 00:42:38 GMT" + "text" : "[Champions: 30] Last updated at 2025-11-10 19:06:00 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 c3c3bea8dd..8f39975316 100644 --- a/stats/pwc-summary-181-210.json +++ b/stats/pwc-summary-181-210.json @@ -28,7 +28,7 @@ 0, 0, 1, -