diff options
| author | Mohammad Sajid Anwar <mohammad.anwar@yahoo.com> | 2025-09-29 01:16:27 +0100 |
|---|---|---|
| committer | Mohammad Sajid Anwar <mohammad.anwar@yahoo.com> | 2025-09-29 01:16:27 +0100 |
| commit | bfc6dbe6c870544c43809c1c8cc442d418d47e23 (patch) | |
| tree | 6a4606c75795615de5758cfaa1667cbe8f886822 | |
| parent | 0450e997cf82070cd3b0159290bc4bfc9e77d696 (diff) | |
| download | perlweeklychallenge-club-bfc6dbe6c870544c43809c1c8cc442d418d47e23.tar.gz perlweeklychallenge-club-bfc6dbe6c870544c43809c1c8cc442d418d47e23.tar.bz2 perlweeklychallenge-club-bfc6dbe6c870544c43809c1c8cc442d418d47e23.zip | |
- Added solutions by Packy Anderson.
32 files changed, 318 insertions, 46 deletions
diff --git a/challenge-340/packy-anderson/blog.txt b/challenge-340/packy-anderson/blog.txt new file mode 100644 index 0000000000..1c748f0baf --- /dev/null +++ b/challenge-340/packy-anderson/blog.txt @@ -0,0 +1 @@ +https://packy.dardan.com/2025/09/23/perl-weekly-challenge-rising-in-num/ diff --git a/challenge-340/packy-anderson/elixir/ch-1.exs b/challenge-340/packy-anderson/elixir/ch-1.exs new file mode 100644 index 0000000000..65013250fc --- /dev/null +++ b/challenge-340/packy-anderson/elixir/ch-1.exs @@ -0,0 +1,33 @@ +#!/usr/bin/env elixir + +defmodule PWC do + def duplicate_removal(str) do + match = Regex.run(~r/(\p{L})\1/, str, capture: :first) + if match do + String.replace(str, match, "", global: false) + |> duplicate_removal + else + str + end + end + + def solution(str) do + IO.puts("Input: $str = '#{str}'") + IO.puts("Output: '#{duplicate_removal(str)}'") + end +end + +IO.puts("Example 1:") +PWC.solution("abbaca") + +IO.puts("\nExample 2:") +PWC.solution("azxxzy") + +IO.puts("\nExample 3:") +PWC.solution("aaaaaaaa") + +IO.puts("\nExample 4:") +PWC.solution("aabccba") + +IO.puts("\nExample 5:") +PWC.solution("abcddcba") diff --git a/challenge-340/packy-anderson/elixir/ch-2.exs b/challenge-340/packy-anderson/elixir/ch-2.exs new file mode 100644 index 0000000000..73a47e15f8 --- /dev/null +++ b/challenge-340/packy-anderson/elixir/ch-2.exs @@ -0,0 +1,41 @@ +#!/usr/bin/env elixir + +defmodule PWC do + def ascending(list) when is_list(list) and length(list) == 1, + do: "true" + + def ascending([head | list]) do + if head < List.first(list) do + ascending(list) + else + "false" + end + end + + def ascending_num(str) do + Regex.scan(~r/\d+/, str, capture: :first) + |> List.flatten + |> Enum.map(fn n -> String.to_integer(n) end) + |> ascending + end + + def solution(str) do + IO.puts("Input: $str = '#{str}'") + IO.puts("Output: #{ascending_num(str)}") + end +end + +IO.puts("Example 1:") +PWC.solution("The cat has 3 kittens 7 toys 10 beds") + +IO.puts("\nExample 2:") +PWC.solution("Alice bought 5 apples 2 oranges 9 bananas") + +IO.puts("\nExample 3:") +PWC.solution("I ran 1 mile 2 days 3 weeks 4 months") + +IO.puts("\nExample 4:") +PWC.solution("Bob has 10 cars 10 bikes") + +IO.puts("\nExample 5:") +PWC.solution("Zero is 0 one is 1 two is 2") diff --git a/challenge-340/packy-anderson/perl/ch-1.pl b/challenge-340/packy-anderson/perl/ch-1.pl new file mode 100644 index 0000000000..80cb0b4f84 --- /dev/null +++ b/challenge-340/packy-anderson/perl/ch-1.pl @@ -0,0 +1,28 @@ +#!/usr/bin/env perl +use v5.40; + +sub duplicateRemoval($str) { + return $str + unless $str =~ s/([a-z])\g1//; + duplicateRemoval($str); +} + +sub solution($str) { + say "Input: \$str = '$str'"; + say "Output: '@{[duplicateRemoval($str)]}'"; +} + +say "Example 1:"; +solution("abbaca"); + +say "\nExample 2:"; +solution("azxxzy"); + +say "\nExample 3:"; +solution("aaaaaaaa"); + +say "\nExample 4:"; +solution("aabccba"); + +say "\nExample 5:"; +solution("abcddcba"); diff --git a/challenge-340/packy-anderson/perl/ch-2.pl b/challenge-340/packy-anderson/perl/ch-2.pl new file mode 100644 index 0000000000..0dc1b498f1 --- /dev/null +++ b/challenge-340/packy-anderson/perl/ch-2.pl @@ -0,0 +1,31 @@ +#!/usr/bin/env perl +use v5.40; + +sub ascendingNum($str) { + my @list = $str =~ /(\d+)/g; + while (@list > 1) { + return 'false' if $list[0] >= $list[1]; + shift @list; + } + return 'true'; +} + +sub solution($str) { + say "Input: \$str = '$str'"; + say "Output: @{[ascendingNum($str)]}"; +} + +say "Example 1:"; +solution("The cat has 3 kittens 7 toys 10 beds"); + +say "\nExample 2:"; +solution("Alice bought 5 apples 2 oranges 9 bananas"); + +say "\nExample 3:"; +solution("I ran 1 mile 2 days 3 weeks 4 months"); + +say "\nExample 4:"; +solution("Bob has 10 cars 10 bikes"); + +say "\nExample 5:"; +solution("Zero is 0 one is 1 two is 2"); diff --git a/challenge-340/packy-anderson/python/ch-1.py b/challenge-340/packy-anderson/python/ch-1.py new file mode 100644 index 0000000000..4b0733e391 --- /dev/null +++ b/challenge-340/packy-anderson/python/ch-1.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python + +import re + +def duplicate_removal(strval): + m = re.search(r'([a-z])\1', strval) + if not m: return strval + return duplicate_removal( + strval.replace(m.group(0), '', count=1) + ) + +def solution(strval): + print(f"Input: $str = '{strval}'") + print(f"Output: '{duplicate_removal(strval)}'") + +print('Example 1:') +solution("abbaca") + +print('\nExample 2:') +solution("azxxzy") + +print('\nExample 3:') +solution("aaaaaaaa") + +print('\nExample 4:') +solution("aabccba") + +print('\nExample 5:') +solution("abcddcba") diff --git a/challenge-340/packy-anderson/python/ch-2.py b/challenge-340/packy-anderson/python/ch-2.py new file mode 100644 index 0000000000..55b4f2b288 --- /dev/null +++ b/challenge-340/packy-anderson/python/ch-2.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python + +def ascending_num(strval): + list = [ int(n) for n in strval.split() if n.isnumeric() ] + while len(list) > 1: + if list[0] >= list[1]: return False + list.pop(0) + return True + +def solution(strval): + print(f"Input: $str = '{strval}'") + print(f"Output: {ascending_num(strval)}") + +print('Example 1:') +solution("The cat has 3 kittens 7 toys 10 beds") + +print('\nExample 2:') +solution("Alice bought 5 apples 2 oranges 9 bananas") + +print('\nExample 3:') +solution("I ran 1 mile 2 days 3 weeks 4 months") + +print('\nExample 4:') +solution("Bob has 10 cars 10 bikes") + +print('\nExample 5:') +solution("Zero is 0 one is 1 two is 2") diff --git a/challenge-340/packy-anderson/raku/ch-1.raku b/challenge-340/packy-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..9bd7914c33 --- /dev/null +++ b/challenge-340/packy-anderson/raku/ch-1.raku @@ -0,0 +1,28 @@ +#!/usr/bin/env raku +use v6; + +sub duplicateRemoval($str is copy) { + return $str + unless $str ~~ s/(<lower>) {} $0//; + duplicateRemoval($str); +} + +sub solution($str) { + say "Input: \$str = '$str'"; + say "Output: '{duplicateRemoval($str)}'"; +} + +say "Example 1:"; +solution("abbaca"); + +say "\nExample 2:"; +solution("azxxzy"); + +say "\nExample 3:"; +solution("aaaaaaaa"); + +say "\nExample 4:"; +solution("aabccba"); + +say "\nExample 5:"; +solution("abcddcba"); diff --git a/challenge-340/packy-anderson/raku/ch-2.raku b/challenge-340/packy-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..935d273a0b --- /dev/null +++ b/challenge-340/packy-anderson/raku/ch-2.raku @@ -0,0 +1,31 @@ +#!/usr/bin/env raku +use v6; + +sub ascendingNum($str) { + my @list = $str.comb(/\d+/); + while (@list.elems > 1) { + return False if @list[0] >= @list[1]; + @list.shift; + } + return True; +} + +sub solution($str) { + say "Input: \$str = '$str'"; + say "Output: {ascendingNum($str)}"; +} + +say "Example 1:"; +solution("The cat has 3 kittens 7 toys 10 beds"); + +say "\nExample 2:"; +solution("Alice bought 5 apples 2 oranges 9 bananas"); + +say "\nExample 3:"; +solution("I ran 1 mile 2 days 3 weeks 4 months"); + +say "\nExample 4:"; +solution("Bob has 10 cars 10 bikes"); + +say "\nExample 5:"; +solution("Zero is 0 one is 1 two is 2"); diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 22b02f7536..91f702353d 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -203,6 +203,24 @@ 2 ], [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Packy Anderson", + "name" : "Packy Anderson" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ "Blog", 1 ] @@ -457,6 +475,11 @@ "y" : 2 }, { + "drilldown" : "Packy Anderson", + "name" : "Packy Anderson", + "y" : 5 + }, + { "drilldown" : "Peter Campbell Smith", "name" : "Peter Campbell Smith", "y" : 3 @@ -521,7 +544,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-09-28 23:24:58 GMT" + "text" : "[Champions: 31] Last updated at 2025-09-29 00:15:48 GMT" }, "title" : { "text" : "The Weekly Challenge - 340" diff --git a/stats/pwc-language-breakdown-2019.json b/stats/pwc-language-breakdown-2019.json index 057c3bf6a6..8f68ee6467 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-09-28 23:24:58 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-09-29 00:15:48 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2020.json b/stats/pwc-language-breakdown-2020.json index a464c84aef..d25f89175f 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-09-28 23:24:58 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-09-29 00:15:48 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2021.json b/stats/pwc-language-breakdown-2021.json index 5cddf5bba0..71d62b1cc0 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-09-28 23:24:58 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-09-29 00:15:48 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2022.json b/stats/pwc-language-breakdown-2022.json index 4f71de043e..7f387b3455 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-09-28 23:24:58 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-09-29 00:15:48 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2023.json b/stats/pwc-language-breakdown-2023.json index 98fa25596f..3ea4d1b802 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-09-28 23:24:58 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-09-29 00:15:48 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2024.json b/stats/pwc-language-breakdown-2024.json index fb4a995ba2..22aa5c7710 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-09-28 23:24:58 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-09-29 00:15:48 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-2025.json b/stats/pwc-language-breakdown-2025.json index 97efe5496d..8d6b876bfd 100644 --- a/stats/pwc-language-breakdown-2025.json +++ b/stats/pwc-language-breakdown-2025.json @@ -8,15 +8,15 @@ "data" : [ [ "Perl", - 43 + 45 ], [ "Raku", - 21 + 23 ], [ "Blog", - 9 + 10 ] ], "id" : "340", @@ -709,7 +709,7 @@ { "drilldown" : "340", "name" : "340", - "y" : 73 + "y" : 78 }, { "drilldown" : "339", @@ -901,7 +901,7 @@ } ], "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-09-28 23:24:58 GMT" + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2025-09-29 00:15:48 GMT" }, "title" : { "text" : "The Weekly Challenge Language" diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index d1cc22c330..3d52eda18d 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -10,15 +10,15 @@ "data" : [ [ "Perl", - 17527 + 17529 ], [ "Raku", - 9739 + 9741 ], [ "Blog", - 6281 + 6282 ] ], "dataLabels" : { @@ -37,7 +37,7 @@ } ], "subtitle" : { - "text" : "Last updated at 2025-09-28 23:24:58 GMT" + "text" : "Last updated at 2025-09-29 00:15:48 GMT" }, "title" : { "text" : "The Weekly Challenge Contributions [2019 - 2025]" diff --git a/stats/pwc-leaders.json b/stats/pwc-leaders.json index 25f0c79a48..687f3c9b50 100644 --- a/stats/pwc-leaders.json +++ b/stats/pwc-leaders.json @@ -374,15 +374,15 @@ "data" : [ [ "Perl", - 182 + 184 ], [ "Raku", - 182 + 184 ], [ "Blog", - 92 + 93 ] ], "id" : "Packy Anderson", @@ -912,7 +912,7 @@ { "drilldown" : "Packy Anderson", "name" : "24: Packy Anderson", - "y" : 912 + "y" : 922 }, { "drilldown" : "Cheok-Yin Fung", @@ -1049,7 +1049,7 @@ } ], "subtitle" : { - "text" : "Click the columns to drilldown the score breakdown. Last updated at 2025-09-28 23:24:58 GMT" + "text" : "Click the columns to drilldown the score breakdown. Last updated at 2025-09-29 00:15:48 GMT" }, "title" : { "text" : "Team Leaders (TOP 50)" diff --git a/stats/pwc-summary-1-30.json b/stats/pwc-summary-1-30.json index e157f17e61..7489b37b06 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-09-28 23:24:58 GMT" + "text" : "[Champions: 30] Last updated at 2025-09-29 00:15:48 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 4a949de6f5..832b459ea8 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-09-28 23:24:58 GMT" + "text" : "[Champions: 30] Last updated at 2025-09-29 00:15:48 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 12fd20f71e..6cdf4add7a 100644 --- a/stats/pwc-summary-151-180.json +++ b/stats/pwc-summary-151-180.json @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-09-28 23:24:58 GMT" + "text" : "[Champions: 30] Last updated at 2025-09-29 00:15:48 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 4728f2e286..8c4a9686cb 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-09-28 23:24:58 GMT" + "text" : "[Champions: 30] Last updated at 2025-09-29 00:15:48 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 49517a5305..6b4ada8e2d 100644 --- a/stats/pwc-summary-211-240.json +++ b/stats/pwc-summary-211-240.json @@ -17,7 +17,7 @@ 0, 0, 8, - 182, + 184, 18, 594, 3, @@ -52,7 +52,7 @@ 0, 28, 0, - 182, + 184, 0, 0, 0, @@ -87,7 +87,7 @@ 0, 0, 0, - 92, + 93, 0, 0, 1, @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-09-28 23:24:58 GMT" + "text" : "[Champions: 30] Last updated at 2025-09-29 00:15:48 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 3b268c03b1..60f9f51363 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-09-28 23:24:58 GMT" + "text" : "[Champions: 30] Last updated at 2025-09-29 00:15:48 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 c564952cde..e22fe4256c 100644 --- a/stats/pwc-summary-271-300.json +++ b/stats/pwc-summary-271-300.json @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-09-28 23:24:58 GMT" + "text" : "[Champions: 30] Last updated at 2025-09-29 00:15:48 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 6504d64fca..e19e39001a 100644 --- a/stats/pwc-summary-301-330.json +++ b/stats/pwc-summary-301-330.json @@ -109,7 +109,7 @@ } ], "subtitle" : { - "text" : "[Champions: 28] Last updated at 2025-09-28 23:24:58 GMT" + "text" : "[Champions: 28] Last updated at 2025-09-29 00:15:48 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 270907bafc..9bb4ff5f0f 100644 --- a/stats/pwc-summary-31-60.json +++ b/stats/pwc-summary-31-60.json @@ -69,8 +69,8 @@ 9, 0, 0, - 17, 2, + 17, 0, 194, 0, @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-09-28 23:24:58 GMT" + "text" : "[Champions: 30] Last updated at 2025-09-29 00:15:48 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 fbc40d3b63..e579b0023c 100644 --- a/stats/pwc-summary-61-90.json +++ b/stats/pwc-summary-61-90.json @@ -115,7 +115,7 @@ } ], "subtitle" : { - "text" : "[Champions: 30] Last updated at 2025-09-28 23:24:58 GMT" + "text" : "[Champions: 30] Last updated at 2025-09-29 00:15:48 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 34e9ef6234..d93c4b6876 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-09-28 23:24:58 GMT" + "text" : "[Champions: 30] Last updated at 2025-09-29 00:15:48 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-summary.json b/stats/pwc-summary.json index 22aec5bcf6..c232644a30 100644 --- a/stats/pwc-summary.json +++ b/stats/pwc-summary.json @@ -227,7 +227,7 @@ 0, 0, 5, - 92, + 93, 9, 297, 2, @@ -397,8 +397,8 @@ 6, 0, 0, - 1, 9, + 1, 0, 104, 0, @@ -560,7 +560,7 @@ 0, 20, 0, - 92, + 93, 0, 0, 0, @@ -893,7 +893,7 @@ 0, 0, 0, - 92, + 93, 0, 0, 1, @@ -1009,7 +1009,7 @@ } ], "subtitle" : { - "text" : "[Champions: 328] Last updated at 2025-09-28 23:24:58 GMT" + "text" : "[Champions: 328] Last updated at 2025-09-29 00:15:48 GMT" }, "title" : { "text" : "The Weekly Challenge [2019 - 2025]" diff --git a/stats/pwc-yearly-language-summary.json b/stats/pwc-yearly-l |
