From fc69d415d4c3506616f1ed617989f1d7eb4cb02c Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Tue, 6 Oct 2020 14:36:20 +0100 Subject: - Added solutions by Shawn Wagner. --- challenge-081/shawn-wagner/ocaml/ch-1.ml | 34 + challenge-081/shawn-wagner/ocaml/ch-2.ml | 39 + challenge-081/shawn-wagner/ocaml/ch1.ml | 34 - challenge-081/shawn-wagner/ocaml/ch2.ml | 39 - challenge-081/shawn-wagner/perl/ch-1.pl | 32 + challenge-081/shawn-wagner/perl/ch-2.pl | 27 + challenge-081/shawn-wagner/perl/ch1.pl | 32 - challenge-081/shawn-wagner/perl/ch2.pl | 27 - challenge-081/shawn-wagner/tcl/ch-1.tcl | 27 + challenge-081/shawn-wagner/tcl/ch-2.tcl | 20 + challenge-081/shawn-wagner/tcl/ch1.tcl | 27 - challenge-081/shawn-wagner/tcl/ch2.tcl | 20 - stats/pwc-current.json | 259 +-- stats/pwc-language-breakdown-summary.json | 54 +- stats/pwc-language-breakdown.json | 3214 ++++++++++++++--------------- stats/pwc-leaders.json | 348 ++-- stats/pwc-summary-1-30.json | 54 +- stats/pwc-summary-121-150.json | 100 +- stats/pwc-summary-151-180.json | 112 +- stats/pwc-summary-181-210.json | 70 +- stats/pwc-summary-31-60.json | 106 +- stats/pwc-summary-61-90.json | 104 +- stats/pwc-summary-91-120.json | 102 +- stats/pwc-summary.json | 58 +- 24 files changed, 2477 insertions(+), 2462 deletions(-) create mode 100644 challenge-081/shawn-wagner/ocaml/ch-1.ml create mode 100644 challenge-081/shawn-wagner/ocaml/ch-2.ml delete mode 100644 challenge-081/shawn-wagner/ocaml/ch1.ml delete mode 100644 challenge-081/shawn-wagner/ocaml/ch2.ml create mode 100755 challenge-081/shawn-wagner/perl/ch-1.pl create mode 100755 challenge-081/shawn-wagner/perl/ch-2.pl delete mode 100755 challenge-081/shawn-wagner/perl/ch1.pl delete mode 100755 challenge-081/shawn-wagner/perl/ch2.pl create mode 100755 challenge-081/shawn-wagner/tcl/ch-1.tcl create mode 100755 challenge-081/shawn-wagner/tcl/ch-2.tcl delete mode 100755 challenge-081/shawn-wagner/tcl/ch1.tcl delete mode 100755 challenge-081/shawn-wagner/tcl/ch2.tcl diff --git a/challenge-081/shawn-wagner/ocaml/ch-1.ml b/challenge-081/shawn-wagner/ocaml/ch-1.ml new file mode 100644 index 0000000000..71306a0770 --- /dev/null +++ b/challenge-081/shawn-wagner/ocaml/ch-1.ml @@ -0,0 +1,34 @@ +(* My other solutions use hash tables; let's use a set here instead *) +module StringSet = Set.Make(String) + +let substrings s = + let subs = ref StringSet.empty in + let len = String.length s in + for start = 0 to len - 1 do + for slen = 1 to len - start do + subs := StringSet.add (String.sub s start slen) !subs + done + done; + !subs + +let repeat s n = + let len = String.length s in + let newlen = len * n in + String.init newlen (function i -> String.get s (i mod len)) + +(* And a non-regular epxression test *) +let ismadeof s sub = + let reps = (String.length s) / (String.length sub) in + String.equal (repeat sub reps) s + +let task1 a b = + let subs = StringSet.inter (substrings a) (substrings b) in + let f sub = + if ismadeof a sub && ismadeof b sub then + Printf.printf "%s " sub in + StringSet.iter f subs; + print_newline () + +let _ = + task1 "abcdabcd" "abcdabcdabcdabcd"; + task1 "aaa" "a" diff --git a/challenge-081/shawn-wagner/ocaml/ch-2.ml b/challenge-081/shawn-wagner/ocaml/ch-2.ml new file mode 100644 index 0000000000..34a9131687 --- /dev/null +++ b/challenge-081/shawn-wagner/ocaml/ch-2.ml @@ -0,0 +1,39 @@ +let find_def tbl key def = + match Hashtbl.find_opt tbl key with + | Some x -> x + | None -> def + +let re = Str.regexp "[.\"(),]\\|--\\|'s" + +let strip_special word = Str.global_replace re "" word + +let task2 filename = + let ib = Scanf.Scanning.open_in filename in + let words = Hashtbl.create 100 in + let add_word word = + if word <> "" then begin + let word = strip_special word in + Hashtbl.replace words word ((find_def words word 0) + 1); + true + end else + false in + while Scanf.bscanf ib " %s" add_word do + () + done; + Scanf.Scanning.close_in ib; + let maxfreq = ref 0 in + let frequencies = Hashtbl.create (Hashtbl.length words) in + Hashtbl.iter (fun w count -> Hashtbl.add frequencies count w; + maxfreq := max count !maxfreq) words; + for count = 1 to !maxfreq do + if Hashtbl.mem frequencies count then begin + Printf.printf "%d " count; + List.iter (function word -> Printf.printf "%s " word) + (List.sort String.compare (Hashtbl.find_all frequencies count)); + print_newline() + end + done + +let _ = + task2 "input" + diff --git a/challenge-081/shawn-wagner/ocaml/ch1.ml b/challenge-081/shawn-wagner/ocaml/ch1.ml deleted file mode 100644 index 71306a0770..0000000000 --- a/challenge-081/shawn-wagner/ocaml/ch1.ml +++ /dev/null @@ -1,34 +0,0 @@ -(* My other solutions use hash tables; let's use a set here instead *) -module StringSet = Set.Make(String) - -let substrings s = - let subs = ref StringSet.empty in - let len = String.length s in - for start = 0 to len - 1 do - for slen = 1 to len - start do - subs := StringSet.add (String.sub s start slen) !subs - done - done; - !subs - -let repeat s n = - let len = String.length s in - let newlen = len * n in - String.init newlen (function i -> String.get s (i mod len)) - -(* And a non-regular epxression test *) -let ismadeof s sub = - let reps = (String.length s) / (String.length sub) in - String.equal (repeat sub reps) s - -let task1 a b = - let subs = StringSet.inter (substrings a) (substrings b) in - let f sub = - if ismadeof a sub && ismadeof b sub then - Printf.printf "%s " sub in - StringSet.iter f subs; - print_newline () - -let _ = - task1 "abcdabcd" "abcdabcdabcdabcd"; - task1 "aaa" "a" diff --git a/challenge-081/shawn-wagner/ocaml/ch2.ml b/challenge-081/shawn-wagner/ocaml/ch2.ml deleted file mode 100644 index 34a9131687..0000000000 --- a/challenge-081/shawn-wagner/ocaml/ch2.ml +++ /dev/null @@ -1,39 +0,0 @@ -let find_def tbl key def = - match Hashtbl.find_opt tbl key with - | Some x -> x - | None -> def - -let re = Str.regexp "[.\"(),]\\|--\\|'s" - -let strip_special word = Str.global_replace re "" word - -let task2 filename = - let ib = Scanf.Scanning.open_in filename in - let words = Hashtbl.create 100 in - let add_word word = - if word <> "" then begin - let word = strip_special word in - Hashtbl.replace words word ((find_def words word 0) + 1); - true - end else - false in - while Scanf.bscanf ib " %s" add_word do - () - done; - Scanf.Scanning.close_in ib; - let maxfreq = ref 0 in - let frequencies = Hashtbl.create (Hashtbl.length words) in - Hashtbl.iter (fun w count -> Hashtbl.add frequencies count w; - maxfreq := max count !maxfreq) words; - for count = 1 to !maxfreq do - if Hashtbl.mem frequencies count then begin - Printf.printf "%d " count; - List.iter (function word -> Printf.printf "%s " word) - (List.sort String.compare (Hashtbl.find_all frequencies count)); - print_newline() - end - done - -let _ = - task2 "input" - diff --git a/challenge-081/shawn-wagner/perl/ch-1.pl b/challenge-081/shawn-wagner/perl/ch-1.pl new file mode 100755 index 0000000000..cc1b41e5eb --- /dev/null +++ b/challenge-081/shawn-wagner/perl/ch-1.pl @@ -0,0 +1,32 @@ +#!/usr/bin/env perl +use warnings; +use strict; +use feature qw/say/; + +sub substrings :prototype($) { + my $s = shift; + my $len = length $s; + my %subs; + for my $start (0 .. $len - 1) { + for my $slen (1 .. $len - $start) { + $subs{substr $s, $start, $slen} = 1; + } + } + return keys %subs; +} + +sub task1 :prototype($$) { + my ($A, $B) = @_; + my (@common, %subs); + for (substrings($A), substrings($B)) { + $subs{$_} += 1; + } + while (my ($substr, $count) = each %subs) { + next if $count != 2; + push @common, $substr if ($A =~ /^(?:$substr)+$/ && $B =~ /^(?:$substr)+$/); + } + say join(" ", sort @common); +} + +task1 "abcdabcd", "abcdabcdabcdabcd"; +task1 "aaa", "aa"; diff --git a/challenge-081/shawn-wagner/perl/ch-2.pl b/challenge-081/shawn-wagner/perl/ch-2.pl new file mode 100755 index 0000000000..ca65fa440a --- /dev/null +++ b/challenge-081/shawn-wagner/perl/ch-2.pl @@ -0,0 +1,27 @@ +#!/usr/bin/env perl +use warnings; +use strict; +use feature qw/say/; +use experimental qw/postderef/; + +my %words; + +open my $file, "<", "input" or die "Unable to open input: $!\n"; +while (<$file>) { + chomp; + s/[."(),]|--|'s//g; + for my $word (split /\s+/, $_) { + $words{$word}++; + } +} +close $file; + +my %frequencies; +while (my ($word, $count) = each %words) { + push @{$frequencies{$count}}, $word; +} + +for my $count (sort { $a <=> $b } keys %frequencies) { + say $count, " ", join(" ", sort $frequencies{$count}->@*); +} + diff --git a/challenge-081/shawn-wagner/perl/ch1.pl b/challenge-081/shawn-wagner/perl/ch1.pl deleted file mode 100755 index cc1b41e5eb..0000000000 --- a/challenge-081/shawn-wagner/perl/ch1.pl +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env perl -use warnings; -use strict; -use feature qw/say/; - -sub substrings :prototype($) { - my $s = shift; - my $len = length $s; - my %subs; - for my $start (0 .. $len - 1) { - for my $slen (1 .. $len - $start) { - $subs{substr $s, $start, $slen} = 1; - } - } - return keys %subs; -} - -sub task1 :prototype($$) { - my ($A, $B) = @_; - my (@common, %subs); - for (substrings($A), substrings($B)) { - $subs{$_} += 1; - } - while (my ($substr, $count) = each %subs) { - next if $count != 2; - push @common, $substr if ($A =~ /^(?:$substr)+$/ && $B =~ /^(?:$substr)+$/); - } - say join(" ", sort @common); -} - -task1 "abcdabcd", "abcdabcdabcdabcd"; -task1 "aaa", "aa"; diff --git a/challenge-081/shawn-wagner/perl/ch2.pl b/challenge-081/shawn-wagner/perl/ch2.pl deleted file mode 100755 index ca65fa440a..0000000000 --- a/challenge-081/shawn-wagner/perl/ch2.pl +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env perl -use warnings; -use strict; -use feature qw/say/; -use experimental qw/postderef/; - -my %words; - -open my $file, "<", "input" or die "Unable to open input: $!\n"; -while (<$file>) { - chomp; - s/[."(),]|--|'s//g; - for my $word (split /\s+/, $_) { - $words{$word}++; - } -} -close $file; - -my %frequencies; -while (my ($word, $count) = each %words) { - push @{$frequencies{$count}}, $word; -} - -for my $count (sort { $a <=> $b } keys %frequencies) { - say $count, " ", join(" ", sort $frequencies{$count}->@*); -} - diff --git a/challenge-081/shawn-wagner/tcl/ch-1.tcl b/challenge-081/shawn-wagner/tcl/ch-1.tcl new file mode 100755 index 0000000000..bc0b95423b --- /dev/null +++ b/challenge-081/shawn-wagner/tcl/ch-1.tcl @@ -0,0 +1,27 @@ +#!/usr/bin/env tclsh + +proc substrings {s} { + set len [string length $s] + for {set start 0} {$start < $len} {incr start} { + for {set end $start} {$end < $len} {incr end} { + dict set substrings [string range $s $start $end] 1 + } + } + return [dict keys $substrings] +} + +proc task1 {A B} { + foreach substr [concat [substrings $A] [substrings $B]] { + dict incr subs $substr + } + dict for {substr count} $subs { + if {$count != 2} { continue } + if {[regexp "^(?:$substr)+$" $A] && [regexp "^(?:$substr)+$" $B]} { + lappend common $substr + } + } + puts [lsort $common] +} + +task1 abcdabcd abcdabcdabcdabcd +task1 aaa aa diff --git a/challenge-081/shawn-wagner/tcl/ch-2.tcl b/challenge-081/shawn-wagner/tcl/ch-2.tcl new file mode 100755 index 0000000000..6bee2cb108 --- /dev/null +++ b/challenge-081/shawn-wagner/tcl/ch-2.tcl @@ -0,0 +1,20 @@ +#!/usr/bin/env tclsh + +proc task2 {input} { + set fp [open $input] + while {[gets $fp line] >= 0} { + regsub -all {[.""(),]|--|'s} $line "" line + foreach word [split $line] { + dict incr words $word + } + } + close $fp + dict for {word count} $words { + dict lappend frequencies $count $word + } + foreach count [lsort -integer [dict keys $frequencies]] { + puts "$count [lsort [dict get $frequencies $count]]" + } +} + +task2 input diff --git a/challenge-081/shawn-wagner/tcl/ch1.tcl b/challenge-081/shawn-wagner/tcl/ch1.tcl deleted file mode 100755 index bc0b95423b..0000000000 --- a/challenge-081/shawn-wagner/tcl/ch1.tcl +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env tclsh - -proc substrings {s} { - set len [string length $s] - for {set start 0} {$start < $len} {incr start} { - for {set end $start} {$end < $len} {incr end} { - dict set substrings [string range $s $start $end] 1 - } - } - return [dict keys $substrings] -} - -proc task1 {A B} { - foreach substr [concat [substrings $A] [substrings $B]] { - dict incr subs $substr - } - dict for {substr count} $subs { - if {$count != 2} { continue } - if {[regexp "^(?:$substr)+$" $A] && [regexp "^(?:$substr)+$" $B]} { - lappend common $substr - } - } - puts [lsort $common] -} - -task1 abcdabcd abcdabcdabcdabcd -task1 aaa aa diff --git a/challenge-081/shawn-wagner/tcl/ch2.tcl b/challenge-081/shawn-wagner/tcl/ch2.tcl deleted file mode 100755 index 6bee2cb108..0000000000 --- a/challenge-081/shawn-wagner/tcl/ch2.tcl +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env tclsh - -proc task2 {input} { - set fp [open $input] - while {[gets $fp line] >= 0} { - regsub -all {[.""(),]|--|'s} $line "" line - foreach word [split $line] { - dict incr words $word - } - } - close $fp - dict for {word count} $words { - dict lappend frequencies $count $word - } - foreach count [lsort -integer [dict keys $frequencies]] { - puts "$count [lsort [dict get $frequencies $count]]" - } -} - -task2 input diff --git a/stats/pwc-current.json b/stats/pwc-current.json index d297e3f026..8206df6734 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,102 +1,6 @@ { - "tooltip" : { - "headerFormat" : "{series.name}
", - "followPointer" : 1, - "pointFormat" : "{point.name}: {point.y:f}
" - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } - } - }, - "chart" : { - "type" : "column" - }, - "subtitle" : { - "text" : "[Champions: 13] Last updated at 2020-10-06 13:20:21 GMT" - }, - "series" : [ - { - "name" : "Perl Weekly Challenge - 081", - "data" : [ - { - "y" : 4, - "name" : "Andinus", - "drilldown" : "Andinus" - }, - { - "y" : 2, - "name" : "E. Choroba", - "drilldown" : "E. Choroba" - }, - { - "y" : 2, - "name" : "James Smith", - "drilldown" : "James Smith" - }, - { - "y" : 2, - "name" : "Lars Thegler", - "drilldown" : "Lars Thegler" - }, - { - "y" : 2, - "drilldown" : "Mark Anderson", - "name" : "Mark Anderson" - }, - { - "y" : 2, - "name" : "Markus Holzer", - "drilldown" : "Markus Holzer" - }, - { - "y" : 1, - "drilldown" : "Myoungjin Jeon", - "name" : "Myoungjin Jeon" - }, - { - "y" : 2, - "name" : "Niels van Dijke", - "drilldown" : "Niels van Dijke" - }, - { - "drilldown" : "Pete Houston", - "name" : "Pete Houston", - "y" : 2 - }, - { - "name" : "Roger Bell_West", - "drilldown" : "Roger Bell_West", - "y" : 4 - }, - { - "y" : 3, - "drilldown" : "Simon Green", - "name" : "Simon Green" - }, - { - "name" : "Simon Proctor", - "drilldown" : "Simon Proctor", - "y" : 2 - }, - { - "y" : 2, - "drilldown" : "Ulrich Rieke", - "name" : "Ulrich Rieke" - } - ], - "colorByPoint" : 1 - } - ], - "xAxis" : { - "type" : "category" - }, - "legend" : { - "enabled" : 0 + "title" : { + "text" : "Perl Weekly Challenge - 081" }, "drilldown" : { "series" : [ @@ -121,8 +25,8 @@ 2 ] ], - "id" : "E. Choroba", - "name" : "E. Choroba" + "name" : "E. Choroba", + "id" : "E. Choroba" }, { "id" : "James Smith", @@ -141,28 +45,28 @@ 2 ] ], - "name" : "Lars Thegler", - "id" : "Lars Thegler" + "id" : "Lars Thegler", + "name" : "Lars Thegler" }, { + "name" : "Mark Anderson", + "id" : "Mark Anderson", "data" : [ [ "Raku", 2 ] - ], - "name" : "Mark Anderson", - "id" : "Mark Anderson" + ] }, { - "id" : "Markus Holzer", - "name" : "Markus Holzer", "data" : [ [ "Raku", 2 ] - ] + ], + "id" : "Markus Holzer", + "name" : "Markus Holzer" }, { "id" : "Myoungjin Jeon", @@ -185,14 +89,14 @@ "name" : "Niels van Dijke" }, { + "id" : "Pete Houston", + "name" : "Pete Houston", "data" : [ [ "Perl", 2 ] - ], - "name" : "Pete Houston", - "id" : "Pete Houston" + ] }, { "name" : "Roger Bell_West", @@ -209,8 +113,16 @@ ] }, { - "id" : "Simon Green", - "name" : "Simon Green", + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Shawn Wagner", + "name" : "Shawn Wagner" + }, + { "data" : [ [ "Perl", @@ -220,21 +132,21 @@ "Blog", 1 ] - ] + ], + "name" : "Simon Green", + "id" : "Simon Green" }, { + "name" : "Simon Proctor", + "id" : "Simon Proctor", "data" : [ [ "Raku", 2 ] - ], - "name" : "Simon Proctor", - "id" : "Simon Proctor" + ] }, { - "name" : "Ulrich Rieke", - "id" : "Ulrich Rieke", "data" : [ [ "Perl", @@ -244,16 +156,119 @@ "Raku", 1 ] - ] + ], + "name" : "Ulrich Rieke", + "id" : "Ulrich Rieke" } ] }, - "title" : { - "text" : "Perl Weekly Challenge - 081" + "tooltip" : { + "followPointer" : 1, + "pointFormat" : "{point.name}: {point.y:f}
", + "headerFormat" : "{series.name}
" }, "yAxis" : { "title" : { "text" : "Total Solutions" } + }, + "legend" : { + "enabled" : 0 + }, + "xAxis" : { + "type" : "category" + }, + "chart" : { + "type" : "column" + }, + "series" : [ + { + "name" : "Perl Weekly Challenge - 081", + "colorByPoint" : 1, + "data" : [ + { + "drilldown" : "Andinus", + "name" : "Andinus", + "y" : 4 + }, + { + "y" : 2, + "name" : "E. Choroba", + "drilldown" : "E. Choroba" + }, + { + "drilldown" : "James Smith", + "name" : "James Smith", + "y" : 2 + }, + { + "y" : 2, + "drilldown" : "Lars Thegler", + "name" : "Lars Thegler" + }, + { + "y" : 2, + "name" : "Mark Anderson", + "drilldown" : "Mark Anderson" + }, + { + "name" : "Markus Holzer", + "drilldown" : "Markus Holzer", + "y" : 2 + }, + { + "name" : "Myoungjin Jeon", + "drilldown" : "Myoungjin Jeon", + "y" : 1 + }, + { + "y" : 2, + "drilldown" : "Niels van Dijke", + "name" : "Niels van Dijke" + }, + { + "drilldown" : "Pete Houston", + "name" : "Pete Houston", + "y" : 2 + }, + { + "y" : 4, + "name" : "Roger Bell_West", + "drilldown" : "Roger Bell_West" + }, + { + "y" : 2, + "drilldown" : "Shawn Wagner", + "name" : "Shawn Wagner" + }, + { + "name" : "Simon Green", + "drilldown" : "Simon Green", + "y" : 3 + }, + { + "drilldown" : "Simon Proctor", + "name" : "Simon Proctor", + "y" : 2 + }, + { + "name" : "Ulrich Rieke", + "drilldown" : "Ulrich Rieke", + "y" : 2 + } + ] + } + ], + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } + } + }, + "subtitle" : { + "text" : "[Champions: 14] Last updated at 2020-10-06 13:34:35 GMT" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 6013f33907..3bc070bf7b 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,40 +1,31 @@ { - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 - }, - "title" : { - "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" - }, - "legend" : { - "enabled" : "false" - }, "xAxis" : { - "type" : "category", "labels" : { "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" } - } + }, + "type" : "category" + }, + "subtitle" : { + "text" : "Last updated at 2020-10-06 13:34:35 GMT" }, "series" : [ { + "name" : "Contributions", "dataLabels" : { + "align" : "right", + "format" : "{point.y:.0f}", + "enabled" : "true", + "y" : 10, "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" }, - "y" : 10, "color" : "#FFFFFF", - "format" : "{point.y:.0f}", - "rotation" : -90, - "enabled" : "true", - "align" : "right" + "rotation" : -90 }, - "name" : "Contributions", "data" : [ [ "Blog", @@ -42,7 +33,7 @@ ], [ "Perl", - 3478 + 3480 ], [ "Raku", @@ -54,10 +45,19 @@ "chart" : { "type" : "column" }, - "subtitle" : { - "text" : "Last updated at 2020-10-06 13:20:21 GMT" + "title" : { + "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" + }, + "yAxis" : { + "title" : { + "text" : null + }, + "min" : 0 }, "tooltip" : { "pointFormat" : "{point.y:.0f}" + }, + "legend" : { + "enabled" : "false" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 9437a9b85c..13dacc42ed 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,1599 +1,112 @@ { - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2020-10-06 13:20:21 GMT" - }, - "chart" : { - "type" : "column" - }, "plotOptions" : { "series" : { "borderWidth" : 0, "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" + "format" : "{point.y}", + "enabled" : 1 } } }, - "tooltip" : { - "pointFormat" : "Challenge {point.name}: {point.y:f}
", - "followPointer" : "true", - "headerFormat" : "" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "title" : { - "text" : "Perl Weekly Challenge Language" - }, - "drilldown" : { - "series" : [ - { - "data" : [ - [ - "Perl", - 88 - ], - [ - "Raku", - 45 - ], - [ - "Blog", - 11 - ] - ], - "name" : "001", - "id" : "001" - }, - { - "data" : [ - [ - "Perl", - 69 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 10 - ] - ], - "id" : "002", - "name" : "002" - }, - { - "data" : [ - [ - "Perl", - 34 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 9 - ] - ], - "name" : "003", - "id" : "003" - }, - { - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 10 - ] - ], - "id" : "004", - "name" : "004" - }, - { - "data" : [ - [ - "Perl", - 36 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 12 - ] - ], - "name" : "005", - "id" : "005" - }, - { - "data" : [ - [ - "Perl", - 29 - ], - [ - "Raku", - 16 - ], - [ - "Blog", - 7 - ] - ], - "id" : "006", - "name" : "006" - }, - { - "id" : "007", - "name" : "007", - "data" : [ - [ - "Perl", - 28 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "id" : "008", - "name" : "008", - "data" : [ - [ - "Perl", - 40 - ], - [ - "Raku", - 20 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 13 - ] - ], - "id" : "009", - "name" : "009" - }, - { - "name" : "010", - "id" : "010", - "data" : [ - [ - "Perl", - 32 - ], - [ - "Raku", - 17 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 43 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 10 - ] - ], - "id" : "011", - "name" : "011" - }, - { - "id" : "012", - "name" : "012", - "data" : [ - [ - "Perl", - 44 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 13 - ] - ], - "id" : "013", - "name" : "013" - }, - { - "name" : "014", - "id" : "014", - "data" : [ - [ - "Perl", - 52 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "id" : "015", - "name" : "015", - "data" : [ - [ - "Perl", - 52 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 12 - ] - ], - "name" : "016", - "id" : "016" - }, - { - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 25 - ], - [ - "Blog", - 12 - ] - ], - "name" : "017", - "id" : "017" - }, - { - "name" : "018", - "id" : "018", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 14 - ] - ] - }, - { - "name" : "019", - "id" : "019", - "data" : [ - [ - "Perl", - 52 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "name" : "020", - "id" : "020", - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 35 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 10 - ] - ], - "name" : "021", - "id" : "021" - }, - { - "data" : [ - [ - "Perl", - 32 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 10 - ] - ], - "id" : "022", - "name" : "022" - }, - { - "data" : [ - [ - "Perl", - 49 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 12 - ] - ], - "id" : "023", - "name" : "023" - }, - { - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 11 - ] - ], - "name" : "024", - "id" : "024" - }, - { - "name" : "025", - "id" : "025", - "data" : [ - [ - "Perl", - 26 - ], - [ - "Raku", - 17 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 10 - ] - ], - "name" : "026", - "id" : "026" - }, - { - "data" : [ - [ - "Perl", - 29 - ], - [ - "Raku", - 20 - ], - [ - "Blog", - 9 - ] - ], - "name" : "027", - "id" : "027" - }, - { - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 9 - ] - ], - "id" : "028", - "name" : "028" - }, - { - "data" : [ - [ - "Perl", - 40 - ], - [ - "Raku", - 25 - ], - [ - "Blog", - 12 - ] - ], - "id" : "029", - "name" : "029" - }, - { - "data" : [ - [ - "Perl", - 74 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 10 - ] - ], - "id" : "030", - "name" : "030" - }, - { - "id" : "031", - "name" : "031", - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "name" : "032", - "id" : "032", - "data" : [ - [ - "Perl", - 57 - ], - [ - "Raku", - 25 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 62 - ], - [ - "Raku", - 36 - ], - [ - "Blog", - 10 - ] - ], - "name" : "033", - "id" : "033" - }, - { - "data" : [ - [ - "Perl", - 30 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 11 - ] - ], - "id" : "034", - "name" : "034" - }, - { - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 20 - ], - [ - "Blog", - 9 - ] - ], - "name" : "035", - "id" : "035" - }, - { - "id" : "036", - "name" : "036", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 20 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 34 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 9 - ] - ], - "name" : "037", - "id" : "037" - }, - { - "data" : [ - [ - "Perl", - 31 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 12 - ] - ], - "id" : "038", - "name" : "038" - }, - { - "data" : [ - [ - "Perl", - 29 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 12 - ] - ], - "id" : "039", - "name" : "039" - }, - { - "id" : "040", - "name" : "040", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 9 - ] - ], - "id" : "041", - "name" : "041" - }, - { - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 11 - ] - ], - "name" : "042", - "id" : "042" - }, - { - "id" : "043", - "name" : "043", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "id" : "044", - "name" : "044", - "data" : [ - [ - "Perl", - 41 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "id" : "045", - "name" : "045", - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "name" : "046", - "id" : "046", - "data" : [ - [ - "Perl", - 44 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 43 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 10 - ] - ], - "id" : "047", - "name" : "047" - }, - { - "data" : [ - [ - "Perl", - 59 - ], - [ - "Raku", - 35 - ], - [ - "Blog", - 12 - ] - ], - "name" : "048", - "id" : "048" - }, - { - "data" : [ - [ - "Perl", - 48 - ], - [ - "Raku", - 25 - ], - [ - "Blog", - 12 - ] - ], - "name" : "049", - "id" : "049" - }, - { - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 12 - ] - ], - "name" : "050", - "id" : "050" - }, - { - "name" : "051", - "id" : "051", - "data" : [ - [ - "Perl", - 46 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 14 - ] - ], - "name" : "052", - "id" : "052" - }, - { - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 39 - ], - [ - "Blog", - 15 - ] - ], - "name" : "053", - "id" : "053" - }, - { - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 38 - ], - [ - "Blog", - 18 - ] - ], - "id" : "054", - "name" : "054" - }, - { - "data" : [ - [ - "Perl", - 41 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 14 - ] - ], - "id" : "055", - "name" : "055" - }, - { - "name" : "056", - "id" : "056", - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "name" : "057", - "id" : "057", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 13 - ] - ], - "name" : "058", - "id" : "058" - }, - { - "name" : "059", - "id" : "059", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 16 - ] - ], - "id" : "060", - "name" : "060" - }, - { - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 14 - ] - ], - "id" : "061", - "name" : "061" - }, - { - "data" : [ - [ - "Perl", - 26 - ], - [ - "Raku", - 17 - ], - [ - "Blog", - 11 - ] - ], - "id" : "062", - "name" : "062" - }, - { - "id" : "063", - "name" : "063", - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 16 - ] - ], - "name" : "064", - "id" : "064" - }, - { - "data" : [ - [ - "Perl", - 32 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 15 - ] - ], - "name" : "065", - "id" : "065" - }, - { - "id" : "066", - "name" : "066", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 14 - ] - ] - }, - { - "name" : "067", - "id" : "067", - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 18 - ] - ] - }, - { - "id" : "068", - "name" : "068", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "name" : "069", - "id" : "069", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 17 - ] - ], - "id" : "070", - "name" : "070" - }, - { - "id" : "071", - "name" : "071", - "data" : [ - [ - "Perl", - 31 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 51 - ], - [ - "Raku", - 40 - ], - [ - "Blog", - 19 - ] - ], - "id" : "072", - "name" : "072" - }, - { - "id" : "073", - "name" : "073", - "data" : [ - [ - "Perl", - 53 - ], - [ - "Raku", - 38 - ], - [ - "Blog", - 17 - ] - ] - }, - { - "name" : "074", - "id" : "074", - "data" : [ - [ - "Perl", - 56 - ], - [ - "Raku", - 37 - ], - [ - "Blog", - 20 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 55 - ], - [ - "Raku", - 36 - ], - [ - "Blog", - 20 - ] - ], - "id" : "075", - "name" : "075" - }, - { - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 16 - ] - ], - "id" : "076", - "name" : "076" - }, - { - "data" : [ - [ - "Perl", - 48 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 14 - ] - ], - "id" : "077", - "name" : "077" - }, - { - "data" : [ - [ - "Perl", - 66 - ], - [ - "Raku", - 37 - ], - [ - "Blog", - 18 - ] - ], - "name" : "078", - "id" : "078" - }, - { - "id" : "079", - "name" : "079", - "data" : [ - [ - "Perl", - 65 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 73 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 16 - ] - ], - "name" : "080", - "id" : "080" - }, - { - "data" : [ - [ - "Perl", - 17 - ], - [ - "Raku", - 9 - ], - [ - "Blog", - 4 - ] - ], - "name" : "081", - "id" : "081" - } - ] - }, - "legend" : { - "enabled" : "false" - }, - "xAxis" : { - "type" : "category" - }, "series" : [ { - "name" : "Perl Weekly Challenge Languages", "colorByPoint" : "true", + "name" : "Perl Weekly Challenge Languages", "data" : [ { - "y" : 144, "drilldown" : "001", - "name" : "#001" + "name" : "#001", + "y" : 144 }, { "y" : 113, - "drilldown" : "002", - "name" : "#002" + "name" : "#002", + "drilldown" : "002" }, { - "y" : 71, + "drilldown" : "003", "name" : "#003", - "drilldown" : "003" + "y" : 71 }, { - "drilldown" : "004", "name" : "#004", + "drilldown" : "004", "y" : 91 }, { - "y" : 72, "drilldown" : "005", - "name" : "#005" + "name" : "#005", + "y" : 72 }, { - "y" : 52, + "name" : "#006", "drilldown" : "006", - "name" : "#006" + "y" : 52 }, { - "y" : 59, "name" : "#007", - "drilldown" : "007" + "drilldown" : "007", + "y" : 59 }, { + "y" : 72, "name" : "#008", - "drilldown" : "008", - "y" : 72 + "drilldown" : "008" }, { - "y" : 70, + "drilldown" : "009", "name" : "#009", - "drilldown" : "009" + "y" : 70 }, { "y" : 60, - "drilldown" : "010", - "name" : "#010" + "name" : "#010", + "drilldown" : "010" }, { - "name" : "#011", + "y" : 79, "drilldown" : "011", - "y" : 79 + "name" : "#011" }, { + "y" : 83, "drilldown" : "012", - "name" : "#012", - "y" : 83 + "name" : "#012" }, { - "drilldown" : "013", + "y" : 78, "name" : "#013", - "y" : 78 + "drilldown" : "013" }, { - "name" : "#014", + "y" : 96, "drilldown" : "014", - "y" : 96 + "name" : "#014" }, { - "y" : 93, + "drilldown" : "015", "name" : "#015", - "drilldown" : "015" + "y" : 93 }, { - "drilldown" : "016", "name" : "#016", + "drilldown" : "016", "y" : 66 }, { - "y" : 79, + "name" : "#017", "drilldown" : "017", - "name" : "#017" + "y" : 79 }, { + "y" : 76, "drilldown" : "018", - "name" : "#018", - "y" : 76 + "name" : "#018" }, { - "y" : 97, "drilldown" : "019", - "name" : "#019" + "name" : "#019", + "y" : 97 }, { "name" : "#020", @@ -1601,18 +114,18 @@ "y" : 95 }, { - "y" : 67, "drilldown" : "021", - "name" : "#021" + "name" : "#021", + "y" : 67 }, { - "drilldown" : "022", + "y" : 63, "name" : "#022", - "y" : 63 + "drilldown" : "022" }, { - "drilldown" : "023", "name" : "#023", + "drilldown" : "023", "y" : 91 }, { @@ -1621,39 +134,39 @@ "y" : 70 }, { - "name" : "#025", "drilldown" : "025", + "name" : "#025", "y" : 55 }, { - "name" : "#026", + "y" : 70, "drilldown" : "026", - "y" : 70 + "name" : "#026" }, { + "y" : 58, "name" : "#027", - "drilldown" : "027", - "y" : 58 + "drilldown" : "027" }, { - "y" : 78, + "drilldown" : "028", "name" : "#028", - "drilldown" : "028" + "y" : 78 }, { + "y" : 77, "name" : "#029", - "drilldown" : "029", - "y" : 77 + "drilldown" : "029" }, { - "drilldown" : "030", "name" : "#030", + "drilldown" : "030", "y" : 115 }, { - "name" : "#031", + "y" : 87, "drilldown" : "031", - "y" : 87 + "name" : "#031" }, { "y" : 92, @@ -1661,14 +174,14 @@ "drilldown" : "032" }, { - "drilldown" : "033", "name" : "#033", + "drilldown" : "033", "y" : 108 }, { - "y" : 62, + "name" : "#034", "drilldown" : "034", - "name" : "#034" + "y" : 62 }, { "y" : 62, @@ -1691,28 +204,28 @@ "name" : "#038" }, { - "y" : 60, "name" : "#039", - "drilldown" : "039" + "drilldown" : "039", + "y" : 60 }, { - "name" : "#040", "drilldown" : "040", + "name" : "#040", "y" : 71 }, { + "y" : 74, "name" : "#041", - "drilldown" : "041", - "y" : 74 + "drilldown" : "041" }, { + "y" : 88, "drilldown" : "042", - "name" : "#042", - "y" : 88 + "name" : "#042" }, { - "name" : "#043", "drilldown" : "043", + "name" : "#043", "y" : 66 }, { @@ -1721,19 +234,19 @@ "name" : "#044" }, { + "y" : 94, "drilldown" : "045", - "name" : "#045", - "y" : 94 + "name" : "#045" }, { - "name" : "#046", + "y" : 85, "drilldown" : "046", - "y" : 85 + "name" : "#046" }, { + "y" : 82, "name" : "#047", - "drilldown" : "047", - "y" : 82 + "drilldown" : "047" }, { "drilldown" : "048", @@ -1751,24 +264,24 @@ "name" : "#050" }, { + "y" : 87, "drilldown" : "051", - "name" : "#051", - "y" : 87 + "name" : "#051" }, { - "y" : 89, + "drilldown" : "052", "name" :