diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2024-05-25 17:34:42 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2024-05-25 17:34:42 +0100 |
| commit | 1ce1e129f55753ee1392704f7c219c40cbee1eb8 (patch) | |
| tree | 89cb59c979cb8160fbbd9a0acc16c27eb77f330c | |
| parent | 92803643349bfb84e214bdf278e7447230b19e35 (diff) | |
| download | perlweeklychallenge-club-1ce1e129f55753ee1392704f7c219c40cbee1eb8.tar.gz perlweeklychallenge-club-1ce1e129f55753ee1392704f7c219c40cbee1eb8.tar.bz2 perlweeklychallenge-club-1ce1e129f55753ee1392704f7c219c40cbee1eb8.zip | |
- 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.
23 files changed, 2174 insertions, 1710 deletions
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" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", + "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>", + "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" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", - "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>" + "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" : "<b>{point.y:.0f}</b>" + }, "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" : "<b>{point.y:.0f}</b>" - }, "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" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>", - "headerFormat" : "<span style=\"font-size:11px\"></span>" + "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 }, |
