From 8c763f1bd7e9fb4c7ba1a80dc339ffbd9a23b333 Mon Sep 17 00:00:00 2001 From: Adam Russell Date: Sun, 3 Dec 2023 20:44:39 -0500 Subject: removed old .gitignore files --- challenge-243/adam-russell/.gitignore | 3 --- challenge-244/adam-russell/.gitignore | 3 --- 2 files changed, 6 deletions(-) delete mode 100644 challenge-243/adam-russell/.gitignore delete mode 100644 challenge-244/adam-russell/.gitignore diff --git a/challenge-243/adam-russell/.gitignore b/challenge-243/adam-russell/.gitignore deleted file mode 100644 index d4e9a94d5e..0000000000 --- a/challenge-243/adam-russell/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.bbprojectd -.RData -.Rhistory diff --git a/challenge-244/adam-russell/.gitignore b/challenge-244/adam-russell/.gitignore deleted file mode 100644 index d4e9a94d5e..0000000000 --- a/challenge-244/adam-russell/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.bbprojectd -.RData -.Rhistory -- cgit From b83ae6bf5ef619abe85510b5810b8b7e84a5224f Mon Sep 17 00:00:00 2001 From: Bob Lied Date: Tue, 5 Dec 2023 16:30:41 -0600 Subject: Make random number picks unique --- challenge-246/bob-lied/perl/ch-1.pl | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/challenge-246/bob-lied/perl/ch-1.pl b/challenge-246/bob-lied/perl/ch-1.pl index 394f4db426..07c2d59d52 100644 --- a/challenge-246/bob-lied/perl/ch-1.pl +++ b/challenge-246/bob-lied/perl/ch-1.pl @@ -10,4 +10,12 @@ #============================================================================= use feature qw/say/; -say for sort { $a <=> $b} map { int(rand(49)) + 1 } 1..6; + +# Choose six numbers without repeats +my %seen; +while ( scalar(%seen) < 6 ) +{ + $seen{ int(rand(49)) + 1 } = 1; +} + +say for sort { $a <=> $b } keys %seen; -- cgit From 8c83d2379bec6a8df0291d5d2831ebbfe3051e41 Mon Sep 17 00:00:00 2001 From: Bob Lied Date: Tue, 5 Dec 2023 16:45:33 -0600 Subject: Correct size of hash --- challenge-246/bob-lied/perl/ch-1.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge-246/bob-lied/perl/ch-1.pl b/challenge-246/bob-lied/perl/ch-1.pl index 07c2d59d52..56b1ae4e26 100644 --- a/challenge-246/bob-lied/perl/ch-1.pl +++ b/challenge-246/bob-lied/perl/ch-1.pl @@ -13,7 +13,7 @@ use feature qw/say/; # Choose six numbers without repeats my %seen; -while ( scalar(%seen) < 6 ) +while ( scalar(keys %seen) < 6 ) { $seen{ int(rand(49)) + 1 } = 1; } -- cgit From 386b3ad38c111fef322833798895d797283ed043 Mon Sep 17 00:00:00 2001 From: Jörg Sommrey <28217714+jo-37@users.noreply.github.com> Date: Mon, 4 Dec 2023 21:11:43 +0100 Subject: Solution to task 1 --- challenge-246/jo-37/perl/ch-1.pl | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100755 challenge-246/jo-37/perl/ch-1.pl diff --git a/challenge-246/jo-37/perl/ch-1.pl b/challenge-246/jo-37/perl/ch-1.pl new file mode 100755 index 0000000000..ba06467be3 --- /dev/null +++ b/challenge-246/jo-37/perl/ch-1.pl @@ -0,0 +1,20 @@ +#!/usr/bin/perl + +use v5.11; +use warnings; + + +### Input and Output + +srand time; +say for sixoutoffortynine(); + + +### Implementation + +sub sixoutoffortynine { + my @pool = (1..49); + my @winning; + push @winning, splice @pool, rand @pool, 1 for 1 .. 6; + sort {$a <=> $b} @winning; +} -- cgit From 0b67090a20b53bfebf1364fe5291bbdb472e9f05 Mon Sep 17 00:00:00 2001 From: Jörg Sommrey <28217714+jo-37@users.noreply.github.com> Date: Mon, 4 Dec 2023 21:11:56 +0100 Subject: Solution to task 2 --- challenge-246/jo-37/perl/ch-2.pl | 101 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100755 challenge-246/jo-37/perl/ch-2.pl diff --git a/challenge-246/jo-37/perl/ch-2.pl b/challenge-246/jo-37/perl/ch-2.pl new file mode 100755 index 0000000000..bdb35e6014 --- /dev/null +++ b/challenge-246/jo-37/perl/ch-2.pl @@ -0,0 +1,101 @@ +#!/usr/bin/perl -s + +use v5.10; +use Test2::V0 '!float'; +use PDL; +use PDL::NiceSlice; + +our ($tests, $examples, $verbose); + +run_tests() if $tests || $examples; # does not return + +die < 4; +usage: $0 [-examples] [-tests] [-verbose] [--] [N...] + +-examples + run the examples from the challenge + +-tests + run some tests + +-verbose + print intermediate results and the detected recurrence from the + first elements + +N... + five or more integers + +EOS + + +### Input and Output + +say is_lin_recur_2(@ARGV) ? 'true' : 'false'; + + +### Implementation + +sub logv { + printf @_ if $verbose; +} + +sub is_lin_recur_2 { + my $a = pdl @_; + logv "a: %s\n", $a; + my $m = cat $a(0:1), $a(1:2); + logv "M: %s\n", $m; + if ($m->determinant) { + my $p = $m->inv x $a(2:3)->transpose; + logv "p: %s\n", $p; + logv "recur: a[n] = %g * a[n-2] + (%g * a[n-1])\n", $p->list; + return all(approx $p, $p->rint) && + all approx $a(4:), $p->transpose x cat $a(2:-3), $a(3:-2); + } + if ($a(1)) { + my $p1 = $a(2) / $a(1); + logv "recur: a[n] = %g * a[n-1]\n", $p1->sclr; + return approx($p1, $p1->rint) && all approx $a(3:), $p1 * $a(2:-2); + } + + logv "recur: a[n] = 0\n"; + return all $a(2:) == 0; +} + + +### Examples and tests + +sub run_tests { + SKIP: { + skip "examples" unless $examples; + + ok is_lin_recur_2(1, 1, 2, 3, 5), 'example 1'; + ok !is_lin_recur_2(4, 2, 4, 5, 7), 'example 2'; + ok is_lin_recur_2(4, 1, 2, -3, 8), 'example 3'; + } + + SKIP: { + skip "tests" unless $tests; + + ok is_lin_recur_2(1, 0, 0, 0, 0), 'order 0'; + ok !is_lin_recur_2(1, 0, 0, 1, 0), 'failed order 0, @ 3'; + ok !is_lin_recur_2(1, 0, 0, 0, 1), 'failed order 0, @ 4'; + ok !is_lin_recur_2(0, 0, 1, 0, 0), 'failed order 0, @ 2'; + ok is_lin_recur_2(1, 2, 4, 8, 16), 'order 1'; + ok !is_lin_recur_2(1, 2, 4, 9, 16), 'failed order 1, @ 3'; + ok !is_lin_recur_2(1, 2, 4, 8, 15), 'failed order 1, @ 4'; + ok !is_lin_recur_2(81, 27, 9, 3, 1), 'failed order 1, non-integer'; + ok is_lin_recur_2(1, 0, 2, 0, 4), 'order 2: a[n] = 2 * a[n-2]'; + ok is_lin_recur_2(1, 1, 0, 0, 0), 'order 2: zeroes'; + ok !is_lin_recur_2(1, 1, 0, 0, 1), 'failed order 2, @ 4'; + ok is_lin_recur_2(1, 0, 0, 0, 0, 0), 'order 0: six numbers'; + ok !is_lin_recur_2(1, 0, 0, 0, 0, 1), 'failed order 0: six numbers'; + ok is_lin_recur_2(1, 1, 1, 1, 1, 1), 'order 1: six numbers'; + ok !is_lin_recur_2(1, 1, 1, 1, 1, 2), 'failed order 1: six numbers'; + ok is_lin_recur_2(1, 1, 2, 3, 5, 8), 'order 2: six numbers'; + ok !is_lin_recur_2(1, 1, 2, 3, 5, 7), 'failed order 2: six numbers'; + ok is_lin_recur_2(1, 1, 11, 21, 131), 'approximation required'; + } + + done_testing; + exit; +} -- cgit From 32e5bfbb4c455ac2de9e323d372c24dae264b6d8 Mon Sep 17 00:00:00 2001 From: Jörg Sommrey <28217714+jo-37@users.noreply.github.com> Date: Mon, 4 Dec 2023 21:13:06 +0100 Subject: Blog for challenge 246 --- challenge-246/jo-37/blog.txt | 1 + challenge-246/jo-37/blog/Blog.md | 174 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 175 insertions(+) create mode 100644 challenge-246/jo-37/blog.txt create mode 100644 challenge-246/jo-37/blog/Blog.md diff --git a/challenge-246/jo-37/blog.txt b/challenge-246/jo-37/blog.txt new file mode 100644 index 0000000000..dddbeb8879 --- /dev/null +++ b/challenge-246/jo-37/blog.txt @@ -0,0 +1 @@ +https://github.com/manwar/perlweeklychallenge-club/blob/master/challenge-246/jo-37/blog/Blog.md diff --git a/challenge-246/jo-37/blog/Blog.md b/challenge-246/jo-37/blog/Blog.md new file mode 100644 index 0000000000..649afc8ede --- /dev/null +++ b/challenge-246/jo-37/blog/Blog.md @@ -0,0 +1,174 @@ +# Recurring Lotteries + +## Task 1: 6 out of 49 +**Submitted by: Andreas Voegele** + +--- +6 out of 49 is a German lottery. + +Write a script that outputs six unique random integers from the range 1 to 49. + +Output +``` +3 +10 +11 +22 +38 +49 +``` +--- +### Solution +There is a trivial solution to this task using `List::MoreUtils::sample`: +``` +sample 6, 1 .. 49; +``` +Emulating a "lottery device" instead. +There is a pool of initially 49 numbered balls. +In every turn, one ball is selected randomly and removed from the pool. + +The task description suggests the numbers being sorted in ascending order. +``` +sub sixoutoffortynine { + my @pool = (1..49); + my @winning; + push @winning, splice @pool, rand @pool, 1 for 1 .. 6; + sort {$a <=> $b} @winning; +} +``` +## Task 2: Linear Recurrence of Second Order +**Submitted by: Jörg Sommrey** + +--- +You are given an array @a of five integers. + +Write a script to decide whether the given integers form a linear recurrence of second order with integer factors. + +A linear recurrence of second order has the form + +``` +a[n] = p * a[n-2] + q * a[n-1] with n > 1 + +where p and q must be integers. +``` +### Example 1 +``` +Input: @a = (1, 1, 2, 3, 5) +Output: true + +@a is the initial part of the Fibonacci sequence a[n] = a[n-2] + a[n-1] +with a[0] = 1 and a[1] = 1. +``` +### Example 2 +``` +Input: @a = (4, 2, 4, 5, 7) +Output: false + +a[1] and a[2] are even. Any linear combination of two even numbers with integer factors is even, too. +Because a[3] is odd, the given numbers cannot form a linear recurrence of second order with integer factors. +``` +### Example 3 +``` +Input: @a = (4, 1, 2, -3, 8) +Output: true + +a[n] = a[n-2] - 2 * a[n-1] +``` +--- +### Solution +In the following an asterisk `*` denotes matrix multiplication as well as vector or scalar multiplication depending on the type of its operands. + +From the formula +``` +a[n] = p[0] * a[n-2] + p[1] * a[n-1] +``` +and an initial sequence `a[0],...,a[3]` we need to derive the 'hidden' parameters `p[0]` and `p[1]`: +``` +a[2] = a[0] * p[0] + a[1] * p[1] +a[3] = a[1] * p[0] + a[2] * p[1] +``` +Using vectors and a matrix +``` +a23 = (a[2]) + (a[3]) +p = (p[0]) + (p[1]) +M = (a[0], a[1]) + (a[1], a[2]) +``` +we may write: +``` +a23 = M * p +``` +#### Regular case +Suppose `M` is regular, i.e. `det(M) = a[0] * a[2] - a[1]^2 != 0` + +Then `M` has an inverse matrix and we find: +``` +p = inv(M) * a23 +``` +We need to check if: + + * all elements of `p` are integer and + * the fifth element `a[4]` fits into the sequence. + +The latter is the case if +``` +a[4] = pT * a23 +``` +#### Degenerated case +Next we need to consider the degenerated case where `det(M) = 0`, i.e. +``` +a[0] * a[2] = a[1]^2 +``` +Here the middle element `a[1]` is the geometric mean of its neighbors. +This is the characteristic property of a geometric sequence, which may be regarded as a linear recurrence of order 1: +``` +a[n] = p[1] * a[n-1] +``` +Suppose `a[1] != 0`. +Then we have `p[1] = a[2] / a[1]`. +The initial element `a[0]` becomes irrelevant and we need to check if + + * `p[1]` is integer and + * the fourth and fifth elements `a[3]` and `a[4]` fit into the found geometric sequence. + +#### Doubly degenerated case +Finally we have the case where the determinant of `M` is zero and `a[1] = 0`. +From `a[0] * a[2] = a[1]^2` it follows, that `a[0]` or `a[2]` must be zero, too. +This means there are two neighboring zeroes in the sequence and thus we need to check if: + + * `a[2]`, `a[3]` and `a[4]` are all zero. +### Implementation +Using `PDL` it is not too complicated to implement the above steps. Furthermore they may +be extended to more than five numbers with little effort. +Some attention must be payed to comparing floating point numbers, though. +Therefore using `PDL`'s relaxed `approx` instead of `==`. +``` + 1 use PDL; + 2 use PDL::NiceSlice; + 3 sub is_lin_recur_2 { + 4 my $a = pdl @_; + 5 my $m = cat $a(0:1), $a(1:2); + 6 if ($m->determinant) { + 7 my $p = $m->inv x $a(2:3)->transpose; + 8 return all(approx $p, $p->rint) && + 9 all approx $a(4:), $p->transpose x cat $a(2:-3), $a(3:-2); + 10 } + 11 if ($a(1)) { + 12 my $p1 = $a(2) / $a(1); + 13 return approx($p1, $p1->rint) && all approx $a(3:), $p1 * $a(2:-2); + 14 } + 15 return all $a(2:) == 0; + 16 } +``` +line 4: Create a `double` ndarray from the given numbers. +line 5: Create the matrix `M` as the concatenation of two ndarray slices. +line 6: The determinant of a matrix must be nonzero to be invertible. +line 7: Multiply the inverse of `M` with the column vector `(a[2], a[3])T` to find the parameters `p`. +line 8: Check if `p` is integer. +line 9: Check if the fifth to last element follow the recurrence defined by the initial four elements. For this purpose build a (L-4)x2 ndarray holding successive pairs from the given numbers starting with `(a[2], a[3])`, transform these with the recurrence relation and compare the result with the numbers themselves starting with `a[4]`. +line 11: Here we have `a[0] * a[2] = a[1]^2`. We may divide by `a[1]` if it is not zero. +line 12: `p1` is the factor in the geometric sequence. +line 13: Check if `p1` is integer and if the fourth to last element follow the recurrence defined by the first three elements. +line 15: Here the determinant is zero and `a[1]` is zero, too. Check if the third to last elements are all zero. \ No newline at end of file -- cgit From 589d9be95be8ee726b3aaf6e8b6215f8bf10fecf Mon Sep 17 00:00:00 2001 From: Luis Mochan Date: Fri, 8 Dec 2023 10:30:10 -0600 Subject: Add third simpler solution --- challenge-246/wlmb/perl/ch-2b.pl | 1 + challenge-246/wlmb/perl/ch-2c.pl | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100755 challenge-246/wlmb/perl/ch-2c.pl diff --git a/challenge-246/wlmb/perl/ch-2b.pl b/challenge-246/wlmb/perl/ch-2b.pl index ff706f1a4a..9c0b201f02 100755 --- a/challenge-246/wlmb/perl/ch-2b.pl +++ b/challenge-246/wlmb/perl/ch-2b.pl @@ -1,6 +1,7 @@ #!/usr/bin/env perl # Perl weekly challenge 246 # Task 2: Linear Recurrence of Second Order +# Second alternative: using SVD # # See https://wlmb.github.io/2023/12/03/PWC246/#task-2-linear-recurrence-of-second-order use v5.36; diff --git a/challenge-246/wlmb/perl/ch-2c.pl b/challenge-246/wlmb/perl/ch-2c.pl new file mode 100755 index 0000000000..7739ebbbd5 --- /dev/null +++ b/challenge-246/wlmb/perl/ch-2c.pl @@ -0,0 +1,35 @@ +#!/usr/bin/env perl +# Perl weekly challenge 246 +# Task 2: Linear Recurrence of Second Order +# Third alternative: going back to integer math +# +# See https://wlmb.github.io/2023/12/03/PWC246/#task-2-linear-recurrence-of-second-order +use v5.36; +use List::Util qw(all); +die <<~"FIN" unless @ARGV>=4; + Usage: $0 N0 N1 N2 N3 [N4...] + to check if the sequence of integers Ni obeys a linear second order recurrence with + integer coefficients + FIN +die "Arguments must be integer" unless all {/^[+-]?\d+$/} @ARGV; +my @x =@ARGV; +my ($p, $q); +my $result; +if($x[0]==$x[1]==0){ + ($p,$q)=(0,0); + $result=1; +}elsif($x[0]*$x[2]==$x[1]**2){ + # other singular matrix + ($p,$q)=(0,$x[1]/$x[0]); + $result = $x[1]%$x[0]==0; +}else{ + my $num_p = $x[2]**2-$x[3]*$x[1]; + my $num_q = $x[0]*$x[3]-$x[1]*$x[2]; + my $den = $x[0]*$x[2]-$x[1]**2; + $result = $num_p%$den==0 && $num_q%$den==0; # coefficients are integer + $p=$num_p/$den; + $q=$num_q/$den; +} +$result &&= $x[$_]==$p*$x[$_-2]+$q*$x[$_-1] for (2..@x-1); +$result = $result?"True":"False"; +say "@x => $result" -- cgit From b18ca39f9bb4cf8d5015c242b3ae3f8359c2f4af Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Fri, 8 Dec 2023 18:18:52 +0000 Subject: - Added solutions by Jorg Sommrey. - Added solutions by W. Luis Mochan. - Added solutions by Eric Cheung. --- challenge-246/eric-cheung/python/ch-2.py | 23 +- stats/pwc-current.json | 329 +- stats/pwc-language-breakdown-summary.json | 74 +- stats/pwc-language-breakdown.json | 9602 ++++++++++++++--------------- stats/pwc-leaders.json | 358 +- stats/pwc-summary-1-30.json | 106 +- stats/pwc-summary-121-150.json | 102 +- stats/pwc-summary-151-180.json | 40 +- stats/pwc-summary-181-210.json | 36 +- stats/pwc-summary-211-240.json | 40 +- stats/pwc-summary-241-270.json | 92 +- stats/pwc-summary-271-300.json | 58 +- stats/pwc-summary-301-330.json | 42 +- stats/pwc-summary-31-60.json | 98 +- stats/pwc-summary-61-90.json | 44 +- stats/pwc-summary-91-120.json | 98 +- stats/pwc-summary.json | 60 +- 17 files changed, 5621 insertions(+), 5581 deletions(-) diff --git a/challenge-246/eric-cheung/python/ch-2.py b/challenge-246/eric-cheung/python/ch-2.py index efbbb54bbb..1cb5a1088a 100755 --- a/challenge-246/eric-cheung/python/ch-2.py +++ b/challenge-246/eric-cheung/python/ch-2.py @@ -28,14 +28,25 @@ def ModifiedGCD (arrNum, arrParam): nDiv, nX, nY = ModifiedGCD([arrNum[1], arrNum[0] % arrNum[1]], [nX, nY]) return [nDiv, nY, nX - nY * (arrNum[0] // arrNum[1])] -arrInput = [1, 1, 2, 3, 5] ## Example 1 +## arrInput = [1, 1, 2, 3, 5] ## Example 1 ## arrInput = [4, 2, 4, 5, 7] ## Example 2 ## arrInput = [4, 1, 2, -3, 8] ## Example 3 +## arrInput = [3, 9, 27, 81, 243] ## Example 4 +## arrInput = [3, 5, 27, 45, 243] ## Example 5 +## arrInput = [1, 1, 0, 0, 0] ## Example 6 +## arrInput = [0, 0, 0, 0, 0] ## Example 7 +## arrInput = [0, 3, 0, 0, 0] ## Example 8 +## arrInput = [0, 0, 3, 0, 0] ## Example 9 +arrInput = [2, 4, 8, 16, 32] ## Example 10 ## print (ModifiedGCD(arrInput[0:2], [0, 0])) ## print (ModifiedGCD([47, 30], [0, 0])) +if all([nLoop == 0 for nLoop in arrInput[2:]]): + print (True) + sys.exit() + nConsecutiveEvenIndx = IsConsecutiveEven (arrInput) if nConsecutiveEvenIndx > -1: arrContainOdd = [nIndx for nIndx in range(nConsecutiveEvenIndx + 2, len(arrInput)) if arrInput[nIndx] % 2 == 1] @@ -57,6 +68,16 @@ if arrInput[2] == arrInput[0] + arrInput[1]: elif arrInput[2] == arrInput[0] - 2 * arrInput[1]: arrParam.append(1) arrParam.append(-2) +elif arrInput[2] == 3 * arrInput[0] + 2 * arrInput[1]: + arrParam.append(3) + arrParam.append(2) +elif arrInput[2] == 9 * arrInput[0]: + arrParam.append(9) + arrParam.append(0) +elif arrInput[2] == 2 * arrInput[1]: + arrParam.append(0) + arrParam.append(2) + ## ==== To Be Further Fine Tune ==== if len(arrParam) == 0: diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 92be346ec0..271b65f978 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,137 +1,8 @@ { - "tooltip" : { - "followPointer" : 1, - "pointFormat" : "{point.name}: {point.y:f}
", - "headerFormat" : "{series.name}
" - }, - "series" : [ - { - "colorByPoint" : 1, - "data" : [ - { - "name" : "Bob Lied", - "y" : 3, - "drilldown" : "Bob Lied" - }, - { - "drilldown" : "Cheok-Yin Fung", - "y" : 3, - "name" : "Cheok-Yin Fung" - }, - { - "name" : "Dave Jacoby", - "y" : 3, - "drilldown" : "Dave Jacoby" - }, - { - "name" : "David Ferrone", - "drilldown" : "David Ferrone", - "y" : 2 - }, - { - "name" : "E. Choroba", - "drilldown" : "E. Choroba", - "y" : 2 - }, - { - "drilldown" : "Humberto Massa", - "y" : 2, - "name" : "Humberto Massa" - }, - { - "name" : "Laurent Rosenfeld", - "y" : 6, - "drilldown" : "Laurent Rosenfeld" - }, - { - "name" : "Luca Ferrari", - "y" : 10, - "drilldown" : "Luca Ferrari" - }, - { - "name" : "Mark Anderson", - "drilldown" : "Mark Anderson", - "y" : 2 - }, - { - "y" : 2, - "drilldown" : "Niels van Dijke", - "name" : "Niels van Dijke" - }, - { - "name" : "Oliver Oviedo", - "drilldown" : "Oliver Oviedo", - "y" : 1 - }, - { - "y" : 5, - "drilldown" : "Packy Anderson", - "name" : "Packy Anderson" - }, - { - "y" : 3, - "drilldown" : "Peter Campbell Smith", - "name" : "Peter Campbell Smith" - }, - { - "name" : "Peter Meszaros", - "drilldown" : "Peter Meszaros", - "y" : 2 - }, - { - "y" : 2, - "drilldown" : "Robert DiCicco", - "name" : "Robert DiCicco" - }, - { - "name" : "Roger Bell_West", - "drilldown" : "Roger Bell_West", - "y" : 4 - }, - { - "name" : "Thomas Kohler", - "drilldown" : "Thomas Kohler", - "y" : 4 - }, - { - "name" : "W. Luis Mochan", - "drilldown" : "W. Luis Mochan", - "y" : 3 - } - ], - "name" : "The Weekly Challenge - 246" - } - ], - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "xAxis" : { - "type" : "category" - }, - "legend" : { - "enabled" : 0 - }, - "title" : { - "text" : "The Weekly Challenge - 246" - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } - }, - "subtitle" : { - "text" : "[Champions: 18] Last updated at 2023-12-06 21:48:05 GMT" - }, "drilldown" : { "series" : [ { - "name" : "Bob Lied", + "id" : "Bob Lied", "data" : [ [ "Perl", @@ -142,11 +13,9 @@ 1 ] ], - "id" : "Bob Lied" + "name" : "Bob Lied" }, { - "id" : "Cheok-Yin Fung", - "name" : "Cheok-Yin Fung", "data" : [ [ "Perl", @@ -156,10 +25,11 @@ "Blog", 1 ] - ] + ], + "name" : "Cheok-Yin Fung", + "id" : "Cheok-Yin Fung" }, { - "name" : "Dave Jacoby", "data" : [ [ "Perl", @@ -170,27 +40,28 @@ 1 ] ], + "name" : "Dave Jacoby", "id" : "Dave Jacoby" }, { "id" : "David Ferrone", + "name" : "David Ferrone", "data" : [ [ "Perl", 2 ] - ], - "name" : "David Ferrone" + ] }, { "id" : "E. Choroba", + "name" : "E. Choroba", "data" : [ [ "Perl", 2 ] - ], - "name" : "E. Choroba" + ] }, { "name" : "Humberto Massa", @@ -203,6 +74,21 @@ "id" : "Humberto Massa" }, { + "id" : "Jorg Sommrey", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ], + "name" : "Jorg Sommrey" + }, + { + "id" : "Laurent Rosenfeld", "name" : "Laurent Rosenfeld", "data" : [ [ @@ -217,10 +103,10 @@ "Blog", 2 ] - ], - "id" : "Laurent Rosenfeld" + ] }, { + "name" : "Luca Ferrari", "data" : [ [ "Raku", @@ -231,18 +117,17 @@ 8 ] ], - "name" : "Luca Ferrari", "id" : "Luca Ferrari" }, { + "id" : "Mark Anderson", + "name" : "Mark Anderson", "data" : [ [ "Raku", 2 ] - ], - "name" : "Mark Anderson", - "id" : "Mark Anderson" + ] }, { "id" : "Niels van Dijke", @@ -255,16 +140,17 @@ "name" : "Niels van Dijke" }, { - "id" : "Oliver Oviedo", "data" : [ [ "Perl", 1 ] ], - "name" : "Oliver Oviedo" + "name" : "Oliver Oviedo", + "id" : "Oliver Oviedo" }, { + "id" : "Packy Anderson", "data" : [ [ "Perl", @@ -279,8 +165,7 @@ 1 ] ], - "name" : "Packy Anderson", - "id" : "Packy Anderson" + "name" : "Packy Anderson" }, { "id" : "Peter Campbell Smith", @@ -297,13 +182,13 @@ ] }, { + "name" : "Peter Meszaros", "data" : [ [ "Perl", 2 ] ], - "name" : "Peter Meszaros", "id" : "Peter Meszaros" }, { @@ -321,7 +206,6 @@ "name" : "Robert DiCicco" }, { - "name" : "Roger Bell_West", "data" : [ [ "Perl", @@ -332,9 +216,12 @@ 2 ] ], + "name" : "Roger Bell_West", "id" : "Roger Bell_West" }, { + "id" : "Thomas Kohler", + "name" : "Thomas Kohler", "data" : [ [ "Perl", @@ -344,11 +231,10 @@ "Blog", 2 ] - ], - "name" : "Thomas Kohler", - "id" : "Thomas Kohler" + ] }, { + "name" : "W. Luis Mochan", "data" : [ [ "Perl", @@ -359,12 +245,145 @@ 1 ] ], - "name" : "W. Luis Mochan", "id" : "W. Luis Mochan" } ] }, + "xAxis" : { + "type" : "category" + }, + "series" : [ + { + "name" : "The Weekly Challenge - 246", + "colorByPoint" : 1, + "data" : [ + { + "name" : "Bob Lied", + "drilldown" : "Bob Lied", + "y" : 3 + }, + { + "y" : 3, + "name" : "Cheok-Yin Fung", + "drilldown" : "Cheok-Yin Fung" + }, + { + "drilldown" : "Dave Jacoby", + "name" : "Dave Jacoby", + "y" : 3 + }, + { + "drilldown" : "David Ferrone", + "name" : "David Ferrone", + "y" : 2 + }, + { + "drilldown" : "E. Choroba", + "name" : "E. Choroba", + "y" : 2 + }, + { + "y" : 2, + "drilldown" : "Humberto Massa", + "name" : "Humberto Massa" + }, + { + "drilldown" : "Jorg Sommrey", + "name" : "Jorg Sommrey", + "y" : 3 + }, + { + "drilldown" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld", + "y" : 6 + }, + { + "y" : 10, + "drilldown" : "Luca Ferrari", + "name" : "Luca Ferrari" + }, + { + "y" : 2, + "drilldown" : "Mark Anderson", + "name" : "Mark Anderson" + }, + { + "drilldown" : "Niels van Dijke", + "name" : "Niels van Dijke", + "y" : 2 + }, + { + "y" : 1, + "name" : "Oliver Oviedo", + "drilldown" : "Oliver Oviedo" + }, + { + "y" : 5, + "name" : "Packy Anderson", + "drilldown" : "Packy Anderson" + }, + { + "drilldown" : "Peter Campbell Smith", + "name" : "Peter Campbell Smith", + "y" : 3 + }, + { + "drilldown" : "Peter Meszaros", + "name" : "Peter Meszaros", + "y" : 2 + }, + { + "y" : 2, + "drilldown" : "Robert DiCicco", + "name" : "Robert DiCicco" + }, + { + "y" : 4, + "name" : "Roger Bell_West", + "drilldown" : "Roger Bell_West" + }, + { + "y" : 4, + "drilldown" : "Thomas Kohler", + "name" : "Thomas Kohler" + }, + { + "y" : 3, + "name" : "W. Luis Mochan", + "drilldown" : "W. Luis Mochan" + } + ] + } + ], + "subtitle" : { + "text" : "[Champions: 19] Last updated at 2023-12-08 18:13:47 GMT" + }, + "title" : { + "text" : "The Weekly Challenge - 246" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "tooltip" : { + "headerFormat" : "{series.name}
", + "pointFormat" : "{point.name}: {point.y:f}
", + "followPointer" : 1 + }, + "legend" : { + "enabled" : 0 + }, "chart" : { "type" : "column" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index b97c4faaef..7bc5d7259f 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,63 +1,63 @@ { - "tooltip" : { - "pointFormat" : "{point.y:.0f}" - }, - "yAxis" : { - "min" : 0, - "title" : { - "text" : null + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } } }, + "subtitle" : { + "text" : "Last updated at 2023-12-08 18:13:47 GMT" + }, "series" : [ { - "dataLabels" : { - "align" : "right", - "color" : "#FFFFFF", - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - }, - "y" : 10, - "enabled" : "true", - "format" : "{point.y:.0f}", - "rotation" : -90 - }, - "name" : "Contributions", "data" : [ [ "Blog", - 4279 + 4280 ], [ "Perl", - 12697 + 12699 ], [ "Raku", 7322 ] - ] + ], + "name" : "Contributions", + "dataLabels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + }, + "rotation" : -90, + "color" : "#FFFFFF", + "y" : 10, + "enabled" : "true", + "align" : "right", + "format" : "{point.y:.0f}" + } } ], - "legend" : { - "enabled" : "false" - }, - "xAxis" : { - "labels" : { - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - } - }, - "type" : "category" - }, "title" : { "text" : "The Weekly Challenge Contributions [2019 - 2023]" }, - "subtitle" : { - "text" : "Last updated at 2023-12-06 21:48:05 GMT" + "yAxis" : { + "title" : { + "text" : null + }, + "min" : 0 + }, + "tooltip" : { + "pointFormat" : "{point.y:.0f}" }, "chart" : { "type" : "column" + }, + "legend" : { + "enabled" : "false" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 601ec2d319..651d834596 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,4465 +1,51 @@ { - "drilldown" : { - "series" : [ - { - "id" : "001", - "data" : [ - [ - "Perl", - 105 - ], - [ - "Raku", - 47 - ], - [ - "Blog", - 12 - ] - ], - "name" : "001" - }, - { - "id" : "002", - "data" : [ - [ - "Perl", - 83 - ], - [ - "Raku", - 36 - ], - [ - "Blog", - 10 - ] - ], - "name" : "002" - }, - { - "data" : [ - [ - "Perl", - 48 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 9 - ] - ], - "name" : "003", - "id" : "003" - }, - { - "id" : "004", - "name" : "004", - "data" : [ - [ - "Perl", - 60 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 12 - ] - ], - "name" : "005", - "id" : "005" - }, - { - "name" : "006", - "data" : [ - [ - "Perl", - 36 - ], - [ - "Raku", - 18 - ], - [ - "Blog", - 7 - ] - ], - "id" : "006" - }, - { - "data" : [ - [ - "Perl", - 36 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 10 - ] - ], - "name" : "007", - "id" : "007" - }, - { - "name" : "008", - "data" : [ - [ - "Perl", - 48 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 12 - ] - ], - "id" : "008" - }, - { - "id" : "009", - "name" : "009", - "data" : [ - [ - "Perl", - 46 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "id" : "010", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 11 - ] - ], - "name" : "010" - }, - { - "name" : "011", - "data" : [ - [ - "Perl", - 51 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 10 - ] - ], - "id" : "011" - }, - { - "name" : "012", - "data" : [ - [ - "Perl", - 51 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 11 - ] - ], - "id" : "012" - }, - { - "data" : [ - [ - "Perl", - 49 - ], - [ - "Raku", - 25 - ], - [ - "Blog", - 13 - ] - ], - "name" : "013", - "id" : "013" - }, - { - "id" : "014", - "name" : "014", - "data" : [ - [ - "Perl", - 56 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "name" : "015", - "data" : [ - [ - "Perl", - 58 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 15 - ] - ], - "id" : "015" - }, - { - "id" : "016", - "name" : "016", - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "id" : "017", - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 12 - ] - ], - "name" : "017" - }, - { - "name" : "018", - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 14 - ] - ], - "id" : "018" - }, - { - "name" : "019", - "data" : [ - [ - "Perl", - 58 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 13 - ] - ], - "id" : "019" - }, - { - "data" : [ - [ - "Perl", - 53 - ], - [ - "Raku", - 37 - ], - [ - "Blog", - 13 - ] - ], - "name" : "020", - "id" : "020" - }, - { - "name" : "021", - "data" : [ - [ - "Perl", - 40 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 10 - ] - ], - "id" : "021" - }, - { - "name" : "022", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 10 - ] - ], - "id" : "022" - }, - { - "id" : "023", - "data" : [ - [ - "Perl", - 57 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 12 - ] - ], - "name" : "023" - }, - { - "name" : "024", - "data" : [ - [ - "Perl", - 40 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 11 - ] - ], - "id" : "024" - }, - { - "id" : "025", - "name" : "025", - "data" : [ - [ - "Perl", - 31 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "name" : "026", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 10 - ] - ], - "id" : "026" - }, - { - "id" : "027", - "name" : "027", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 9 - ] - ], - "name" : "028", - "id" : "028" - }, - { - "data" : [ - [ - "Perl", - 44 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 12 - ] - ], - "name" : "029", - "id" : "029" - }, - { - "id" : "030", - "data" : [ - [ - "Perl", - 78 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 10 - ] - ], - "name" : "030" - }, - { - "id" : "031", - "name" : "031", - "data" : [ - [ - "Perl", - 54 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "id" : "032", - "data" : [ - [ - "Perl", - 61 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 10 - ] - ], - "name" : "032" - }, - { - "id" : "033", - "name" : "033", - "data" : [ - [ - "Perl", - 66 - ], - [ - "Raku", - 38 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "id" : "034", - "data" : [ - [ - "Perl", - 36 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 11 - ] - ], - "name" : "034" - }, - { - "id" : "035", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 9 - ] - ], - "name" : "035" - }, - { - "name" : "036", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 11 - ] - ], - "id" : "036" - }, - { - "name" : "037", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 9 - ] - ], - "id" : "037" - }, - { - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 12 - ] - ], - "name" : "038", - "id" : "038" - }, - { - "id" : "039", - "name" : "039", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "id" : "040", - "name" : "040", - "data" : [ - [ - "Perl", - 43 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "name" : "041", - "data" : [ - [ - "Perl", - 41 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 9 - ] - ], - "id" : "041" - }, - { - "id" : "042", - "data" : [ - [ - "Perl", - 53 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 11 - ] - ], - "name" : "042" - }, - { - "id" : "043", - "name" : "043", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 46 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 11 - ] - ], - "name" : "044", - "id" : "044" - }, - { - "name" : "045", - "data" : [ - [ - "Perl", - 56 - ], - [ - "Raku", - 35 - ], - [ - "Blog", - 11 - ] - ], - "id" : "045" - }, - { - "id" : "046", - "name" : "046", - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "id" : "047", - "name" : "047", - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "id" : "048", - "name" : "048", - "data" : [ - [ - "Perl", - 63 - ], - [ - "Raku", - 37 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "name" : "049", - "data" : [ - [ - "Perl", - 54 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 12 - ] - ], - "id" : "049" - }, - { - "id" : "050", - "name" : "050", - "data" : [ - [ - "Perl", - 56 - ], - [ - "Raku", - 36 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 52 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 11 - ] - ], - "name" : "051", - "id" : "051" - }, - { - "id" : "052", - "name" : "052", - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 14 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 49 - ], - [ - "Raku", - 41 - ], - [ - "Blog", - 15 - ] - ], - "name" : "053", - "id" : "053" - }, - { - "data" : [ - [ - "Perl", - 49 - ], - [ - "Raku", - 40 - ], - [ - "Blog", - 18 - ] - ], - "name" : "054", - "id" : "054" - }, - { - "id" : "055", - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 14 - ] - ], - "name" : "055" - }, - { - "data" : [ - [ - "Perl", - 53 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 17 - ] - ], - "name" : "056", - "id" : "056" - }, - { - "id" : "057", - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 15 - ] - ], - "name" : "057" - }, - { - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 13 - ] - ], - "name" : "058", - "id" : "058" - }, - { - "name" : "059", - "data" : [ - [ - "Perl", - 43 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 16 - ] - ], - "id" : "059" - }, - { - "id" : "060", - "name" : "060", - "data" : [ - [ - "Perl", - 43 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "id" : "061", - "name" : "061", - "data" : [ - [ - "Perl", - 41 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 14 - ] - ] - }, - { - "id" : "062", - "data" : [ - [ - "Perl", - 32 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 11 - ] - ], - "name" : "062" - }, - { - "name" : "063", - "data" : [ - [ - "Perl", - 46 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 13 - ] - ], - "id" : "063" - }, - { - "id" : "064", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 16 - ] - ], - "name" : "064" - }, - { - "data" : [ - [ - "Perl", - 36 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 15 - ] - ], - "name" : "065", - "id" : "065" - }, - { - "id" : "066", - "name" : "066", - "data" : [ - [ - "Perl", - 43 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 14 - ] - ] - }, - { - "id" : "067", - "name" : "067", - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 18 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 13 - ] - ], - "name" : "068", - "id" : "068" - }, - { - "id" : "069", - "name" : "069", - "data" : [ - [ - "Perl", - 43 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "id" : "070", - "data" : [ - [ - "Perl", - 46 - ], - [ - "Raku", - 35 - ], - [ - "Blog", - 17 - ] - ], - "name" : "070" - }, - { - "id" : "071", - "name" : "071", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "name" : "072", - "data" : [ - [ - "Perl", - 55 - ], - [ - "Raku", - 42 - ], - [ - "Blog", - 19 - ] - ], - "id" : "072" - }, - { - "name" : "073", - "data" : [ - [ - "Perl", - 55 - ], - [ - "Raku", - 40 - ], - [ - "Blog", - 17 - ] - ], - "id" : "073" - }, - { - "id" : "074", - "name" : "074", - "data" : [ - [ - "Perl", - 58 - ], - [ - "Raku", - 39 - ], - [ - "Blog", - 20 - ] - ] - }, - { - "id" : "075", - "data" : [ - [ - "Perl", - 59 - ], - [ - "Raku", - 38 - ], - [ - "Blog", - 20 - ] - ], - "name" : "075" - }, - { - "data" : [ - [ - "Perl", - 53 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 16 - ] - ], - "name" : "076", - "id" : "076" - }, - { - "id" : "077", - "data" : [ - [ - "Perl", - 52 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 14 - ] - ], - "name" : "077" - }, - { - "id" : "078", - "name" : "078", - "data" : [ - [ - "Perl", - 68 - ], - [ - "Raku", - 41 - ], - [ - "Blog", - 18 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 68 - ], - [ - "Raku", - 37 - ], - [ - "Blog", - 17 - ] - ], - "name" : "079", - "id" : "079" - }, - { - "data" : [ - [ - "Perl", - 75 - ], - [ - "Raku", - 36 - ], - [ - "Blog", - 16 - ] - ], - "name" : "080", - "id" : "080" - }, - { - "id" : "081", - "name" : "081", - "data" : [ - [ - "Perl", - 65 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "name" : "082", - "data" : [ - [ - "Perl", - 62 - ], - [ - "Raku", - 35 - ], - [ - "Blog", - 17 - ] - ], - "id" : "082" - }, - { - "name" : "083", - "data" : [ - [ - "Perl", - 73 - ], - [ - "Raku", - 38 - ], - [ -