aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-178/colin-crain/blog.txt1
-rw-r--r--challenge-178/colin-crain/blog1.txt1
-rwxr-xr-xchallenge-178/colin-crain/perl/ch-1.pl180
-rwxr-xr-xchallenge-178/colin-crain/perl/ch-2.pl177
-rw-r--r--stats/pwc-current.json197
-rw-r--r--stats/pwc-language-breakdown-summary.json76
-rw-r--r--stats/pwc-language-breakdown.json1230
-rw-r--r--stats/pwc-leaders.json358
-rw-r--r--stats/pwc-summary-1-30.json106
-rw-r--r--stats/pwc-summary-121-150.json44
-rw-r--r--stats/pwc-summary-151-180.json42
-rw-r--r--stats/pwc-summary-181-210.json118
-rw-r--r--stats/pwc-summary-211-240.json40
-rw-r--r--stats/pwc-summary-241-270.json38
-rw-r--r--stats/pwc-summary-31-60.json114
-rw-r--r--stats/pwc-summary-61-90.json46
-rw-r--r--stats/pwc-summary-91-120.json104
-rw-r--r--stats/pwc-summary.json592
18 files changed, 1921 insertions, 1543 deletions
diff --git a/challenge-178/colin-crain/blog.txt b/challenge-178/colin-crain/blog.txt
new file mode 100644
index 0000000000..c70c2a2d2c
--- /dev/null
+++ b/challenge-178/colin-crain/blog.txt
@@ -0,0 +1 @@
+https://colincrain.com/2022/08/21/the-imaginary-quartet
diff --git a/challenge-178/colin-crain/blog1.txt b/challenge-178/colin-crain/blog1.txt
new file mode 100644
index 0000000000..b29ec29f57
--- /dev/null
+++ b/challenge-178/colin-crain/blog1.txt
@@ -0,0 +1 @@
+https://colincrain.com/2022/08/22/a-very-busy-dating-service
diff --git a/challenge-178/colin-crain/perl/ch-1.pl b/challenge-178/colin-crain/perl/ch-1.pl
new file mode 100755
index 0000000000..8d0fb49b21
--- /dev/null
+++ b/challenge-178/colin-crain/perl/ch-1.pl
@@ -0,0 +1,180 @@
+#!/Users/colincrain/perl5/perlbrew/perls/perl-5.32.0/bin/perl
+#
+# imaginary-quartet.pl
+#
+# Quater-imaginary Base
+# Submitted by: Mohammad S Anwar
+# Write a script to convert a given number (base 10) to
+# quater-imaginary base number and vice-versa. For more
+# informations, please checkout wiki page.
+#
+# For example:
+#
+# $number_base_10 = 4
+# $number_quater_imaginary_base = 10300
+
+# Background:
+#
+# Wow. well this has been a wild ride. I laughed, I cried. I looked
+# at the page and reread what I had in front of me again. I found
+# other sources and periphrial topics. I hunted down Knuth's
+# original and read that. It's really such an... interesting piece
+# of math.
+#
+# As it is, some of our previous efforts here at the PWC have
+# introduced me to various ideas in alternate bases. From the very
+# beginning in PWC we converted to base-35. You know what would
+# make a really interesting numbering system? Using prime numbers:
+# you could describe any number by the exponent values in its prime
+# factorization, with the primes each assigned positions. Or
+# Fibonacci numbers. Yes you can construct an insane numbering
+# system from them too.
+#
+# Today we have a brace of novel ideas that link together. THe
+# first is the idea of negative bases. If the base is negative,
+# than in a positional expansion:
+#
+# xyz = x * base^2 + y * base^1 + z * base^0
+#
+# every other value will wind up negative, and hence be subtracted.
+# This, interestingly enough, allows us to write negative values
+# without designating a special sign for them.
+
+# This leads us to base (-2), or negabinary, which because of the
+# aforementioned property is occationally of interest to comuter
+# scientists who are sick of twos-complement for one reason orr
+# another. It's intriguing in a number of ways, and has soem
+# interesting properties, but never much caught on in computing.
+#
+# More immediate to the task at hand is base (-4), or
+# negaquaternary. Having four available values for each digit does
+# condense things a bit. We'll be using this later.
+#
+# Wait what? Why, for all that is good and holy, WHY?
+#
+# Because Donald Knuth wasn't satisfied with simply toying around in
+# negabinary, I suppose, and wanted to take matters into a
+# different dimension. Off the line, that is, up and into the complex plane.
+#
+# Complex numbers are constructed from two values, a real and an
+# imaginary component. The real part is just a number as we know
+# it, but the imaginary part is a real number multipllied by the
+# square root of negative 1, denotated *i*.
+#
+# Imaginary numbers, as it works out, can be an extremely useful
+# idea.
+#
+# So what we're talking about here is really just the same
+# conceptualization of negative bases mapped on over. How, you ask?
+# By making the base 2i.
+#
+# As i * i = -1, every other position in a positional expansion
+# here is real, as well as negative. However every other real
+# position will be a negative number squared, and hence will be
+# positive. The imaginary comonents follow the same alternating
+# pattern as well.
+#
+# So in the same way that by alternately adding and subtracting
+# values we can home in on any real value in negaquaternary, we can
+# home in on any real value for the complex component, all with
+# only the digits 0,1,2, and 3 and perhaps a lot of space.
+
+# Knuth originally commented in his 1955 paper that the
+# quater-imaginary number system could be potentially quite useful
+# due to its ease in multiplication and addition, which is
+# remarkably straighforward. However a graceful technique for
+# division eluded him, and to this day quater-imaginary numbers
+# remain largely a mathematical curiosity.
+#
+# Method:
+#
+# In this task, however, we are only getting our feet wet, as we
+# are asked to convert base-10 real numbers to their
+# quater-imaginary equivalent and back. Real numbers are still
+# complex, of course, with an imaginary component set to 0. Thus
+# the alternating positions holding he complex components will all
+# be 0. The remaining positions, viewed as a number, will be the
+# decimal number converted to negaquaternary.
+#
+# Converting bases is old hat by this point, we divide out and
+# append the remainders to the converted value. There is one twist,
+# though, in that for this to work the remainder must be positive.
+# Should the remainder be negative, we need to carry a digit from
+# the quotient back, subtracting 1 from the quotient and adding 4
+# to the remainder. With this additional new step everything works
+# out right.
+#
+# To convert back to decimal there is no similar problem with
+# powers, so like any other conversion we raise (-4) to the power
+# of the position and multiply by the value found there, adding the
+# result to the deecimal conversion.
+#
+# © 2022 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+use warnings;
+use strict;
+use utf8;
+use feature ":5.26";
+use feature qw(signatures);
+no warnings 'experimental::signatures';
+
+## a spread of values converted to quater-imaginary and back again
+
+say " dec : quater-i : dec ";
+say "-----+------------+-----";
+for (-16..16) {
+ my $qi = dec2quater_i( $_ );
+ say sprintf "%4d : %-10d : %d", $_, $qi, quater_i2dec( $qi );
+
+}
+
+
+sub dec2quater_i ( $num ) {
+## variant on normal base conversion
+## non-imaginary integers only!
+## converts from base-10 to quater-imaginary
+## converts to base -4 and then inserts 0s between digits for +i components
+ my $rem;
+ my $quot;
+ my @nqt;
+
+ ## divide out -4s and save remainders
+ ## remainders must be positive
+ while ( $num != 0 ) {
+ $quot = int($num / -4);
+ ($num, $rem) = ($quot, $num - ($quot * -4));
+ if ($rem < 0) {
+ ## flip remainder to positive if necessary (subtract -4 and carry)
+ ($num, $rem) = ($num + 1, $rem + 4)
+ }
+ unshift @nqt, $rem;
+ }
+ return scalar @nqt ## required to ensure 0 value
+ ? join '0', @nqt
+ : 0 ;
+}
+
+sub quater_i2dec( $num ) {
+
+## non-imaginary integers only!
+## converts quater-imaginary to non-imaginary base-10
+## strips +i components (which will be zeros) and converts from base -4
+
+ ## filter out every other position
+ my $i = 1;
+ my @num = grep { $i++ & 1 } split //, $num;
+
+ ## convert by computing expanded form
+ my $out;
+ my $pos = 0;
+ for ( reverse @num ) {
+ $out += $_ * (-4) ** $pos++;
+ }
+
+ return $out;
+}
+
+
diff --git a/challenge-178/colin-crain/perl/ch-2.pl b/challenge-178/colin-crain/perl/ch-2.pl
new file mode 100755
index 0000000000..d596cbdb69
--- /dev/null
+++ b/challenge-178/colin-crain/perl/ch-2.pl
@@ -0,0 +1,177 @@
+#!/Users/colincrain/perl5/perlbrew/perls/perl-5.32.0/bin/perl
+#
+# busy-dating-service.pl
+#
+# Business Date
+# Submitted by: Mohammad S Anwar
+# You are given $timestamp (date with time) and $duration in hours.
+#
+# Write a script to find the time that occurs $duration business
+# hours after $timestamp. For the sake of this task, let us assume
+# the working hours is 9am to 6pm, Monday to Friday. Please ignore
+# timezone too.
+#
+# For example,
+#
+# Suppose the given timestamp is 2022-08-01 10:30 and the duration
+# is 4 hours. Then the next business date would be 2022-08-01
+# 14:30.
+#
+# Similar if the given timestamp is 2022-08-01 17:00 and the
+# duration is 3.5 hours. Then the next business date would be
+# 2022-08-02 11:30.
+
+# Analysis:
+#
+# There's alot of moving parts to this particular challenge. We
+# need to start with inputting a timestamp string, and then add
+# hours to it, carrying over into the next day as required until we
+# land within the business hours of a single day. Weekends are
+# excluded as well, so if we roll off Friday we resume Monday
+# morning. And of course we're only counting the hours elapsed
+# within a limited frame of 9am to 6pm.
+#
+# Fortunately the directionality of time limits our duration hours
+# to positive values. So theres that. And seconds: no seconds, or
+# nanoseconds, or timezones, as noted, but I can't figure out how
+# those would come into play anyway. Are we doing business on the
+# Concorde?
+#
+# I don't think we're going to worry about either lunchbreaks or
+# holidays either, and hold fast to the given input timestamp
+# format, without extensive validation or anything. Life is
+# complicated enough.
+
+# We're also going to make one more simplifting assumption, that
+# the timestamp input occurs with a business day. In a real program
+# we'd want to verify this, and start the clock at the next
+# business day, but if the ticket was submitted by the business
+# personnel then the bnusiness would need to be open, no?
+#
+# Method:
+#
+# As the day of the week is a very important part of the problem,
+# and subject to arcane leap-year rules in February, I think it
+# prudent to armor ourselves under the protective shield of the
+# DateTime module so we can poll th eday of the week value directly
+# from there. We can't, however just add hours to find a new date,
+# as all hours are important but some hours are more important that
+# others.
+#
+# It seems a good strategy would be to break down the hours added
+# into 3 components:
+#
+# 1. the hours remaining in the current day
+# 2. a series of 9-hour intervals comprising complete workdays
+# 3. a remaining portion of less than 9 hours to place the
+# endpoint timestamp
+#
+# We will start by parsing the input timestamp into a new DateTime
+# object and try deriving the three components from there. Which is
+# fine, but DateTime doesn't actually do that. We'll need something
+# else.
+
+# And what would that be?
+#
+# As it work out, DateTime does not parse dates because there's way
+# too many varieties to choose from when writng them down. So
+# instead of trying to implement the functionality within the date
+# module directly, and entire class of classes takes the role
+# instead: DateTime::Format. This in turn is subclassed further
+# with a whatever scheme you might want to accomodate.
+#
+# We will pick DateTime::Format::Strptime which basically
+# implements the unix utilities strptime and strftime, allowing one
+# to specifiy a formatting template from a list of symbols,
+# including shortcuts for some of the more common layouts.
+
+# Once the timestamp is in we can then create another DateTIme
+# object for the end of whatever day we are in, and subtract the
+# earlier from the later to create a duration until the end of the day.
+#
+# If the end of the day is after the given span, we add the minutes
+# to the current day and report. If we need to jump to the next day
+# things get a little more complicated.
+#
+# We need to first reset by removing the reamining mnutes for the
+# current day from the count, ans start a new day object at 9am.
+# This will be initialized at the next business day, skipping hte
+# weekend if necessary. From there we subtract entire days in
+# minutes, 540 each, until the span is less than 540, again
+# skipping weekends if necessary. This locates the end date.
+
+# Once we have the end date we add the remaining minute count of
+# the duration to obtain the end time within the day.
+#
+
+#
+# © 2022 colin crain
+## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
+
+
+
+use warnings;
+use strict;
+use utf8;
+use feature ":5.26";
+use feature qw(signatures);
+no warnings 'experimental::signatures';
+
+use DateTime;
+use DateTime::Format::Strptime ;
+
+
+my ($timestamp, $delta) = @ARGV;
+if (@ARGV == 0) { ($timestamp, $delta) = ( '2022-08-01 10:30', 400 )}
+
+## convert to minutes
+my $duration_minutes = $delta * 60;
+
+## parse input and create a DateTime object for the timestamp
+my $format = DateTime::Format::Strptime->new(
+ pattern => '%F %H:%M');
+my $date = $format->parse_datetime($timestamp);
+
+## calculate remaining minutes in current day
+my $day_end = DateTime->new(
+ year => $date->year,
+ month => $date->month,
+ day => $date->day,
+ hour => 18,
+ minute => 0
+);
+my $date_remaining_duration = $day_end->subtract_datetime($date);
+my $remaining_minutes_today = $date_remaining_duration->hours * 60 +
+ $date_remaining_duration->minutes;
+
+## CASE 1: duration falls within current day
+##
+if ($duration_minutes <= $remaining_minutes_today) {
+ $date->add( minutes => $duration_minutes );
+}
+
+## CASE 2: we finish this day and locate the ending day
+##
+else {
+ ## subtract remaining time within current day
+ $duration_minutes -= $remaining_minutes_today;
+
+ ## start a new day to the next business day
+ $date->set_hour( 9 );
+ $date->set_minute( 0 );
+ $date->add( days => ($date->day_of_week == 5 ? 3 : 1));
+
+ ## add any complete days, skipping weekends
+ while ($duration_minutes > 540) { ## 540 minutes in 9-hour day
+ $date->add( days => ($date->day_of_week == 5 ? 3 : 1));
+ $duration_minutes -= 540;
+ }
+
+ ## add any remaining minutes forward from 9am on the end day
+ $date->add( minutes => $duration_minutes );
+}
+
+## output timestamp as per format
+$date->set_formatter($format);
+say $date->stringify;
+
diff --git a/stats/pwc-current.json b/stats/pwc-current.json
index 77c0f5ce3d..d5a0cfa0d0 100644
--- a/stats/pwc-current.json
+++ b/stats/pwc-current.json
@@ -1,22 +1,33 @@
{
- "chart" : {
- "type" : "column"
+ "title" : {
+ "text" : "The Weekly Challenge - 178"
+ },
+ "tooltip" : {
+ "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>",
+ "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>",
+ "followPointer" : 1
+ },
+ "yAxis" : {
+ "title" : {
+ "text" : "Total Solutions"
+ }
+ },
+ "legend" : {
+ "enabled" : 0
},
"drilldown" : {
"series" : [
{
- "name" : "AhmetEmre",
"data" : [
[
"Raku",
2
]
],
+ "name" : "AhmetEmre",
"id" : "AhmetEmre"
},
{
- "name" : "Arne Sommer",
- "id" : "Arne Sommer",
"data" : [
[
"Raku",
@@ -26,7 +37,9 @@
"Blog",
1
]
- ]
+ ],
+ "name" : "Arne Sommer",
+ "id" : "Arne Sommer"
},
{
"data" : [
@@ -39,10 +52,12 @@
1
]
],
- "id" : "Athanasius",
- "name" : "Athanasius"
+ "name" : "Athanasius",
+ "id" : "Athanasius"
},
{
+ "name" : "Cheok-Yin Fung",
+ "id" : "Cheok-Yin Fung",
"data" : [
[
"Perl",
@@ -52,21 +67,34 @@
"Raku",
1
]
+ ]
+ },
+ {
+ "data" : [
+ [
+ "Perl",
+ 2
+ ],
+ [
+ "Blog",
+ 2
+ ]
],
- "id" : "Cheok-Yin Fung",
- "name" : "Cheok-Yin Fung"
+ "id" : "Colin Crain",
+ "name" : "Colin Crain"
},
{
"id" : "E. Choroba",
+ "name" : "E. Choroba",
"data" : [
[
"Perl",
2
]
- ],
- "name" : "E. Choroba"
+ ]
},
{
+ "name" : "Flavio Poletti",
"id" : "Flavio Poletti",
"data" : [
[
@@ -81,38 +109,37 @@
"Blog",
2
]
- ],
- "name" : "Flavio Poletti"
+ ]
},
{
+ "id" : "Jan Krnavek",
"name" : "Jan Krnavek",
"data" : [
[
"Raku",
1
]
- ],
- "id" : "Jan Krnavek"
+ ]
},
{
- "name" : "Jorg Sommrey",
- "id" : "Jorg Sommrey",
"data" : [
[
"Perl",
2
]
- ]
+ ],
+ "id" : "Jorg Sommrey",
+ "name" : "Jorg Sommrey"
},
{
- "name" : "Kjetil Skotheim",
- "id" : "Kjetil Skotheim",
"data" : [
[
"Perl",
2
]
- ]
+ ],
+ "id" : "Kjetil Skotheim",
+ "name" : "Kjetil Skotheim"
},
{
"data" : [
@@ -139,8 +166,8 @@
"name" : "Mark Anderson"
},
{
- "name" : "Peter Campbell Smith",
"id" : "Peter Campbell Smith",
+ "name" : "Peter Campbell Smith",
"data" : [
[
"Perl",
@@ -167,12 +194,12 @@
1
]
],
- "id" : "Roger Bell_West",
- "name" : "Roger Bell_West"
+ "name" : "Roger Bell_West",
+ "id" : "Roger Bell_West"
},
{
- "name" : "Simon Green",
"id" : "Simon Green",
+ "name" : "Simon Green",
"data" : [
[
"Perl",
@@ -185,16 +212,18 @@
]
},
{
+ "id" : "Solathian",
+ "name" : "Solathian",
"data" : [
[
"Perl",
1
]
- ],
- "id" : "Solathian",
- "name" : "Solathian"
+ ]
},
{
+ "id" : "Stephen G Lynn",
+ "name" : "Stephen G Lynn",
"data" : [
[
"Perl",
@@ -208,13 +237,11 @@
"Blog",
1
]
- ],
- "id" : "Stephen G Lynn",
- "name" : "Stephen G Lynn"
+ ]
},
{
- "name" : "Ulrich Rieke",
"id" : "Ulrich Rieke",
+ "name" : "Ulrich Rieke",
"data" : [
[
"Perl",
@@ -227,8 +254,8 @@
]
},
{
- "name" : "W. Luis Mochan",
"id" : "W. Luis Mochan",
+ "name" : "W. Luis Mochan",
"data" : [
[
"Perl",
@@ -242,10 +269,23 @@
}
]
},
- "tooltip" : {
- "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>",
- "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>",
- "followPointer" : 1
+ "plotOptions" : {
+ "series" : {
+ "borderWidth" : 0,
+ "dataLabels" : {
+ "enabled" : 1,
+ "format" : "{point.y}"
+ }
+ }
+ },
+ "subtitle" : {
+ "text" : "[Champions: 19] Last updated at 2022-08-21 21:00:53 GMT"
+ },
+ "chart" : {
+ "type" : "column"
+ },
+ "xAxis" : {
+ "type" : "category"
},
"series" : [
{
@@ -262,18 +302,23 @@
},
{
"name" : "Athanasius",
- "drilldown" : "Athanasius",
- "y" : 2
+ "y" : 2,
+ "drilldown" : "Athanasius"
},
{
+ "name" : "Cheok-Yin Fung",
"y" : 2,
- "drilldown" : "Cheok-Yin Fung",
- "name" : "Cheok-Yin Fung"
+ "drilldown" : "Cheok-Yin Fung"
+ },
+ {
+ "y" : 4,
+ "name" : "Colin Crain",
+ "drilldown" : "Colin Crain"
},
{
- "drilldown" : "E. Choroba",
"y" : 2,
- "name" : "E. Choroba"
+ "name" : "E. Choroba",
+ "drilldown" : "E. Choroba"
},
{
"name" : "Flavio Poletti",
@@ -281,13 +326,13 @@
"drilldown" : "Flavio Poletti"
},
{
- "name" : "Jan Krnavek",
+ "drilldown" : "Jan Krnavek",
"y" : 1,
- "drilldown" : "Jan Krnavek"
+ "name" : "Jan Krnavek"
},
{
- "y" : 2,
"drilldown" : "Jorg Sommrey",
+ "y" : 2,
"name" : "Jorg Sommrey"
},
{
@@ -297,8 +342,8 @@
},
{
"drilldown" : "Luca Ferrari",
- "y" : 4,
- "name" : "Luca Ferrari"
+ "name" : "Luca Ferrari",
+ "y" : 4
},
{
"drilldown" : "Mark Anderson",
@@ -307,68 +352,42 @@
},
{
"drilldown" : "Peter Campbell Smith",
- "y" : 3,
- "name" : "Peter Campbell Smith"
+ "name" : "Peter Campbell Smith",
+ "y" : 3
},
{
+ "drilldown" : "Roger Bell_West",
"name" : "Roger Bell_West",
- "y" : 5,
- "drilldown" : "Roger Bell_West"
+ "y" : 5
},
{
- "name" : "Simon Green",
"y" : 3,
+ "name" : "Simon Green",
"drilldown" : "Simon Green"
},
{
- "drilldown" : "Solathian",
"y" : 1,
- "name" : "Solathian"
+ "name" : "Solathian",
+ "drilldown" : "Solathian"
},
{
"drilldown" : "Stephen G Lynn",
- "y" : 3,
- "name" : "Stephen G Lynn"
+ "name" : "Stephen G Lynn",
+ "y" : 3
},
{
- "name" : "Ulrich Rieke",
+ "drilldown" : "Ulrich Rieke",
"y" : 4,
- "drilldown" : "Ulrich Rieke"
+ "name" : "Ulrich Rieke"
},
{
"y" : 3,
- "drilldown" : "W. Luis Mochan",
- "name" : "W. Luis Mochan"
+ "name" : "W. Luis Mochan",
+ "drilldown" : "W. Luis Mochan"
}
],
"colorByPoint" : 1,
"name" : "The Weekly Challenge - 178"
}
- ],
- "subtitle" : {
- "text" : "[Champions: 18] Last updated at 2022-08-21 20:49:25 GMT"
- },
- "yAxis" : {
- "title" : {
- "text" : "Total Solutions"
- }
- },
- "legend" : {
- "enabled" : 0
- },
- "xAxis" : {
- "type" : "category"
- },
- "plotOptions" : {
- "series" : {
- "borderWidth" : 0,
- "dataLabels" : {
- "enabled" : 1,
- "format" : "{point.y}"
- }
- }
- },
- "title" : {
- "text" : "The Weekly Challenge - 178"
- }
+ ]
}
diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json
index 4d91b46384..a4feed2e37 100644
--- a/stats/pwc-language-breakdown-summary.json
+++ b/stats/pwc-language-breakdown-summary.json
@@ -1,63 +1,63 @@
{
- "chart" : {
- "type" : "column"
+ "title" : {
+ "text" : "The Weekly Challenge Contributions [2019 - 2022]"
},
"tooltip" : {
"pointFormat" : "<b>{point.y:.0f}</b>"
},
+ "yAxis" : {
+ "min" : 0,
+ "title" : {
+ "text" : null
+ }
+ },
+ "chart" : {
+ "type" : "column"
+ },
+ "xAxis" : {
+ "type" : "category",
+ "labels" : {
+ "style" : {
+ "fontSize" : "13px",
+ "fontFamily" : "Verdana, sans-serif"
+ }
+ }
+ },
"series" : [
{
+ "name" : "Contributions",
+ "dataLabels" : {
+ "align" : "right",
+ "style" : {
+ "fontSize" : "13px",
+ "fontFamily" : "Verdana, sans-serif"
+ },
+ "format" : "{point.y:.0f}",
+ "rotation" : -90,
+ "y" : 10,
+ "enabled" : "true",
+ "color" : "#FFFFFF"
+ },
"data" : [
[
"Blog",
- 2802
+ 2804
],
[
"Perl",
- 8667
+ 8669
],
[
"Raku",
5180
]
- ],
- "dataLabels" : {
- "y" : 10,
- "align" : "right",
- "enabled" : "true",
- "rotation" : -90,
- "color" : "#FFFFFF",
- "format" : "{point.y:.0f}",
- "style" : {
- "fontFamily" : "Verdana, sans-serif",
- "fontSize" : "13px"
- }
- },
- "name" : "Contributions"
+ ]
}
],
- "subtitle" : {
- "text" : "Last updated at 2022-08-21 20:49:24 GMT"
- },
- "yAxis" : {
- "min" : 0,
- "title" : {
- "text" : null
- }
- },
"legend" : {
"enabled" : "false"
},
- "xAxis" : {
- "type" : "category",
- "labels" : {
- "style" : {
- "fontSize" : "13px",
- "fontFamily" : "Verdana, sans-serif"
- }
- }
- },
- "title" : {
- "text" : "The Weekly Challenge Contributions [2019 - 2022]"
+ "subtitle" : {
+ "text" : "Last updated at 2022-08-21 21:00:53 GMT"
}
}
diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json
index b306d1c069..655f2c49d1 100644
--- a/stats/pwc-language-breakdown.json
+++ b/stats/pwc-language-breakdown.json
@@ -1,53 +1,30 @@
{
- "title" : {
- "text" : "The Weekly Challenge Language"
- },
- "xAxis" : {
- "type" : "category"
- },
- "plotOptions" : {
- "series" : {
- "borderWidth" : 0,
- "dataLabels" : {
- "enabled" : 1,
- "format" : "{point.y}"
- }
- }
- },
- "legend" : {
- "enabled" : "false"
- },
- "subtitle" : {
- "text" : "Click the columns to drilldown the language breakdown. Last updated at 2022-08-21 20:49:24 GMT"
- },
"series" : [
{
- "colorByPoint" : "true",
- "name" : "The Weekly Challenge Languages",
"data" : [
{
- "drilldown" : "001",
"y" : 161,
- "name" : "#001"
+ "name" : "#001",
+ "drilldown" : "001"
},
{
- "drilldown" : "002",
"y" : 125,
- "name" : "#002"
+ "name" : "#002",
+ "drilldown" : "002"
},
{
- "drilldown" : "003",
"y" : 83,
- "name" : "#003"
+ "name" : "#003",
+ "drilldown" : "003"
},
{
- "name" : "#004",
+ "drilldown" : "004",
"y" : 99,
- "drilldown" : "004"
+ "name" : "#004"
},
{
- "y" : 78,
"drilldown" : "005",
+ "y" : 78,
"name" : "#005"
},
{
@@ -56,43 +33,43 @@
"name" : "#006"
},
{
+ "y" : 65,
"name" : "#007",
- "drilldown" : "007",
- "y" : 65
+ "drilldown" : "007"