From cff3bfa6eda5aa6f58717e02e7b7c4ee2e0bf853 Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Thu, 21 Jul 2022 23:38:45 +0100 Subject: - Added solutions to the task "Permutation Ranking" of week 174. --- .../theweeklychallenge/PermutationRanking.java | 124 + challenge-174/mohammad-anwar/perl/ch-2.pl | 49 + challenge-174/mohammad-anwar/python/ch-2.py | 53 + challenge-174/mohammad-anwar/raku/ch-2.raku | 47 + challenge-174/mohammad-anwar/swift/ch-2.swift | 153 ++ stats/pwc-current.json | 184 +- stats/pwc-language-breakdown-summary.json | 46 +- stats/pwc-language-breakdown.json | 2510 ++++++++++---------- stats/pwc-leaders.json | 784 +++--- stats/pwc-summary-1-30.json | 44 +- stats/pwc-summary-121-150.json | 98 +- stats/pwc-summary-151-180.json | 40 +- stats/pwc-summary-181-210.json | 28 +- stats/pwc-summary-211-240.json | 58 +- stats/pwc-summary-241-270.json | 40 +- stats/pwc-summary-31-60.json | 46 +- stats/pwc-summary-61-90.json | 104 +- stats/pwc-summary-91-120.json | 98 +- stats/pwc-summary.json | 36 +- 19 files changed, 2484 insertions(+), 2058 deletions(-) create mode 100644 challenge-174/mohammad-anwar/java/theweeklychallenge/PermutationRanking.java create mode 100644 challenge-174/mohammad-anwar/perl/ch-2.pl create mode 100644 challenge-174/mohammad-anwar/python/ch-2.py create mode 100644 challenge-174/mohammad-anwar/raku/ch-2.raku create mode 100644 challenge-174/mohammad-anwar/swift/ch-2.swift diff --git a/challenge-174/mohammad-anwar/java/theweeklychallenge/PermutationRanking.java b/challenge-174/mohammad-anwar/java/theweeklychallenge/PermutationRanking.java new file mode 100644 index 0000000000..5436f82c01 --- /dev/null +++ b/challenge-174/mohammad-anwar/java/theweeklychallenge/PermutationRanking.java @@ -0,0 +1,124 @@ +package theweeklychallenge; + +/* + +Week 174: + + https://theweeklychallenge.org/blog/perl-weekly-challenge-174 + +Task #2: Permutation Ranking + + You are given a list of integers with no duplicates, e.g. [0, 1, 2]. + + Write two functions, permutation2rank() which will take the list + and determine its rank (starting at 0) in the set of possible + permutations arranged in lexicographic order, and rank2permutation() + which will take the list and a rank number and produce just that + permutation. + +Compile and Run: + + mohammad-anwar/java$ javac theweeklychallenge/PermutationRanking.java + mohammad-anwar/java$ java theweeklychallenge.PermutationRanking + +*/ + +import java.util.List; +import java.util.Arrays; +import java.util.ArrayList; +import java.util.stream.Collectors; +import junit.framework.TestCase; +import static junit.framework.Assert.*; + +public class PermutationRanking extends TestCase { + + public static void main(String[] args) { + junit.textui.TestRunner.run( + theweeklychallenge.PermutationRanking.class); + } + + public void test_permutation2rank() { + int[] n = {1, 0, 2}; + List> got = permutation2rank(n); + List> exp = List.of( + List.of(0, 1, 2), + List.of(0, 2, 1), + List.of(1, 0, 2), + List.of(1, 2, 0), + List.of(2, 0, 1), + List.of(2, 1, 0) + ); + assertEquals(exp, got); + } + + public void test_rank2permutation() { + int[] n = {1, 0, 2}; + Integer[] got = rank2permutation(n, 1); + Integer[] exp = {0, 2, 1}; + assertEquals(Arrays.toString(exp), Arrays.toString(got)); + } + + public static List> permutation2rank(int[] n) { + List> perm = new ArrayList<>(); + Permutation(0, n, perm); + return sortPermutations(perm); + } + + public static Integer[] rank2permutation(int[] n, int r) { + List> rank = permutation2rank(n); + List p = rank.get(r); + return p.toArray(new Integer[p.size()]); + } + + private static List> sortPermutations(List> perm) { + String[] strPerm = new String[perm.size()]; + int i = 0; + for(List _perm : perm) { + strPerm[i] = _perm.stream() + .map(String::valueOf) + .collect(Collectors.joining("")); + i++; + } + + Arrays.sort(strPerm); + + List> sortedPerm = new ArrayList<>(); + for(int j = 0; j < strPerm.length; j++) { + String str = strPerm[j]; + String[] strArray = str.split(""); + int[] intArray = new int[strArray.length]; + + for(int k = 0; k < strArray.length; k++) { + intArray[k] = Integer.parseInt(strArray[k]); + } + + List intList = new ArrayList(intArray.length); + for(int e : intArray) { + intList.add(e); + } + + sortedPerm.add(intList); + } + + return sortedPerm; + } + + // https://www.w3resource.com/java-exercises/array/java-array-exercise-68.php + private static void Permutation(int i, int[] nums, List> result) { + if (i == nums.length - 1) { + List list = new ArrayList<>(); + for(int n : nums) list.add(n); + result.add(list); + } else { + for(int j = i, l = nums.length; j < l; j++) { + int temp = nums[j]; + nums[j] = nums[i]; + nums[i] = temp; + Permutation(i + 1, nums, result); + temp = nums[j]; + nums[j] = nums[i]; + nums[i] = temp; + } + } + } +} diff --git a/challenge-174/mohammad-anwar/perl/ch-2.pl b/challenge-174/mohammad-anwar/perl/ch-2.pl new file mode 100644 index 0000000000..a681a40460 --- /dev/null +++ b/challenge-174/mohammad-anwar/perl/ch-2.pl @@ -0,0 +1,49 @@ +#!/usr/bin/perl + +=head1 + +Week 174: + + https://theweeklychallenge.org/blog/perl-weekly-challenge-174 + +Task #2: Permutation Ranking + + You are given a list of integers with no duplicates, e.g. [0, 1, 2]. + + Write two functions, permutation2rank() which will take the list + and determine its rank (starting at 0) in the set of possible + permutations arranged in lexicographic order, and rank2permutation() + which will take the list and a rank number and produce just that + permutation. + +=cut + +use v5.36; +use Test2::V0; +use Algorithm::Combinatorics qw(permutations); + +is permutation2rank([1, 0, 2]), + [ [0, 1, 2], + [0, 2, 1], + [1, 0, 2], + [1, 2, 0], + [2, 0, 1], + [2, 1, 0], + ]; + +is rank2permutation([0, 1, 2], 1), + [0, 2, 1]; + +done_testing; + +# +# +# METHODS + +sub permutation2rank($array) { + return [ permutations([sort @$array]) ]; +} + +sub rank2permutation($array, $rank) { + return ( @{permutation2rank($array)} )[$rank]; +} diff --git a/challenge-174/mohammad-anwar/python/ch-2.py b/challenge-174/mohammad-anwar/python/ch-2.py new file mode 100644 index 0000000000..96b0492d4f --- /dev/null +++ b/challenge-174/mohammad-anwar/python/ch-2.py @@ -0,0 +1,53 @@ +#!/usr/bin/python3 + +''' + +Week 174: + + https://theweeklychallenge.org/blog/perl-weekly-challenge-174 + +Task #2: Permutation Ranking + + You are given a list of integers with no duplicates, e.g. [0, 1, 2]. + + Write two functions, permutation2rank() which will take the list + and determine its rank (starting at 0) in the set of possible + permutations arranged in lexicographic order, and rank2permutation() + which will take the list and a rank number and produce just that + permutation. + +''' + +import unittest +import itertools + +def permutation2rank(array): + array.sort() + return list(itertools.permutations(array)) + +def rank2permutation(array, rank): + p2r = permutation2rank(array) + return p2r[rank] + +# +# +# Unit test class + +class TestPermutationRanking(unittest.TestCase): + def test_permutation2rank(self): + exp = [ (0, 1, 2), + (0, 2, 1), + (1, 0, 2), + (1, 2, 0), + (2, 0, 1), + (2, 1, 0), + ] + got = permutation2rank([1, 0, 2]) + self.assertEqual(exp, got) + + def test_rank2permutation(self): + exp = (0, 2, 1) + got = rank2permutation([1, 0, 2], 1) + self.assertEqual(exp, got) + +unittest.main() diff --git a/challenge-174/mohammad-anwar/raku/ch-2.raku b/challenge-174/mohammad-anwar/raku/ch-2.raku new file mode 100644 index 0000000000..51bf7b271b --- /dev/null +++ b/challenge-174/mohammad-anwar/raku/ch-2.raku @@ -0,0 +1,47 @@ +#!/usr/bin/env raku + +=begin pod + +Week 174: + + https://theweeklychallenge.org/blog/perl-weekly-challenge-174 + +Task #2: Permutation Ranking + + You are given a list of integers with no duplicates, e.g. [0, 1, 2]. + + Write two functions, permutation2rank() which will take the list + and determine its rank (starting at 0) in the set of possible + permutations arranged in lexicographic order, and rank2permutation() + which will take the list and a rank number and produce just that + permutation. + +=end pod + +use Test; + +is permutation2rank([1, 0, 2]), + [ [0, 1, 2], + [0, 2, 1], + [1, 0, 2], + [1, 2, 0], + [2, 0, 1], + [2, 1, 0], + ]; + +is rank2permutation([0, 1, 2], 1), + [0, 2, 1]; + +done-testing; + +# +# +# METHODS + +sub permutation2rank($array) { + return [ $array.sort.permutations ]; +} + +sub rank2permutation($array, $rank) { + return @(permutation2rank($array)).[$rank]; +} diff --git a/challenge-174/mohammad-anwar/swift/ch-2.swift b/challenge-174/mohammad-anwar/swift/ch-2.swift new file mode 100644 index 0000000000..3817a18e08 --- /dev/null +++ b/challenge-174/mohammad-anwar/swift/ch-2.swift @@ -0,0 +1,153 @@ +import Foundation + +/* + +Week 174: + + https://theweeklychallenge.org/blog/perl-weekly-challenge-174 + +Task #2: Permutation Ranking + + You are given a list of integers with no duplicates, e.g. [0, 1, 2]. + + Write two functions, permutation2rank() which will take the list + and determine its rank (starting at 0) in the set of possible + permutations arranged in lexicographic order, and rank2permutation() + which will take the list and a rank number and produce just that + permutation. + +ACTION: + + $ swift ch-2.swift "1,0,2" 1 + +*/ + +enum ParamError: Error { + case missingList + case missingRank + case invalidList + case invalidRank +} + +do { + let paramCount:Int = Int(CommandLine.argc) + + if paramCount <= 1 { + throw ParamError.missingList + } + + if paramCount <= 2 { + throw ParamError.missingRank + } + + let list:String = CommandLine.arguments[1] + let rank:Int = Int(CommandLine.arguments[2])! + + if isValid(list) { + if rank >= 0 { + let arrays:[Int] = (list.components(separatedBy: ",")).map { Int($0)! } + print(rank2permutation(arrays, rank)) + } + else { + throw ParamError.invalidRank + } + } + else { + throw ParamError.invalidList + } +} +catch ParamError.missingList { + print("Missing list.") +} +catch ParamError.missingRank { + print("Missing rank.") +} +catch ParamError.invalidList { + print("Invalid list.") +} +catch ParamError.invalidRank { + print("Invalid rank.") +} +catch let error { + print(error) +} + +// +// +// Functions + +func permutation2rank(_ arrays:[Int]) -> [[Int]] { + return sortPermutations(arrays.allPermutations()) +} + +func rank2permutation(_ arrays:[Int], _ rank:Int) -> [Int] { + let perms:[[Int]] = permutation2rank(arrays) + return perms[rank] +} + +func sortPermutations(_ perms: [[Int]]) -> [[Int]] { + var strArrays:[String] = [] + for entry in perms { + strArrays.append(entry.reduce("") { $0 + "\($1)" }) + } + + strArrays.sort() + + var intArrays:[[Int]] = [] + for entry in strArrays { + intArrays.append(String(entry).compactMap { Int(String($0)) }) + } + + return intArrays +} + +func isValid(_ list:String) -> Bool { + let pattern = "^[\\-?\\d\\,?\\s?]+$" + let regex = try! NSRegularExpression(pattern: pattern) + let range = NSRange(location: 0, length: list.utf16.count) + + if regex.firstMatch(in: list, options: [], range: range) != nil { + return true + } + else { + return false + } +} + +// +// +// Array extension borrowed from SO. +// https://stackoverflow.com/questions/30586711/order-array-of-objects-into-every-possible-sequence-in-swift + +extension Array { + private var decompose : (head: Element, tail: [Element])? { + return (count > 0) ? (self[0], Array(self[1..(x: T, ys: [T]) -> [[T]] { + if let (head, tail) = ys.decompose { + return [[x] + ys] + between(x: x, ys: tail).map { [head] + $0 } + } else { + return [[x]] + } + } + + private func permutations(xs: [T]) -> [[T]] { + if let (head, tail) = xs.decompose { + return permutations(xs: tail) >>= { permTail in + self.between(x: head, ys: permTail) + } + } else { + return [[]] + } + } + + func allPermutations() -> [[Element]] { + return permutations(xs: self) + } +} + +infix operator >>= +func >>=(xs: [A], f: (A) -> [B]) -> [B] { + return xs.map(f).reduce([], +) +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 0fff4ea13b..920f98e788 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -2,86 +2,70 @@ "chart" : { "type" : "column" }, - "xAxis" : { - "type" : "category" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "tooltip" : { - "pointFormat" : "{point.name}: {point.y:f}
", - "followPointer" : 1, - "headerFormat" : "{series.name}
" - }, - "title" : { - "text" : "The Weekly Challenge - 174" - }, "series" : [ { - "colorByPoint" : 1, "name" : "The Weekly Challenge - 174", + "colorByPoint" : 1, "data" : [ { - "y" : 2, "name" : "Cheok-Yin Fung", - "drilldown" : "Cheok-Yin Fung" + "drilldown" : "Cheok-Yin Fung", + "y" : 2 }, { + "name" : "E. Choroba", "drilldown" : "E. Choroba", - "y" : 2, - "name" : "E. Choroba" + "y" : 2 }, { "drilldown" : "James Smith", - "y" : 3, - "name" : "James Smith" + "name" : "James Smith", + "y" : 3 }, { "name" : "Kjetil Skotheim", - "y" : 2, - "drilldown" : "Kjetil Skotheim" + "drilldown" : "Kjetil Skotheim", + "y" : 2 }, { - "drilldown" : "Laurent Rosenfeld", "y" : 3, + "drilldown" : "Laurent Rosenfeld", "name" : "Laurent Rosenfeld" }, { + "y" : 8, "drilldown" : "Luca Ferrari", - "name" : "Luca Ferrari", - "y" : 8 + "name" : "Luca Ferrari" }, { "y" : 2, - "name" : "Mark Anderson", - "drilldown" : "Mark Anderson" + "drilldown" : "Mark Anderson", + "name" : "Mark Anderson" }, { - "drilldown" : "Mohammad S Anwar", + "y" : 4, "name" : "Mohammad S Anwar", - "y" : 2 + "drilldown" : "Mohammad S Anwar" }, { - "y" : 3, "name" : "Peter Campbell Smith", - "drilldown" : "Peter Campbell Smith" + "drilldown" : "Peter Campbell Smith", + "y" : 3 }, { "y" : 2, - "name" : "PokGoPun", - "drilldown" : "PokGoPun" + "drilldown" : "PokGoPun", + "name" : "PokGoPun" }, { - "drilldown" : "Robert DiCicco", "y" : 3, - "name" : "Robert DiCicco" + "name" : "Robert DiCicco", + "drilldown" : "Robert DiCicco" }, { "y" : 5, - "name" : "Roger Bell_West", - "drilldown" : "Roger Bell_West" + "drilldown" : "Roger Bell_West", + "name" : "Roger Bell_West" }, { "drilldown" : "Simon Proctor", @@ -90,36 +74,38 @@ }, { "y" : 5, - "name" : "Stephen G Lynn", - "drilldown" : "Stephen G Lynn" + "drilldown" : "Stephen G Lynn", + "name" : "Stephen G Lynn" }, { - "drilldown" : "Ulrich Rieke", "y" : 3, + "drilldown" : "Ulrich Rieke", "name" : "Ulrich Rieke" }, { - "y" : 3, + "drilldown" : "W. Luis Mochan", "name" : "W. Luis Mochan", - "drilldown" : "W. Luis Mochan" + "y" : 3 } ] } ], - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } - } + "tooltip" : { + "followPointer" : 1, + "pointFormat" : "{point.name}: {point.y:f}
", + "headerFormat" : "{series.name}
" + }, + "xAxis" : { + "type" : "category" + }, + "subtitle" : { + "text" : "[Champions: 16] Last updated at 2022-07-21 22:35:38 GMT" }, "legend" : { "enabled" : 0 }, - "subtitle" : { - "text" : "[Champions: 16] Last updated at 2022-07-21 08:03:16 GMT" + "title" : { + "text" : "The Weekly Challenge - 174" }, "drilldown" : { "series" : [ @@ -134,14 +120,14 @@ ] }, { - "id" : "E. Choroba", - "name" : "E. Choroba", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "E. Choroba", + "name" : "E. Choroba" }, { "data" : [ @@ -154,18 +140,18 @@ 1 ] ], - "id" : "James Smith", - "name" : "James Smith" + "name" : "James Smith", + "id" : "James Smith" }, { - "name" : "Kjetil Skotheim", - "id" : "Kjetil Skotheim", "data" : [ [ "Perl", 2 ] - ] + ], + "name" : "Kjetil Skotheim", + "id" : "Kjetil Skotheim" }, { "name" : "Laurent Rosenfeld", @@ -186,6 +172,8 @@ ] }, { + "name" : "Luca Ferrari", + "id" : "Luca Ferrari", "data" : [ [ "Raku", @@ -195,9 +183,7 @@ "Blog", 6 ] - ], - "name" : "Luca Ferrari", - "id" : "Luca Ferrari" + ] }, { "data" : [ @@ -206,24 +192,26 @@ 2 ] ], - "id" : "Mark Anderson", - "name" : "Mark Anderson" + "name" : "Mark Anderson", + "id" : "Mark Anderson" }, { - "name" : "Mohammad S Anwar", - "id" : "Mohammad S Anwar", "data" : [ [ "Perl", - 1 + 2 ], [ "Raku", - 1 + 2 ] - ] + ], + "id" : "Mohammad S Anwar", + "name" : "Mohammad S Anwar" }, { + "id" : "Peter Campbell Smith", + "name" : "Peter Campbell Smith", "data" : [ [ "Perl", @@ -233,23 +221,21 @@ "Blog", 1 ] - ], - "name" : "Peter Campbell Smith", - "id" : "Peter Campbell Smith" + ] }, { - "name" : "PokGoPun", - "id" : "PokGoPun", "data" : [ [ "Perl", 2 ] - ] + ], + "name" : "PokGoPun", + "id" : "PokGoPun" }, { - "id" : "Robert DiCicco", "name" : "Robert DiCicco", + "id" : "Robert DiCicco", "data" : [ [ "Perl", @@ -262,8 +248,6 @@ ] }, { - "name" : "Roger Bell_West", - "id" : "Roger Bell_West", "data" : [ [ "Perl", @@ -277,19 +261,23 @@ "Blog", 1 ] - ] + ], + "name" : "Roger Bell_West", + "id" : "Roger Bell_West" }, { + "id" : "Simon Proctor", + "name" : "Simon Proctor", "data" : [ [ "Raku", 1 ] - ], - "name" : "Simon Proctor", - "id" : "Simon Proctor" + ] }, { + "name" : "Stephen G Lynn", + "id" : "Stephen G Lynn", "data" : [ [ "Perl", @@ -303,11 +291,11 @@ "Blog", 1 ] - ], - "id" : "Stephen G Lynn", - "name" : "Stephen G Lynn" + ] }, { + "id" : "Ulrich Rieke", + "name" : "Ulrich Rieke", "data" : [ [ "Perl", @@ -317,9 +305,7 @@ "Raku", 1 ] - ], - "id" : "Ulrich Rieke", - "name" : "Ulrich Rieke" + ] }, { "data" : [ @@ -336,5 +322,19 @@ "id" : "W. Luis Mochan" } ] + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "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 cb754f353c..bfce21190b 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,39 +1,32 @@ { - "legend" : { - "enabled" : "false" - }, - "subtitle" : { - "text" : "Last updated at 2022-07-21 08:03:16 GMT" - }, "yAxis" : { "min" : 0, "title" : { "text" : null } }, - "xAxis" : { - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - } - }, - "type" : "category" + "title" : { + "text" : "The Weekly Challenge Contributions [2019 - 2022]" + }, + "legend" : { + "enabled" : "false" + }, + "subtitle" : { + "text" : "Last updated at 2022-07-21 22:35:38 GMT" }, "series" : [ { - "name" : "Contributions", "dataLabels" : { - "rotation" : -90, "style" : { "fontSize" : "13px", "fontFamily" : "Verdana, sans-serif" }, + "color" : "#FFFFFF", + "format" : "{point.y:.0f}", "enabled" : "true", "y" : 10, - "format" : "{point.y:.0f}", "align" : "right", - "color" : "#FFFFFF" + "rotation" : -90 }, "data" : [ [ @@ -42,20 +35,27 @@ ], [ "Perl", - 8470 + 8471 ], [ "Raku", - 5043 + 5044 ] - ] + ], + "name" : "Contributions" } ], "tooltip" : { "pointFormat" : "{point.y:.0f}" }, - "title" : { - "text" : "The Weekly Challenge Contributions [2019 - 2022]" + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } + } }, "chart" : { "type" : "column" diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index e7414c1188..f1b8235406 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,913 +1,9 @@ { - "chart" : { - "type" : "column" - }, - "xAxis" : { - "type" : "category" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "title" : { - "text" : "The Weekly Challenge Language" - }, - "tooltip" : { - "followPointer" : "true", - "pointFormat" : "Challenge {point.name}: {point.y:f}
", - "headerFormat" : "" - }, - "series" : [ - { - "data" : [ - { - "y" : 161, - "name" : "#001", - "drilldown" : "001" - }, - { - "drilldown" : "002", - "name" : "#002", - "y" : 125 - }, - { - "name" : "#003", - "y" : 83, - "drilldown" : "003" - }, - { - "y" : 99, - "name" : "#004", - "drilldown" : "004" - }, - { - "y" : 78, - "name" : "#005", - "drilldown" : "005" - }, - { - "y" : 58, - "name" : "#006", - "drilldown" : "006" - }, - { - "drilldown" : "007", - "name" : "#007", - "y" : 65 - }, - { - "y" : 78, - "name" : "#008", - "drilldown" : "008" - }, - { - "drilldown" : "009", - "y" : 76, - "name" : "#009" - }, - { - "drilldown" : "010", - "name" : "#010", - "y" : 65 - }, - { - "drilldown" : "011", - "y" : 85, - "name" : "#011" - }, - { - "name" : "#012", - "y" : 89, - "drilldown" : "012" - }, - { - "name" : "#013", - "y" : 85, - "drilldown" : "013" - }, - { - "y" : 101, - "name" : "#014", - "drilldown" : "014" - }, - { - "drilldown" : "015", - "y" : 99, - "name" : "#015" - }, - { - "drilldown" : "016", - "name" : "#016", - "y" : 71 - }, - { - "drilldown" : "017", - "name" : "#017", - "y" : 84 - }, - { - "drilldown" : "018", - "name" : "#018", - "y" : 81 - }, - { - "drilldown" : "019", - "name" : "#019", - "y" : 103 - }, - { - "drilldown" : "020", - "name" : "#020", - "y" : 101 - }, - { - "drilldown" : "021", - "name" : "#021", - "y" : 72 - }, - { - "y" : 68, - "name" : "#022", - "drilldown" : "022" - }, - { - "drilldown" : "023", - "y" : 97, - "name" : "#023" - }, - { - "y" : 75, - "name" : "#024", - "drilldown" : "024" - }, - { - "drilldown" : "025", - "name" : "#025", - "y" : 59 - }, - { - "drilldown" : "026", - "name" : "#026", - "y" : 74 - }, - { - "drilldown" : "027", - "name" : "#027", - "y" : 62 - }, - { - "name" : "#028", - "y" : 82, - "drilldown" : "028" - }, - { - "drilldown" : "029", - "name" : "#029", - "y" : 81 - }, - { - "name" : "#030", - "y" : 119, - "drilldown" : "030" - }, - { - "name" : "#031", - "y" : 91, - "drilldown" : "031" - }, - { - "name" : "#032", - "y" : 96, - "drilldown" : "032" - }, - { - "name" : "#033", - "y" : 112, - "drilldown" : "033" - }, - { - "drilldown" : "034", - "name" : "#034", - "y" : 66 - }, - { - "drilldown" : "035", - "name" : "#035", - "y" : 66 - }, - { - "y" : 70, - "name" : "#036", - "drilldown" : "036" - }, - { - "drilldown" : "037", - "y" : 69, - "name" : "#037" - }, - { - "y" : 70, - "name" : "#038", - "drilldown" : "038" - }, - { - "drilldown" : "039", - "y" : 64, - "name" : "#039" - }, - { - "drilldown" : "040", - "name" : "#040", - "y" : 75 - }, - { - "name" : "#041", - "y" : 78, - "drilldown" : "041" - }, - { - "drilldown" : "042", - "y" : 94, - "name" : "#042" - }, - { - "y" : 70, - "name" : "#043", - "drilldown" : "043" - }, - { - "name" : "#044", - "y" : 87, - "drilldown" : "044" - }, - { - "y" : 98, - "name" : "#045", - "drilldown" : "045" - }, - { - "drilldown" : "046", - "y" : 89, - "name" : "#046" - }, - { - "drilldown" : "047", - "name" : "#047", - "y" : 86 - }, - { - "y" : 110, - "name" : "#048", - "drilldown" : "048" - }, - { - "drilldown" : "049", - "y" : 91, - "name" : "#049" - }, - { - "name" : "#050", - "y" : 100, - "drilldown" : "050" - }, - { - "drilldown" : "051", - "y" : 91, - "name" : "#051" - }, - { - "y" : 93, - "name" : "#052", - "drilldown" : "052" - }, - { - "drilldown" : "053", - "y" : 103, - "name" : "#053" - }, - { - "name" : "#054", - "y" : 105, - "drilldown" : "054" - }, - { - "y" : 90, - "name" : "#055", - "drilldown" : "055" - }, - { - "drilldown" : "056", - "y" : 97, - "name" : "#056" - }, - { - "drilldown" : "057", - "name" : "#057", - "y" : 82 - }, - { - "y" : 71, - "name" : "#058", - "drilldown" : "058" - }, - { - "drilldown" : "059", - "y" : 91, - "name" : "#059" - }, - { - "name" : "#060", - "y" : 87, - "drilldown" : "060" - }, - { - "name" : "#061", - "y" : 83, - "drilldown" : "061" - }, - { - "name" : "#062", - "y" : 60, - "drilldown" : "062" - }, - { - "drilldown" : "063", - "y" : 91, - "name" : "#063" - }, - { - "drilldown" : "064", - "y" : 82, - "name" : "#064" - }, - { - "name" : "#065", - "y" : 75, - "drilldown" : "065" - }, - { - "drilldown" : "066", - "name" : "#066", - "y" : 86 - }, - { - "y" : 92, - "name" : "#067", - "drilldown" : "067" - }, - { - "drilldown" : "068", - "name" : "#068", - "y" : 77 - }, - { - "drilldown" : "069", - "y" : 85, - "name" : "#069" - }, - { - "drilldown" : "070", - "y" : 95, - "name" : "#070" - }, - { - "drilldown" : "071", - "y" : 80, - "name" : "#071" - }, - { - "drilldown" : "072", - "name" : "#072", - "y" : 114 - }, - { - "name" : "#073", - "y" : 112, - "drilldown" : "073" - }, - { - "drilldown" : "074", - "y" : 117, - "name" : "#074" - }, - { - "y" : 117, - "name" : "#075", - "drilldown" : "075" - }, - { - "y" : 101, - "name" : "#076", - "drilldown" : "076" - }, - { - "drilldown" : "077", - "name" : "#077", - "y" : 100 - }, - { - "name" : "#078", - "y" : 127, - "drilldown" : "078" - }, - { - "name" : "#079", - "y" : 122, - "drilldown" : "079" - }, - { - "name" : "#080", - "y" : 127, - "drilldown" : "080" - }, - { - "name" : "#081", - "y" : 114, - "drilldown" : "081" - }, - { - "drilldown" : "082", - "name" : "#082", - "y" : 114 - }, - { - "y" : 127, - "name" : "#083", - "drilldown" : "083" - }, - { - "drilldown" : "084", - "name" : "#084", - "y" : 119 - }, - { - "drilldown" : "085", - "name" : "#085", - "y" : 114 - }, - { - "name" : "#086", - "y" : 104, - "drilldown" : "086" - }, - { - "y" : 101, - "name" : "#087", - "drilldown" : "087" - }, - { - "name" : "#088", - "y" : 121, - "drilldown" : "088" - }, - { - "drilldown" : "089", - "y" : 113, - "name" : "#089" - }, - { - "drilldown" : "090", - "y" : 113, - "name" : "#090" - }, - { - "drilldown" : "091", - "name" : "#091", - "y" : 108 - }, - { - "drilldown" : "092", - "name" : "#092", - "y" : 98 - }, - { - "drilldown" : "093", - "y" : 87, - "name" : "#093" - }, - { - "name" : "#094", - "y" : 87, - "drilldown" : "094" - }, - { - "drilldown" : "095", - "name" : "#095", - "y" : 108 - }, - { - "y" : 108, - "name" : "#096", - "drilldown" : "096" - }, - { - "drilldown" : "097", - "y" : 111, - "name" : "#097" - }, - { - "name" : "#098", - "y" : 108, - "drilldown" : "098" - }, - { - "drilldown" : "099", - "y" : 97, - "name" : "#099" - }, - { - "name" : "#100", - "y" : 120, - "drilldown" : "100" - }, - { - "y" : 83, - "name" : "#101", - "drilldown" : "101" - }, - { - "y" : 90, - "name" : "#102", - "drilldown" : "102" - }, - { - "name" : "#103", - "y" : 79, - "drilldown" : "103" - }, - { - "name" : "#104", - "y" : 85, - "drilldown" : "104" - }, - { - "y" : 75, - "name" : "#105", - "drilldown" : "105" - }, - { - "drilldown" : "106", - "name" : "#106", - "y" : 97 - }, - { - "drilldown" : "107", - "y" : 90, - "name" : "#107" - }, - { - "drilldown" : "108", - "y" : 94, - "name" : "#108" - }, - { - "name" : "#109", - "y" : 107, - "drilldown" : "109" - }, - { - "y" : 108, - "name" : "#110", - "drilldown" : "110" - }, - { - "y" : 91, - "name" : "#111", - "drilldown" : "111" - }, - { - "drilldown" : "112", - "y" : 92, - "name" : "#112" - }, - { - "y" : 92, - "name" : "#113", - "drilldown" : "113" - }, - { - "drilldown" : "114", - "y" : 108, - "name" : "#114" - }, - { - "y" : 96, - "name" : "#115", - "drilldown" : "115" - }, - { - "drilldown" : "116", - "y" : 95, - "name" : "#116" - }, - { - "y" : 97, - "name" : "#117", - "drilldown" : "117" - }, - { - "name" : "#118", - "y" : 83, - "drilldown" : "118" - }, - { - "drilldown" : "119", - "name" : "#119", - "y" : 125 - }, - { - "drilldown" : "120", - "y" : 116, - "name" : "#120" - }, - { - "drilldown" : "121", - "y" : 92, - "name" : "#121" - }, - { - "y" : 110, - "name" : "#122", - "drilldown" : "122" - }, - { - "name" : "#123", - "y" : 105, - "drilldown" : "123" - }, - { - "y" : 85, - "name" : "#124", - "drilldown" : "124" - }, - { - "drilldown" : "125", - "y" : 63, - "name" : "#125" - }, - { - "name" : "#126", - "y" : 113, - "drilldown" : "126" - }, - { - "name" : "#127", - "y" : 110, - "drilldown" : "127" - }, - { - "y" : 71, - "name" : "#128", - "drilldown" : "128" - }, - { - "drilldown" : "129", - "name" : "#129", - "y" : 50 - }, - { - "name" : "#130", - "y" : 73, - "drilldown" : "130" - }, - { - "drilldown" : "131", - "name" : "#131", - "y" : 91 - }, - { - "drilldown" : "132", - "name" : "#132", - "y" : 78 - }, - { - "drilldown" : "133", - "y" : 95, - "name" : "#133" - }, - { - "drilldown" : "134", - "y" : 94, - "name" : "#134" - }, - { - "drilldown" : "135", - "name" : "#135", - "y" : 104 - }, - { - "name" : "#136", - "y" : 95, - "drilldown" : "136" - }, - { - "drilldown" : "137", - "name" : "#137", - "y" : 100 - }, - { - "y" : 102, - "name" : "#138", - "drilldown" : "138" - }, - { - "drilldown" : "139", - "y" : 97, - "name" : "#139" - }, - { - "name" : "#140", - "y" : 103, - "drilldown" : "140" - }, - { - "y" : 102, - "name" : "#141", - "drilldown" : "141" - }, - { - "name" : "#142", - "y" : 83, - "drilldown" : "142" - }, - { - "drilldown" : "143", - "name" : "#143", - "y" : 81 - }, - { - "drilldown" : "144", - "name" : "#144", - "y" : 86 - }, - { - "drilldown" : "145", - "y" : 93, - "name" : "#145" - }, - { - "drilldown" : "146", - "name" : "#146", - "y" : 105 - }, - { - "name" : "#147", - "y" : 106, - "drilldown" : "147" - }, - { - "drilldown" : "148", - "name" : "#148", - "y" : 92 - }, - { - "y" : 88, - "name" : "#149", - "drilldown" : "149" - }, - { - "name" : "#150", - "y" : 106, - "drilldown" : "150" - }, - { - "drilldown" : "151", - "y" : 77, - "name" : "#151" - }, - { - "y" : 80, - "name" : "#152", - "drilldown" : "152" - }, - { - "drilldown" : "153", - "y" : 97, - "name" : "#153" - }, - { - "y" : 106, - "name" : "#154", - "drilldown" : "154" - }, - { - "drilldown" : "155", - "y" : 99, - "name" : "#155" - }, - { - "y" : 96, - "name" : "#156", - "drilldown" : "156" - }, - { - "drilldown" : "157", - "y" : 95, - "name" : "#157" - }, - { - "y" : 105, - "name" : "#158", - "drilldown" : "158" - }, - { - "drilldown" : "159", - "name" : "#159", - "y" : 92 - }, - { - "name" : "#160", - "y" : 119, - "drilldown" : "160" - }, - { - "drilldown" : "161", - "y" : 100, - "name" : "#161" - }, - { - "name" : "#162", - "y" : 92, - "drilldown" : "162" - }, - { - "drilldown" : "163", - "y" : 114, - "name" : "#163" - }, - { - "drilldown" : "164", - "name" : "#164", - "y" : 118 - }, - { - "name" : "#165", - "y" : 76, - "drilldown" : "165" - }, - { - "drilldown" : "166", - "name" : "#166", - "y" : 77 - }, - { - "drilldown" : "167", - "y" : 73, - "name" : "#167" - }, - { - "drilldown" : "168", - "name" : "#168", - "y" : 96 - }, - { - "y" : 105, - "name" : "#169", - "drilldown" : "169" - }, - { - "drilldown" : "170", - "y" : 100, - "name" : "#170" - }, - { - "y" : 109, - "name" : "#171", - "drilldown" : "171" - }, - { - "drilldown" : "172", - "y" : 90, - "name" : "#172" - }, - { - "name" : "#173", - "y" : 107, - "drilldown" : "173" - }, - { - "name" : "#174", - "y" : 49, - "drilldown" : "174" - } - ], - "colorByPoint" : "true", - "name" : "The Weekly Challenge Languages" - } - ], - "plotOptions" : { - "series" : { - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - }, - "borderWidth" : 0 - } - }, "drilldown" : { "series" : [ { + "id" : "001", + "name" : "001", "data" : [ [ "Perl", @@ -921,11 +17,11 @@ "Blog", 11 ] - ], - "id" : "001", - "name" : "001" + ] }, { + "id" : "002", + "name" : "002", "data" : [ [ "Perl", @@ -939,9 +35,7 @@ "Blog", 10 ] - ], - "id" : "002", - "name" : "002" + ] }, { "data" : [ @@ -958,12 +52,10 @@ 9 ] ], - "id" : "003", - "name" : "003" + "name" : "003", + "id" : "003" }, { - "id" : "004", - "name" : "004", "data" : [ [ "Perl", @@ -977,7 +69,9 @@ "Blog", 10 ] - ] + ], + "name" : "004", + "id" : "004" }, { "id" : "005", @@ -1012,8 +106,8 @@ 7 ] ], - "id" : "006", - "name" : "006" + "name" : "006", + "id" : "006" }, { "data" : [ @@ -1030,10 +124,12 @@ 10 ] ], - "name" : "007", - "id" : "007" + "id" : "007", + "name" : "007" }, { + "id" : "008", + "name" : "008", "data" : [ [ "Perl", @@ -1047,11 +143,11 @@ "Blog", 12 ] - ], - "name" : "008", - "id" : "008" + ] }, { + "id" : "009", + "name" : "009", "data" : [ [ "Perl", @@ -1065,13 +161,9 @@ "Blog", 13 ] - ], - "name" : "009", - "id" : "009" + ] }, { - "name" : "010", - "id" : "010", "data" : [ [ "Perl", @@ -1085,9 +177,13 @@ "Blog", 11 ] - ] + ], + "name" : "010", + "id" : "010" }, { + "name" : "011", + "id" : "011", "data" : [ [ "Perl", @@ -1101,13 +197,9 @@ "Blog", 10 ] - ], - "name" : "011", - "id" : "011" + ] }, { - "name" : "012", - "id" : "012", "data" : [ [ "Perl", @@ -1121,7 +213,9 @@ "Blog", 11 ] - ] + ], + "name" : "012", + "id" : "012" }, { "data" : [ @@ -1142,8 +236,6 @@ "name" : "013" }, { - "name" : "014", - "id" : "014", "data" : [ [ "Perl", @@ -1157,11 +249,13 @@ "Blog", 15 ] - ] + ], + "name" : "014", + "id" : "014" }, { - "name" : "015", "id" : "015", + "name" : "015", "data" : [ [ "Perl", @@ -1178,8 +272,6 @@ ] }, { - "id" : "016", - "name" : "016", "data" : [ [ "Perl", @@ -1193,11 +285,11 @@ "Blog", 12 ] - ] + ], + "id" : "016", + "name" : "016" }, { - "id" : "017", - "name" : "017", "data" : [ [ "Perl", @@ -1211,7 +303,9 @@ "Blog", 12 ] - ] + ], + "name" : "017", + "id" : "017" }, { "data" : [ @@ -1232,6 +326,8 @@ "name" : "018" }, { + "name" : "019", + "id" : "019", "data" : [ [ "Perl", @@ -1245,13 +341,9 @@ "Blog", 13 ] - ], - "id" : "019", - "name" : "019" + ] }, { - "name" : "020", - "id" : "020", "data" : [ [ "Perl", @@ -1265,11 +357,11 @@ "Blog", 13 ] - ] + ], + "id" : "020", + "name" : "020" }, { - "name" : "021", - "id" : "021", "data" : [ [ "Perl", @@ -1283,7 +375,9 @@ "Blog", 10 ] - ] + ], + "id" : "021", + "name" : "021" }, { "data" : [ @@ -1300,10 +394,12 @@ 10 ] ], - "id" : "022", - "name" : "022" + "name" : "022", + "id" : "022" }, { + "id" : "023", + "name" : "023", "data" : [ [ "Perl", @@ -1317,9 +413,7 @@ "Blog", 12 ] - ], - "name" : "023", - "id" : "023" + ] }, { "data" : [ @@ -1336,8 +430,8 @@ 11 ] ], - "id" : "024", - "name" : "024" + "name" : "024", + "id" : "024" }, { "data" : [ @@ -1372,10 +466,12 @@ 10 ] ], - "name" : "026", - "id" : "026" + "id" : "026", + "name" : "026" }, { + "name" : "027", + "id" : "027", "data" : [ [ "Perl", @@ -1389,11 +485,11 @@ "Blog", 9 ] - ], - "name" : "027", - "id" : "027" + ] }, { + "id" : "028", + "name" : "028", "data" : [ [ "Perl", @@ -1407,9 +503,7 @@ "Blog", 9 ] - ], - "name" : "028", - "id" : "028" + ] }, { "data" : [ @@ -1426,12 +520,10 @@ 12 ] ], - "name" : "029", - "id" : "029" + "id" : "029", + "name" : "029" }, { - "name" : "030", - "id" : "030", "data" : [ [ "Perl", @@ -1445,11 +537,11 @@ "Blog", 10 ] - ] + ], + "name" : "030", + "id" : "030" }, { - "id" : "031", - "name" : "031", "data" : [ [ "Perl", @@ -1463,7 +555,9 @@ "Blog", 9 ] - ] + ], + "id" : "031", + "name" : "031" }, { "data" : [ @@ -1484,6 +578,8 @@ "name" : "032" }, { + "id" : "033", + "name" : "033", "data" : [ [ "Perl", @@ -1497,9 +593,7 @@ "Blog", 10 ] - ], - "name" : "033", - "id" : "033" + ] }, { "data" : [ @@ -1592,6 +686,8 @@ "name" : "038" }, { + "name" : "039", + "id" : "039", "data" : [ [ "Perl", @@ -1605,11 +701,11 @@ "Blog", 12 ] - ], - "id" : "039", - "name" : "039" + ] }, { + "id" : "040", + "name" : "040", "data" : [ [ "Perl", @@ -1623,9 +719,7 @@ "Blog", 10 ] - ], - "id" : "040", - "name" : "040" + ] }, { "data" : [ @@ -1646,8 +740,6 @@ "id" : "041" }, { - "name" : "042", - "id" : "042", "data" : [ [ "Perl", @@ -1661,11 +753,11 @@ "Blog", 11 ] - ] + ], + "name" : "042", + "id" : "042" }, { - "id" : "043", - "name" : "043", "data" : [ [ "Perl", @@ -1679,9 +771,13 @@ "Blog", 11 ] - ] + ], + "name" : "043", + "id" : "043" }, { + "id" : "044", + "name" : "044", "data" : [ [ "Perl", @@ -1695,9 +791,7 @@ "Blog", 11 ] - ], - "name" : "044", - "id" : "044" + ] }, { "id" : "045", @@ -1718,8 +812,6 @@ ] }, { - "name" : "046", - "id" : "046", "data" : [ [ "Perl", @@ -1733,11 +825,13 @@ "Blog", 10 ] - ] + ], + "name" : "046", + "id" : "046" }, { - "name" : "047", "id" : "047", + "name" : "047", "data" : [ [ "Perl", @@ -1754,6 +848,8 @@ ] }, { + "name" : "048", + "id" : "048", "data" : [ [ "Perl", @@ -1767,11 +863,11 @@ "Blog", 12 ] - ], - "id" : "048", - "name" : "048" + ] }, { + "name" : "049", + "id" : "049", "data" : [ [ "Perl", @@ -1785,13 +881,9 @@ "Blog", 12 ] - ], - "id" : "049", - "name" : "049" + ] }, { - "name" : "050", - "id" : "050", "data" : [ [ "Perl", @@ -1805,7 +897,9 @@ "Blog", 12 ] - ] + ], + "name" : "050", + "id" : "050" }, { "data" : [ @@ -1822,8 +916,8 @@ 11 ] ], - "name" : "051", - "id" : "051" + "id" : "051", + "name" : "051" }, { "data" : [ @@ -1862,6 +956,8 @@ "id" : "053" }, { + "id" : "054", + "name" : "054", "data" : [ [ "Perl", @@ -1875,9 +971,7 @@ "Blog", 18 ] - ], - "id" : "054", - "name" : "054" + ] }, { "id" : "055", @@ -1898,6 +992,8 @@ ] }, { + "name" : "056", + "id" : "056", "data" : [ [ "Perl", @@ -1911,9 +1007,7 @@ "Blog", 16 ] - ], - "name" : "056", - "id" : "056" + ] }, { "data" : [ @@ -1934,6 +1028,8 @@ "id" : "057" }, { + "id" : "058", + "name" : "058", "data" : [ [ "Perl", @@ -1947,13 +1043,11 @@ "Blog", 13 ] - ], - "name" : "058", - "id" : "058" + ] }, { - "id" : "059", "name" : "059", + "id" : "059", "data" : [ [ "Perl", @@ -1970,8 +1064,6 @@ ] }, { - "name" : "060", - "id" : "060", "data" : [ [ "Perl", @@ -1985,11 +1077,11 @@ "Blog", 16 ] - ] + ], + "id" : "060", + "name" : "060" }, { - "id" : "061", - "name" : "061", "data" : [ [ "Perl", @@ -2003,9 +1095,13 @@ "Blog", 14 ] - ] + ], + "id" : "061", + "name" : "061" }, { + "name" : "062", + "id" : "062", "data" : [ [ "Perl", @@ -2019,13 +1115,11 @@ "Blog", 11 ] - ], - "id" : "062", - "name" : "062" + ] }, { - "id" : "063", "name" : "063", + "id" : "063", "data" : [ [ "Perl", @@ -2042,6 +1136,8 @@ ] }, { + "name" : "064", + "id" : "064", "data" : [ [ "Perl", @@ -2055,9 +1151,7 @@ "Blog", 16 ] - ], - "name" : "064", - "id" : "064" + ] }, { "id" : "065", @@ -2078,8 +1172,6 @@ ] }, { - "name" : "066", - "id" : "066", "data" : [ [ "Perl", @@ -2093,9 +1185,13 @@ "Blog", 14 ] - ] + ], + "name" : "066", + "id" : "066" }, { + "id" : "067", + "name" : "067", "data" : [ [ "Perl", @@ -2109,13 +1205,9 @@ "Blog", 18 ]