From 1ce1e129f55753ee1392704f7c219c40cbee1eb8 Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Sat, 25 May 2024 17:34:42 +0100 Subject: - Added blog post by Dave Jacoby. - Added solutions by Jorg Sommrey. - Added solutions by Athanasius. - Added solutions by Laurent Rosenfeld. - Added solutions by Reinier Maliepaard. --- challenge-270/laurent-rosenfeld/blog.txt | 1 + challenge-270/laurent-rosenfeld/perl/ch-1.pl | 43 + challenge-270/laurent-rosenfeld/raku/ch-1.raku | 32 + challenge-270/reinier-maliepaard/blog.txt | 1 + challenge-270/reinier-maliepaard/blog1.txt | 1 + challenge-270/reinier-maliepaard/perl/ch-1.pl | 106 ++ challenge-270/reinier-maliepaard/perl/ch-2.pl | 196 +++ stats/pwc-current.json | 218 ++- stats/pwc-language-breakdown-summary.json | 64 +- stats/pwc-language-breakdown.json | 1900 ++++++++++++------------ stats/pwc-leaders.json | 420 +++--- stats/pwc-summary-1-30.json | 118 +- stats/pwc-summary-121-150.json | 56 +- stats/pwc-summary-151-180.json | 110 +- stats/pwc-summary-181-210.json | 104 +- stats/pwc-summary-211-240.json | 86 +- stats/pwc-summary-241-270.json | 32 +- stats/pwc-summary-271-300.json | 120 +- stats/pwc-summary-301-330.json | 28 +- stats/pwc-summary-31-60.json | 90 +- stats/pwc-summary-61-90.json | 40 +- stats/pwc-summary-91-120.json | 48 +- stats/pwc-summary.json | 70 +- 23 files changed, 2174 insertions(+), 1710 deletions(-) create mode 100644 challenge-270/laurent-rosenfeld/blog.txt create mode 100644 challenge-270/laurent-rosenfeld/perl/ch-1.pl create mode 100644 challenge-270/laurent-rosenfeld/raku/ch-1.raku create mode 100644 challenge-270/reinier-maliepaard/blog.txt create mode 100644 challenge-270/reinier-maliepaard/blog1.txt create mode 100644 challenge-270/reinier-maliepaard/perl/ch-1.pl create mode 100644 challenge-270/reinier-maliepaard/perl/ch-2.pl diff --git a/challenge-270/laurent-rosenfeld/blog.txt b/challenge-270/laurent-rosenfeld/blog.txt new file mode 100644 index 0000000000..d25dfcd448 --- /dev/null +++ b/challenge-270/laurent-rosenfeld/blog.txt @@ -0,0 +1 @@ +https://blogs.perl.org/users/laurent_r/2024/05/-perl-weekly-challenge-270-special-positions.html diff --git a/challenge-270/laurent-rosenfeld/perl/ch-1.pl b/challenge-270/laurent-rosenfeld/perl/ch-1.pl new file mode 100644 index 0000000000..c057b612d9 --- /dev/null +++ b/challenge-270/laurent-rosenfeld/perl/ch-1.pl @@ -0,0 +1,43 @@ +use strict; +use warnings; +use feature 'say'; + +sub special_positions { + my $mat = shift; + my $row_max = $#{$mat->[0]}; + my $col_max = $#{$mat}; + my $count = 0; + for my $i (0..$row_max) { + IND_J: for my $j (0..$col_max) { + next if $mat->[$i][$j] != 1; + # check row + for my $m (0..$row_max) { + next if $m == $i; + next IND_J unless $mat->[$m][$j] == 0; + } + # check column + for my $k (0..$col_max) { + next if $k == $j; + next IND_J unless $mat->[$i][$k] == 0; + } + # say "$i, $j"; # uncomment to see the positions + $count++; + } + } + return $count; +} + +my @tests = ( + [ [1, 0, 0], + [0, 0, 1], + [1, 0, 0], + ], + [ [1, 0, 0], + [0, 1, 0], + [0, 0, 1], + ] + ); +for my $test (@tests) { + printf "[%-8s %-8s ...] => ", "@{$test->[0]}", "@{$test->[1]}"; + say special_positions $test; +} diff --git a/challenge-270/laurent-rosenfeld/raku/ch-1.raku b/challenge-270/laurent-rosenfeld/raku/ch-1.raku new file mode 100644 index 0000000000..20f6a766a0 --- /dev/null +++ b/challenge-270/laurent-rosenfeld/raku/ch-1.raku @@ -0,0 +1,32 @@ +sub special-positions (@mat) { + my $row-max = @mat[0].end; + my $count = 0; + IND_I: for 0..$row-max -> $i { + for 0..@mat.end -> $j { ` + next if @mat[$i][$j] != 1; + next unless + (@mat[$i][0..^$j, $j^..$row-max]).any != 0; + for 0..@mat.end -> $k { + next if $k == $i; + next IND_I unless @mat[$i][$k] == 0; + } + # say "$i, $j"; # uncomment to see the positions + $count++; + } + } + return $count; +} + +my @tests = + [ [1, 0, 0], + [0, 0, 1], + [1, 0, 0], + ], + [ [1, 0, 0], + [0, 1, 0], + [0, 0, 1], + ]; +for @tests -> @test { + printf "%-8s %-8s ... => ", "@test[0]", "@test[1]"; + say special-positions @test; +} diff --git a/challenge-270/reinier-maliepaard/blog.txt b/challenge-270/reinier-maliepaard/blog.txt new file mode 100644 index 0000000000..52cfaba42e --- /dev/null +++ b/challenge-270/reinier-maliepaard/blog.txt @@ -0,0 +1 @@ +https://reiniermaliepaard.nl/perl/pwc/index.php?id=pwc270 diff --git a/challenge-270/reinier-maliepaard/blog1.txt b/challenge-270/reinier-maliepaard/blog1.txt new file mode 100644 index 0000000000..e7b997a081 --- /dev/null +++ b/challenge-270/reinier-maliepaard/blog1.txt @@ -0,0 +1 @@ +https://reiniermaliepaard.nl/perl/pwc/index.php?id=pwc270-2 diff --git a/challenge-270/reinier-maliepaard/perl/ch-1.pl b/challenge-270/reinier-maliepaard/perl/ch-1.pl new file mode 100644 index 0000000000..de03267ecf --- /dev/null +++ b/challenge-270/reinier-maliepaard/perl/ch-1.pl @@ -0,0 +1,106 @@ +#!/usr/bin/perl +use strict; +use warnings; +use Math::Matrix; + +# the function 'sum_rows_and_columns' is invoked in the function 'find_special_positions' below +sub sum_rows_and_columns { + + # A special positions matrix highlights positions that meet + # the specific criterium, having a unique '1' in its row and column. + # So, it simply means adding the values of the relevant rows and columns and evaluating them + + my ($r, $c, $x) = @_; + my $count_special_positions = 0; + + # nrow(), ncol(), getrow() and getcol() are self-explanatory methods of the module Math::Matrix + + my $sum_rows = 0; + for my $ii (0 .. $x -> ncol() - 1) { + $sum_rows += ($x -> getrow($r))->[0]->[$ii]; + } + + my $sum_cols = 0; + for my $ii (0 .. $x -> nrow() - 1) { + $sum_cols += ($x -> getcol($c))->[$ii]->[0]; + } + + # evaluate the calculated sum of row and column + if ( ($sum_rows == 1) && ($sum_cols == 1) ) { + $count_special_positions++; + } + + return $count_special_positions; +} + +sub find_special_positions { + + my ($x) = @_; + # a boolean matrix is a matrix whose entries are either 0 or 1 + if ( $x -> is_bool() ) { + + # find() returns the location of each non-zero element in terms of $i and $j. + # e.g. (0, 0), (1, 2) and (2, 0) are the coordinates of value 1 in Example 1 below + # they can be created by processing @$i and @$j: see arguments function + my($i, $j) = $x -> find(); + + my $sum_total = 0; + + for my $z (0 .. scalar(@$i) - 1) { + # invoke the function 'sum_rows_and_columns' for each '1' + $sum_total += sum_rows_and_columns($i->[$z], $j->[$z], $x); + } + + print("Number of special positions: ", $sum_total, "\n"); + } + else { + print("Error: no valid matrix!\n"); + } +} + +# TESTS + +my $x; + +# Example 1: 3 x 3 matrix +$x = Math::Matrix -> new([1, 0, 0], + [0, 0, 1], + [1, 0, 0]); + +find_special_positions($x); # Output: 1 + +# Example 2: 3 x 3 matrix +$x = Math::Matrix -> new([1, 0, 0], + [0, 1, 0], + [0, 0, 1]); + +find_special_positions($x); # Output: 3 + +# Example 3: 3 x 3 matrix +$x = Math::Matrix -> new([1, 0, 0], + [0, 0, 1], + [1, 0, 1]); + +find_special_positions($x); # Output: 0 + +# Example 4: permutation matrix, 3 x 3 matrix +$x = Math::Matrix -> new([0, 1, 0], + [1, 0, 0], + [0, 0, 1]); + +find_special_positions($x); # Output: 3 + +# Example 5: 3 x 4 matrix +$x = Math::Matrix -> new([0, 1, 0, 0], + [0, 0, 0, 1], + [0, 0, 1, 0]); + +find_special_positions($x); # Output: 3 + +# Example 6: 4 x 3 matrix +$x = Math::Matrix -> new([0, 1, 0], + [0, 0, 0], + [0, 0, 1], + [0, 0, 1]); + +find_special_positions($x); # Output: 1 diff --git a/challenge-270/reinier-maliepaard/perl/ch-2.pl b/challenge-270/reinier-maliepaard/perl/ch-2.pl new file mode 100644 index 0000000000..d57ca11648 --- /dev/null +++ b/challenge-270/reinier-maliepaard/perl/ch-2.pl @@ -0,0 +1,196 @@ +#!/usr/bin/perl +use strict; +use warnings; + +=begin + +It was fun to think about a solution for TASK #2: Equalize array. +The result seems unconventional. I tested it with 10 cases (see below) and +used the solution from Packy Anderson to validate my results, +encountering no issues. However, I don't provide a solid mathematical proof. + +My solution is programmatically very straightforward! It demonstrates +Perl's excellent capability to interchange arrays, strings and numbers. +Now, let me explain my strategy. + +Case 1: array with two elements +Equalizing the array (1 4) to (4 4) involves the following steps +(notice that not the maximum value -as in Mohammads examples- but 0 is +my target. So not adding but subtracting. It appears to have advantages: +see below): + +Array: (1 4); +Reverse sorted: (4 1) +Maximum value: 4 +New array (except the maximum value) containing differences between the +maximum value and the original values of the array elements: (3). + +Operations with the number 1 as subtrahend: + +3 - 1 = 2 (1 × Level 1) +2 - 1 = 1 (1 × Level 1) +1 - 1 = 0, i.e. target 0 found (1 × Level 1) + +So there are 3 Level 1 operations needed to equalize the array, i.e. the +number of Level 1 operations equals the value of the array element. To +determine the total cost, we need to multiply by the cost variables $x: +(1 Level 1 operation * $x). + +Case 2a: array with more than two elements +Let's consider an array with more than two elements, for example, the +array (1 3 2). Here are the steps I follow: + +Array: (1 3 2); +Reverse sorted: (3 2 1) +Maximum value: 3 +New array (except the maximum value) containing differences between the +maximum value and the original values of the array elements: (1 2). + +This array can be transformed into the number 12. We can simulate Level 2 +operations by using the number 11 as subtrahend. My assumption here is +that normal subtraction is the most efficient method to find the lowest +cost solution, but I could be completely wrong. Again, I must leave you +without a solid mathematical proof. + +Operations: + +12 - 11 = 1 (1 × Level 2) +1 - 1 = 0 i.e. target 0 found (1 × Level 1) + +To determine the total cost, we need to multiply by the cost variables +$x and $y: (1 Level 2 operation * $y) + (1 Level 1 operation * $x). + +Case 2b: array with more than two elements +Here's another example to show how to handle the number 0, which indicates +that the difference to the maximum value has been reached. + +Array: (2 3 3 3 5); +Reverse sorted: (5 3 3 3 2) +Maximum value: 5 +New array (except the maximum value) containing differences between the +maximum value and the original values of the array elements: (2 2 2 3). +Conversion: number to work with is 2223 + +Operations: + +2223 - 11 = 2212 (1 x Level 2) +2212 - 11 = 2201 (1 x Level 2) +Now we remove the value 0 (target 0 found) -> 221 +221 - 11 = 210 (1 x Level 2) +Now we remove the value 0 -> 21 +21 - 11 = 10 (1 x Level 2) +Now we remove the value 0 -> 1 +1 < 11 so 1 refers to 1 Level 1 operation. +So 4 Level 2 operations and 1 Level 1 operation. + +To determine the total cost, we need to multiply by the cost variables +$x and $y: (4 Level 2 operation * $y) + (1 Level 1 operation * $x). +=cut + +sub equalize_array { + + # $x and $y are cost variables + my ($arr_orig_ref, $x, $y) = @_; + + my @arr_orig = @$arr_orig_ref; + + # sort array in descending order + my @arr_orig_sorted = (sort {$b <=> $a} @arr_orig); + + # now the first element has the maximum value + my $max = $arr_orig_sorted[0]; + + # remove the first value, i.e. the maximum value + shift(@arr_orig_sorted); + + # create a new array where each element is the result of + subtracting the original value from the maximum value in @arr_orig + my @new_arr = map { $max - $_ } @arr_orig_sorted; + + # $L1 refers to Level 1 and $L2 to Level 2 + # Example: there were two Level 2 operations if $L2 equals 2 etc. + my $L1 = 0; + my $L2 = 0; + + # the simplest case where the number of Level 1 operations equals the value of the array element + # see Example 1 below: it takes 4 minus 1 Level 1 operations to equalize the array. + if (scalar(@new_arr) == 1) { + + $L1 = $new_arr[0]; + return ($L1 * $x); + } + + # using the number trick + if (scalar(@new_arr) > 1) { + + # create a number from @new_arr + my $no = join ("", @new_arr); + + # number 11 as subtrahend, simulating a Level 2 operation + while ($no >= 11) { + $no -= 11; + $L2++; + # remove 0 from $no; 0 means 'target found' + $no =~ s/0//g if( index ($no, '0') ); + } + + $L1 = $no if ($no != 0); + + ($L1 != 0) ? (return ( ($L1 * $x) + ($L2 * $y) )) : (return ($L2 * $y)); + } +} + +# TESTS + +my (@arr, $x, $y); + +@arr = qw(4 1); +$x = 3; +$y = 2; +print("Total cost : ", equalize_array(\@arr, $x, $y), "\n"); # Output: 9 + +@arr = qw(2 3 3 3 5); +$x = 2; +$y = 1; +print("Total cost : ", equalize_array(\@arr, $x, $y), "\n"); # Output: 6 + +@arr = qw(4 2 1); +$x = 2; +$y = 1; +print("Total cost : ", equalize_array(\@arr, $x, $y), "\n"); # Output: 4 + +@arr = qw(5 4 3 2 1); +$x = 2; +$y = 1; +print("Total cost : ", equalize_array(\@arr, $x, $y), "\n"); # Output: 5 + +@arr = qw(22 1); +$x = 2; +$y = 1; +print("Total cost : ", equalize_array(\@arr, $x, $y), "\n"); # Output: 42 + +@arr = qw(4 2 2 1); +$x = 2; +$y = 1; +print("Total cost : ", equalize_array(\@arr, $x, $y), "\n"); # Output: 5 + +@arr = qw(3 2 1); +$x = 2; +$y = 1; +print("Total cost : ", equalize_array(\@arr, $x, $y), "\n"); # Output: 3 + +@arr = qw(5 3 1); +$x = 2; +$y = 1; +print("Total cost : ", equalize_array(\@arr, $x, $y), "\n"); # Output: 6 + +@arr = qw(3 2 2 1); +$x = 2; +$y = 1; +print("Total cost : ", equalize_array(\@arr, $x, $y), "\n"); # Output: 2 + +# Niels van Dijke test case +@arr = qw(3 3 4 4); +$x = 1; +$y = 2; +print("Total cost : ", equalize_array(\@arr, $x, $y), "\n"); # Output: 2 diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 378a6e54ca..23447669f0 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,47 +1,93 @@ { - "chart" : { - "type" : "column" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } + "tooltip" : { + "pointFormat" : "{point.name}: {point.y:f}
", + "headerFormat" : "{series.name}
", + "followPointer" : 1 }, "drilldown" : { "series" : [ { - "id" : "Dave Jacoby", + "name" : "Athanasius", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ] + ], + "id" : "Athanasius" + }, + { "name" : "Dave Jacoby", + "id" : "Dave Jacoby", "data" : [ [ "Perl", 2 + ], + [ + "Blog", + 1 ] ] }, { + "name" : "David Ferrone", "data" : [ [ "Perl", 1 ] ], - "name" : "David Ferrone", "id" : "David Ferrone" }, { "data" : [ [ "Perl", + 2 + ], + [ + "Blog", 1 ] ], + "id" : "Jorg Sommrey", + "name" : "Jorg Sommrey" + }, + { + "name" : "Lance Wicks", "id" : "Lance Wicks", - "name" : "Lance Wicks" + "data" : [ + [ + "Perl", + 1 + ] + ] + }, + { + "data" : [ + [ + "Perl", + 1 + ], + [ + "Raku", + 1 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld" }, { "name" : "Luca Ferrari", - "id" : "Luca Ferrari", "data" : [ [ "Raku", @@ -51,31 +97,30 @@ "Blog", 9 ] - ] + ], + "id" : "Luca Ferrari" }, { - "id" : "Mark Anderson", - "name" : "Mark Anderson", "data" : [ [ "Raku", 1 ] - ] + ], + "id" : "Mark Anderson", + "name" : "Mark Anderson" }, { + "id" : "Niels van Dijke", "data" : [ [ "Perl", 2 ] ], - "name" : "Niels van Dijke", - "id" : "Niels van Dijke" + "name" : "Niels van Dijke" }, { - "name" : "Peter Campbell Smith", - "id" : "Peter Campbell Smith", "data" : [ [ "Perl", @@ -85,11 +130,13 @@ "Blog", 1 ] - ] + ], + "id" : "Peter Campbell Smith", + "name" : "Peter Campbell Smith" }, { - "id" : "Peter Meszaros", "name" : "Peter Meszaros", + "id" : "Peter Meszaros", "data" : [ [ "Perl", @@ -98,22 +145,34 @@ ] }, { + "name" : "Reinier Maliepaard", "data" : [ [ "Perl", 2 ], [ - "Raku", + "Blog", 2 ] ], + "id" : "Reinier Maliepaard" + }, + { "name" : "Roger Bell_West", - "id" : "Roger Bell_West" + "id" : "Roger Bell_West", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ] + ] }, { - "id" : "Thomas Kohler", - "name" : "Thomas Kohler", "data" : [ [ "Perl", @@ -123,11 +182,11 @@ "Blog", 2 ] - ] + ], + "id" : "Thomas Kohler", + "name" : "Thomas Kohler" }, { - "id" : "Ulrich Rieke", - "name" : "Ulrich Rieke", "data" : [ [ "Perl", @@ -137,11 +196,11 @@ "Raku", 2 ] - ] + ], + "id" : "Ulrich Rieke", + "name" : "Ulrich Rieke" }, { - "name" : "W. Luis Mochan", - "id" : "W. Luis Mochan", "data" : [ [ "Perl", @@ -151,54 +210,51 @@ "Blog", 1 ] - ] + ], + "id" : "W. Luis Mochan", + "name" : "W. Luis Mochan" } ] }, - "title" : { - "text" : "The Weekly Challenge - 270" - }, "legend" : { "enabled" : 0 }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } - }, "subtitle" : { - "text" : "[Champions: 12] Last updated at 2024-05-24 11:50:57 GMT" - }, - "xAxis" : { - "type" : "category" - }, - "tooltip" : { - "followPointer" : 1, - "pointFormat" : "{point.name}: {point.y:f}
", - "headerFormat" : "{series.name}
" + "text" : "[Champions: 16] Last updated at 2024-05-25 16:30:37 GMT" }, "series" : [ { "name" : "The Weekly Challenge - 270", "data" : [ { - "y" : 2, + "drilldown" : "Athanasius", + "y" : 4, + "name" : "Athanasius" + }, + { "name" : "Dave Jacoby", + "y" : 3, "drilldown" : "Dave Jacoby" }, { - "y" : 1, "name" : "David Ferrone", + "y" : 1, "drilldown" : "David Ferrone" }, { - "y" : 1, + "drilldown" : "Jorg Sommrey", + "y" : 3, + "name" : "Jorg Sommrey" + }, + { "name" : "Lance Wicks", - "drilldown" : "Lance Wicks" + "drilldown" : "Lance Wicks", + "y" : 1 + }, + { + "name" : "Laurent Rosenfeld", + "drilldown" : "Laurent Rosenfeld", + "y" : 3 }, { "drilldown" : "Luca Ferrari", @@ -221,32 +277,60 @@ "name" : "Peter Campbell Smith" }, { - "drilldown" : "Peter Meszaros", "name" : "Peter Meszaros", + "drilldown" : "Peter Meszaros", "y" : 2 }, { - "name" : "Roger Bell_West", + "drilldown" : "Reinier Maliepaard", "y" : 4, - "drilldown" : "Roger Bell_West" + "name" : "Reinier Maliepaard" }, { - "drilldown" : "Thomas Kohler", - "name" : "Thomas Kohler", - "y" : 4 + "y" : 4, + "drilldown" : "Roger Bell_West", + "name" : "Roger Bell_West" }, { + "drilldown" : "Thomas Kohler", "y" : 4, + "name" : "Thomas Kohler" + }, + { "name" : "Ulrich Rieke", - "drilldown" : "Ulrich Rieke" + "drilldown" : "Ulrich Rieke", + "y" : 4 }, { - "y" : 3, "name" : "W. Luis Mochan", - "drilldown" : "W. Luis Mochan" + "drilldown" : "W. Luis Mochan", + "y" : 3 } ], "colorByPoint" : 1 } - ] + ], + "xAxis" : { + "type" : "category" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 + } + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "chart" : { + "type" : "column" + }, + "title" : { + "text" : "The Weekly Challenge - 270" + } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index e6f4be02ef..581e32a794 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,52 +1,40 @@ { + "tooltip" : { + "pointFormat" : "{point.y:.0f}" + }, "series" : [ { - "name" : "Contributions", + "dataLabels" : { + "color" : "#FFFFFF", + "align" : "right", + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + }, + "format" : "{point.y:.0f}", + "enabled" : "true", + "y" : 10, + "rotation" : -90 + }, "data" : [ [ "Blog", - 4879 + 4884 ], [ "Perl", - 13975 + 13982 ], [ "Raku", - 8107 + 8110 ] ], - "dataLabels" : { - "color" : "#FFFFFF", - "rotation" : -90, - "enabled" : "true", - "format" : "{point.y:.0f}", - "y" : 10, - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - }, - "align" : "right" - } + "name" : "Contributions" } ], - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - } - } - }, - "tooltip" : { - "pointFormat" : "{point.y:.0f}" - }, "subtitle" : { - "text" : "Last updated at 2024-05-24 11:50:57 GMT" - }, - "legend" : { - "enabled" : "false" + "text" : "Last updated at 2024-05-25 16:30:37 GMT" }, "title" : { "text" : "The Weekly Challenge Contributions [2019 - 2024]" @@ -59,5 +47,17 @@ }, "chart" : { "type" : "column" + }, + "xAxis" : { + "labels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + } + }, + "type" : "category" + }, + "legend" : { + "enabled" : "false" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 07845bf7c2..a465202a8c 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,8 +1,26 @@ { - "tooltip" : { - "followPointer" : "true", - "pointFormat" : "Challenge {point.name}: {point.y:f}
", - "headerFormat" : "" + "legend" : { + "enabled" : "false" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 + } + }, + "title" : { + "text" : "The Weekly Challenge Language" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "chart" : { + "type" : "column" }, "xAxis" : { "type" : "category" @@ -11,44 +29,44 @@ { "data" : [ { - "name" : "#001", "y" : 168, - "drilldown" : "001" + "drilldown" : "001", + "name" : "#001" }, { + "name" : "#002", "drilldown" : "002", - "y" : 133, - "name" : "#002" + "y" : 133 }, { - "drilldown" : "003", "name" : "#003", - "y" : 91 + "y" : 91, + "drilldown" : "003" }, { - "drilldown" : "004", "name" : "#004", - "y" : 106 + "y" : 106, + "drilldown" : "004" }, { + "y" : 82, "drilldown" : "005", - "name" : "#005", - "y" : 82 + "name" : "#005" }, { - "y" : 63, "name" : "#006", + "y" : 63, "drilldown" : "006" }, { "name" : "#007", - "y" : 71, - "drilldown" : "007" + "drilldown" : "007", + "y" : 71 }, { "name" : "#008", - "y" : 84, - "drilldown" : "008" + "drilldown" : "008", + "y" : 84 }, { "drilldown" : "009", @@ -56,58 +74,58 @@ "name" : "#009" }, { + "drilldown" : "010", "y" : 71, - "name" : "#010", - "drilldown" : "010" + "name" : "#010" }, { - "name" : "#011", + "drilldown" : "011", "y" : 91, - "drilldown" : "011" + "name" : "#011" }, { - "drilldown" : "012", "name" : "#012", + "drilldown" : "012", "y" : 96 }, { - "drilldown" : "013", "y" : 88, + "drilldown" : "013", "name" : "#013" }, { "y" : 104, - "name" : "#014", - "drilldown" : "014" + "drilldown" : "014", + "name" : "#014" }, { + "drilldown" : "015", "y" : 103, - "name" : "#015", - "drilldown" : "015" + "name" : "#015" }, { - "drilldown" : "016", "name" : "#016", - "y" : 75 + "y" : 75, + "drilldown" : "016" }, { - "drilldown" : "017", + "name" : "#017", "y" : 87, - "name" : "#017" + "drilldown" : "017" }, { "drilldown" : "018", - "name" : "#018", - "y" : 84 + "y" : 84, + "name" : "#018" }, { + "drilldown" : "019", "y" : 105, - "name" : "#019", - "drilldown" : "019" + "name" : "#019" }, { - "drilldown" : "020", "name" : "#020", + "drilldown" : "020", "y" : 103 }, { @@ -116,48 +134,48 @@ "name" : "#021" }, { - "drilldown" : "022", + "name" : "#022", "y" : 72, - "name" : "#022" + "drilldown" : "022" }, { - "drilldown" : "023", "y" : 101, + "drilldown" : "023", "name" : "#023" }, { + "drilldown" : "024", "y" : 77, - "name" : "#024", - "drilldown" : "024" + "name" : "#024" }, { - "y" : 62, "name" : "#025", - "drilldown" : "025" + "drilldown" : "025", + "y" : 62 }, { - "drilldown" : "026", "name" : "#026", - "y" : 76 + "y" : 76, + "drilldown" : "026" }, { - "drilldown" : "027", "name" : "#027", + "drilldown" : "027", "y" : 64 }, { - "y" : 82, "name" : "#028", - "drilldown" : "028" + "drilldown" : "028", + "y" : 82 }, { - "y" : 83, "name" : "#029", + "y" : 83, "drilldown" : "029" }, { - "drilldown" : "030", "y" : 121, + "drilldown" : "030", "name" : "#030" }, { @@ -166,9 +184,9 @@ "name" : "#031" }, { - "y" : 98, "name" : "#032", - "drilldown" : "032" + "drilldown" : "032", + "y" : 98 }, { "drilldown" : "033", @@ -182,88 +200,88 @@ }, { "y" : 68, - "name" : "#035", - "drilldown" : "035" + "drilldown" : "035", + "name" : "#035" }, { "name" : "#036", - "y" : 70, - "drilldown" : "036" + "drilldown" : "036", + "y" : 70 }, { - "drilldown" : "037", "y" : 70, + "drilldown" : "037", "name" : "#037" }, { + "name" : "#038", "drilldown" : "038", - "y" : 74, - "name" : "#038" + "y" : 74 }, { - "y" : 68, "name" : "#039", + "y" : 68, "drilldown" : "039" }, { "drilldown" : "040", - "name" : "#040", - "y" : 77 + "y" : 77, + "name" : "#040" }, { - "drilldown" : "041", "name" : "#041", - "y" : 80 + "y" : 80, + "drilldown" : "041" }, { + "drilldown" : "042", "y" : 98, - "name" : "#042", - "drilldown" : "042" + "name" : "#042" }, { + "drilldown" : "043", "y" : 72, - "name" : "#043", - "drilldown" : "043" + "name" : "#043" }, { "y" : 90, - "name" : "#044", - "drilldown" : "044" + "drilldown" : "044", + "name" : "#044" }, { "y" : 102, - "name" : "#045", - "drilldown" : "045" + "drilldown" : "045", + "name" : "#045" }, { + "y" : 93, "drilldown" : "046", - "name" : "#046", - "y" : 93 + "name" : "#046" }, { - "y" : 88, "name" : "#047", - "drilldown" : "047" + "drilldown" : "047", + "y" : 88 }, { - "name" : "#048", + "drilldown" : "048", "y" : 112, - "drilldown" : "048" + "name" : "#048" }, { - "drilldown" : "049", "name" : "#049", + "drilldown" : "049", "y" : 93 }, { - "name" : "#050", + "drilldown" : "050", "y" : 104, - "drilldown" : "050" + "name" : "#050" }, { + "name" : "#051", "drilldown" : "051", - "y" : 95, - "name" : "#051" + "y" : 95 }, { "drilldown" : "052", @@ -272,18 +290,18 @@ }, { "name" : "#053", - "y" : 105, - "drilldown" : "053" + "drilldown" : "053", + "y" : 105 }, { - "y" : 107, "name" : "#054", - "drilldown" : "054" + "drilldown" : "054", + "y" : 107 }, { "y" : 92, - "name" : "#055", - "drilldown" : "055" + "drilldown" : "055", + "name" : "#055" }, { "drilldown" : "056", @@ -291,54 +309,54 @@ "name" : "#056" }, { - "drilldown" : "057", "name" : "#057", - "y" : 86 + "y" : 86, + "drilldown" : "057" }, { - "y" : 71, "name" : "#058", + "y" : 71, "drilldown" : "058" }, { + "y" : 93, "drilldown" : "059", - "name" : "#059", - "y" : 93 + "name" : "#059" }, { - "y" : 89, "name" : "#060", - "drilldown" : "060" + "drilldown" : "060", + "y" : 89 }, { + "name" : "#061", "drilldown" : "061", - "y" : 85, - "name" : "#061" + "y" : 85 }, { - "y" : 62, "name" : "#062", + "y" : 62, "drilldown" : "062" }, { - "drilldown" : "063", "y" : 93, + "drilldown" : "063", "name" : "#063" }, { - "y" : 84, "name" : "#064", + "y" : 84, "drilldown" : "064" }, { + "drilldown" : "065", "y" : 77, - "name" : "#065", - "drilldown" : "065" + "name" : "#065" }, { - "name" : "#066", "y" : 88, - "drilldown" : "066" + "drilldown" : "066", + "name" : "#066" }, { "drilldown" : "067", @@ -357,68 +375,68 @@ }, { "drilldown" : "070", - "name" : "#070", - "y" : 98 + "y" : 98, + "name" : "#070" }, { - "name" : "#071", "y" : 82, - "drilldown" : "071" + "drilldown" : "071", + "name" : "#071" }, { - "drilldown" : "072", "y" : 116, + "drilldown" : "072", "name" : "#072" }, { - "y" : 112, "name" : "#073", + "y" : 112, "drilldown" : "073" }, { "y" : 117, - "name" : "#074", - "drilldown" : "074" + "drilldown" : "074", + "name" : "#074" }, { "drilldown" : "075", - "name" : "#075", - "y" : 117 + "y" : 117, + "name" : "#075" }, { - "drilldown" : "076", "name" : "#076", + "drilldown" : "076", "y" : 101 }, { - "drilldown" : "077", "y" : 100, + "drilldown" : "077", "name" : "#077" }, { - "y" : 127, "name" : "#078", - "drilldown" : "078" + "drilldown" : "078", + "y" : 127 }, { - "drilldown" : "079", "name" : "#079", - "y" : 122 + "y" : 122, + "drilldown" : "079" }, { - "drilldown" : "080", "y" : 127, + "drilldown" : "080", "name" : "#080" }, { + "name" : "#081", "drilldown" : "081", - "y" : 114, - "name" : "#081" + "y" : 114 }, { + "name" : "#082", "drilldown" : "082", - "y" : 114, - "name" : "#082" + "y" : 114 }, { "drilldown" : "083", @@ -427,8 +445,8 @@ }, { "drilldown" : "084", - "name" : "#084", - "y" : 119 + "y" : 119, + "name" : "#084" }, { "name" : "#085", @@ -436,24 +454,24 @@ "drilldown" : "085" }, { - "y" : 104, "name" : "#086", - "drilldown" : "086" + "drilldown" : "086", + "y" : 104 }, { - "drilldown" : "087", "y" : 101, + "drilldown" : "087", "name" : "#087" }, { - "drilldown" : "088", "name" : "#088", - "y" : 121 + "y" : 121, + "drilldown" : "088" }, { - "drilldown" : "089", + "name" : "#089", "y" : 113, - "name" : "#089" + "drilldown" : "089" }, { "drilldown" : "090", @@ -461,24 +479,24 @@ "name" : "#090" }, { - "drilldown" : "091", "y" : 108, + "drilldown" : "091", "name" : "#091" }, { - "drilldown" : "092", "name" : "#092", + "drilldown" : "092", "y" : 98 }, { "drilldown" : "093", - "name" : "#093", - "y" : 87 + "y" : 87, + "name" : "#093" }, { + "name" : "#094", "drilldown" : "094", - "y" : 87, - "name" : "#094" + "y" : 87 }, { "name" : "#095", @@ -486,43 +504,43 @@ "drilldown" : "095" }, { - "y" : 108, "name" : "#096", + "y" : 108, "drilldown" : "096" }, { "y" : 111, - "name" : "#097", - "drilldown" : "097" + "drilldown" : "097", + "name" : "#097" }, { - "y" : 108, "name" : "#098", - "drilldown" : "098" + "drilldown" : "098", + "y" : 108 }, { + "name" : "#099", "drilldown" : "099", - "y" : 97, - "name" : "#099" + "y" : 97 }, { "y" : 120, - "name" : "#100", - "drilldown" : "100" + "drilldown" : "100", + "name" : "#100" }, { - "drilldown" : "101", "name" : "#101", - "y" : 83 + "y" : 83, + "drilldown" : "101" }, { + "name" : "#102", "drilldown" : "102", - "y" : 90, - "name" : "#102" + "y" : 90 }, { - "y" : 79, "name" : "#103", + "y" : 79, "drilldown" : "103" }, { @@ -531,14 +549,14 @@ "drilldown" : "104" }, { + "y" : 77, "drilldown" : "105", - "name" : "#105", - "y" : 77 + "name" : "#105" }, { "name" : "#106", - "y" : 97, - "drilldown" : "106" + "drilldown" : "106", + "y" : 97 }, { "drilldown" : "107", @@ -546,118 +564,118 @@ "name" : "#107" }, { - "y" : 96, "name" : "#108", - "drilldown" : "108" + "drilldown" : "108", + "y" : 96 }, { "drilldown" : "109", - "name" : "#109", - "y" : 109 + "y" : 109, + "name" : "#109" }, { - "drilldown" : "110", "name" : "#110", + "drilldown" : "110", "y" : 110 }, { - "y" : 93, "name" : "#111", - "drilldown" : "111" + "drilldown" : "111", + "y" : 93 }, { - "y" : 94, "name" : "#112", + "y" : 94, "drilldown" : "112" }, { "name" : "#113", - "y" : 94, - "drilldown" : "113" + "drilldown" : "113", + "y" : 94 }, { - "y" : 110, "name" : "#114", + "y" : 110, "drilldown" : "114" }, { + "drilldown" : "115", "y" : 98, - "name" : "#115", - "drilldown" : "115" + "name" : "#115" }, { - "drilldown" : "116", "name" : "#116", + "drilldown" : "116", "y" : 97 }, { - "drilldown" : "117", "y" : 99, + "drilldown" : "117", "name" : "#117" }, { - "name" : "#118", + "drilldown" : "118", "y" : 85, - "drilldown" : "118" + "name" : "#118" }, { - "name" : "#119", "y" : 125, - "drilldown" : "119" + "drilldown" : "119", + "name" : "#119" }, { - "y" : 116, "name" : "#120", - "drilldown" : "120" + "drilldown" : "120", + "y" : 116 }, { + "y" : 92, "drilldown" : "121", - "name" : "#121", - "y" : 92 + "name" : "#121" }, { - "y" : 110, "name" : "#122", + "y" : 110, "drilldown" : "122" }, { - "name" : "#123", "y" : 105, - "drilldown" : "123" + "drilldown" : "123", + "name" : "#123" }, { - "drilldown" : "124", "name" : "#124", - "y" : 87 + "y" : 87, + "drilldown" : "124" }, { - "name" : "#125", "y" : 65, - "drilldown" : "125" + "drilldown" : "125", + "name" : "#125" }, { - "y" : 113, "name" : "#126", - "drilldown" : "126" + "drilldown" : "126", + "y" : 113 }, { + "y" : 115, "drilldown" : "127", - "name" : "#127", - "y" : 115 + "name" : "#127" }, { - "drilldown" : "128", + "name" : "#128", "y" : 73, - "name" : "#128" + "drilldown" : "128" }, { "y" : 52, - "name" : "#129", - "drilldown" : "129" + "drilldown" : "129", + "name" : "#129" }, { - "drilldown" : "130", "name" : "#130", + "drilldown" : "130", "y" : 75 }, { @@ -666,59 +684,59 @@ "name" : "#131" }, { - "name" : "#132", "y" : 78, - "drilldown" : "132" + "drilldown" : "132", + "name" : "#132" }, { + "name" : "#133", "drilldown" : "133", - "y" : 95, - "name" : "#133" + "y" : 95 }, { "drilldown" : "134", - "name" : "#134", - "y" : 94 + "y" : 94, + "name" : "#134" }, { - "name" : "#135", + "drilldown" : "135", "y" : 104, - "drilldown" : "135" + "name" : "#135" }, { + "name" : "#136", "drilldown" : "136", - "y" : 97, - "name" : "#136" + "y" : 97 }, { - "name" : "#137", "y" : 100, - "drilldown" : "137" + "drilldown" : "137", + "name" : "#137" }, { - "y" : 102, "name" : "#138", - "drilldown" : "138" + "drilldown" : "138", + "y" : 102 }, { - "name" : "#139", + "drilldown" : "139", "y" : 97, - "drilldown" : "139" + "name" : "#139" }, { - "name" : "#140", + "drilldown" : "140", "y" : 103, - "drilldown" : "140" + "name" : "#140" }, { - "drilldown" : "141", "name" : "#141", - "y" : 102 + "y" : 102, + "drilldown" : "141" }, { + "name" : "#142", "drilldown" : "142", - "y" : 85, - "name" : "#142" + "y" : 85 }, { "drilldown" : "143", @@ -726,9 +744,9 @@ "name" : "#143" }, { - "y" : 90, "name" : "#144", - "drilldown" : "144" + "drilldown" : "144", + "y" : 90 }, { "name" : "#145", @@ -737,33 +755,33 @@ }, { "name" : "#146", - "y" : 108, - "drilldown" : "146" + "drilldown" : "146", + "y" : 108 }, { + "drilldown" : "147", "y" : 107, - "name" : "#147", - "drilldown" : "147" + "name" : "#147" }, { - "drilldown" : "148", "name" : "#148", - "y" : 94 + "y" : 94, + "drilldown" : "148" }, { "drilldown" : "149", - "name" : "#149", - "y" : 88 + "y" : 88, + "name" : "#149" }, { - "y" : 108, "name" : "#150", + "y" : 108, "drilldown" : "150" }, { "drilldown" : "151", - "name" : "#151", - "y" : 78 + "y" : 78, + "name" : "#151" }, { "drilldown" : "152", @@ -771,73 +789,73 @@ "name" : "#152" }, { - "drilldown" : "153", "y" : 97, + "drilldown" : "153", "name" : "#153" }, { "drilldown" : "154", - "name" : "#154", - "y" : 108 + "y" : 108, + "name" : "#154" }, { - "drilldown" : "155", "name" : "#155", + "drilldown" : "155", "y" : 99 }, { + "name" : "#156", "drilldown" : "156", - "y" : 98, - "name" : "#156" + "y" : 98 }, { - "drilldown" : "157", "name" : "#157", - "y" : 97 + "y" : 97, + "drilldown" : "157" }, { "y" : 107, - "name" : "#158", - "drilldown" : "158" + "drilldown" : "158", + "name" : "#158" }, { - "drilldown" : "159", "name" : "#159", + "drilldown" : "159", "y" : 92 }, { - "drilldown" : "160", "name" : "#160", + "drilldown" : "160", "y" : 121 }, { "y" : 102, - "name" : "#161", - "drilldown" : "161" + "drilldown" : "161", + "name" : "#161" }, { - "y" : 95, "name" : "#162", + "y" : 95, "drilldown" : "162" }, { + "drilldown" : "163", "y" : 118, - "name" : "#163", - "drilldown" : "163" + "name" : "#163" }, { + "drilldown" : "164", "y" : 120, - "name" : "#164", - "drilldown" : "164" + "name" : "#164" }, { "drilldown" : "165", - "name" : "#165", - "y" : 80 + "y" : 80, + "name" : "#165" }, { - "y" : 81, "name" : "#166", + "y" : 81, "drilldown" : "166" }, { @@ -846,14 +864,14 @@ "drilldown" : "167" }, { - "y" : 98, "name" : "#168", - "drilldown" : "168" + "drilldown" : "168", + "y" : 98 }, { + "name" : "#169", "drilldown" : "169", - "y" : 107, - "name" : "#169" + "y" : 107 }, { "drilldown" : "170", @@ -861,64 +879,64 @@ "name" : "#170" }, { - "drilldown" : "171", "name" : "#171", + "drilldown" : "171", "y" : 113 }, { "y" : 96, - "name" : "#172", - "drilldown" : "172" + "drilldown" : "172", + "name" : "#172" }, { "name" : "#173", - "y" : 113, - "drilldown" : "173" + "drilldown" : "173", + "y" : 113 }, { - "y" : 101, "name" : "#174", - "drilldown" : "174" + "drilldown" : "174", + "y" : 101 }, { - "drilldown" : "175", "name" : "#175", + "drilldown" : "175", "y" : 114 }, { - "y" : 114, "name" : "#176", - "drilldown" : "176" + "drilldown" : "176", + "y" : 114 }, { "drilldown" : "177", - "name" : "#177", - "y" : 107 + "y" : 107, + "name" : "#177" }, { + "y" : 67, "drilldown" : "178", - "name" : "#178", - "y" : 67 + "name" : "#178" }, { - "drilldown" : "179", "name" : "#179", - "y" : 74 + "y" : 74, + "drilldown" : "179" }, { - "name" : "#180", + "drilldown" : "180", "y" : 117, - "drilldown" : "180" + "name" : "#180" }, { - "y" : 99, "name" : "#181", + "y" : 99, "drilldown" : "181" }, { - "y" : 112, "name" : "#182", - "drilldown" : "182" + "drilldown" : "182", + "y" : 112 }, { "drilldown" : "183", @@ -926,29 +944,29 @@ "name" : "#183" }, { - "name" : "#184", + "drilldown" : "184", "y" : 109, - "drilldown" : "184" + "name" : "#184" }, { "drilldown" : "185", - "name" : "#185", - "y" : 117 + "y" : 117, + "name" : "#185" }, { - "drilldown" : "186", "name" : "#186", + "drilldown" : "186", "y" : 113 }, { + "drilldown" : "187", "y" : 111, - "name" : "#187", - "drilldown" : "187" + "name" : "#187" }, { + "drilldown" : "188", "y" : 121, - "name" : "#188", - "drilldown" : "188" + "name" : "#188" }, { "name" : "#189", @@ -956,14 +974,14 @@ "drilldown" : "189" }, { + "y" : 113, "drilldown" : "190", - "name" : "#190", - "y" : 113 + "name" : "#190" }, { - "name" : "#191", "y" : 119, - "drilldown" : "191" + "drilldown" : "191", + "name" : "#191" }, { "drilldown" : "192", @@ -971,59 +989,59 @@ "name" : "#192" }, { + "y" : 112, "drilldown" : "193", - "name" : "#193", - "y" : 112 + "name" : "#193" }, { + "drilldown" : "194", "y" : 113, - "name" : "#194", - "drilldown" : "194" + "name" : "#194" }, { - "y" : 110, "name" : "#195", - "drilldown" : "195" + "drilldown" : "195", + "y" : 110 }, { + "name" : "#196", "drilldown" : "196", - "y" : 104, - "name" : "#196" + "y" : 104 }, { - "name" : "#197", "y" : 105, - "drilldown" : "197" + "drilldown" : "197", + "name" : "#197" }, { - "name" : "#198", "y" : 119, - "drilldown" : "198" + "drilldown" : "198", + "name" : "#198" }, { - "y" : 119, "name" : "#199", - "drilldown" : "199" + "drilldown" : "199", + "y" : 119 }, { - "drilldown" : "200", "name" : "#200", - "y" : 118 + "y" : 118, + "drilldown" : "200" }, { + "name" : "#201", "drilldown" : "201", - "y" : 111, - "name" : "#201" + "y" : 111 }, { - "drilldown" : "202", "name" : "#202", + "drilldown" : "202", "y" : 103 }, { "name" : "#203", - "y" : 98, - "drilldown" : "203" + "drilldown" : "203", + "y" : 98 }, { "drilldown" : "204", @@ -1031,24 +1049,24 @@ "name" : "#204" }, { - "drilldown" : "205", "name" : "#205", - "y" : 120 + "y" : 120, + "drilldown" : "205" }, { "y" : 113, - "name" : "#206", - "drilldown" : "206" + "drilldown" : "206", + "name" : "#206" }, { "y" : 120, - "name" : "#207", - "drilldown" : "207" + "drilldown" : "207", + "name" : "#207" }, { - "drilldown" : "208", + "name" : "#208", "y" : 117, - "name" : "#208" + "drilldown" : "208" }, { "drilldown" : "209", @@ -1057,28 +1075,28 @@ }, { "y" : 97, - "name" : "#210", - "drilldown" : "210" + "drilldown" : "210", + "name" : "#210" }, { + "drilldown" : "211", "y" : 111, - "name" : "#211", - "drilldown" : "211" + "name" : "#211" }, { - "name" : "#212", + "drilldown" : "212", "y" : 105, - "drilldown" : "212" + "name" : "#212" }, { - "drilldown" : "213", "name" : "#213", + "drilldown" : "213", "y" : 100 }, { - "name" : "#214", + "drilldown" : "214", "y" : 69, - "drilldown" : "214" + "name" : "#214" }, { "name" : "#215", @@ -1086,8 +1104,8 @@ "drilldown" : "215" }, { - "drilldown" : "216", "y" : 89, + "drilldown" : "216", "name" : "#216" }, { @@ -1096,74 +1114,74 @@ "name" : "#217"