From f20e360a06c231aaf9a9730dc720c232c274f9ed Mon Sep 17 00:00:00 2001 From: "Jaldhar H. Vyas" Date: Mon, 15 Feb 2021 13:35:49 -0500 Subject: Challenge 96 by Jaldhar H. Vyas --- challenge-096/jaldhar-h-vyas/blog.txt | 1 + challenge-096/jaldhar-h-vyas/perl/ch-1.sh | 1 + challenge-096/jaldhar-h-vyas/perl/ch-2.pl | 52 +++++++++++++++++++++++++++++ challenge-096/jaldhar-h-vyas/raku/ch-1.sh | 1 + challenge-096/jaldhar-h-vyas/raku/ch-2.raku | 34 +++++++++++++++++++ 5 files changed, 89 insertions(+) create mode 100644 challenge-096/jaldhar-h-vyas/blog.txt create mode 100755 challenge-096/jaldhar-h-vyas/perl/ch-1.sh create mode 100755 challenge-096/jaldhar-h-vyas/perl/ch-2.pl create mode 100755 challenge-096/jaldhar-h-vyas/raku/ch-1.sh create mode 100755 challenge-096/jaldhar-h-vyas/raku/ch-2.raku diff --git a/challenge-096/jaldhar-h-vyas/blog.txt b/challenge-096/jaldhar-h-vyas/blog.txt new file mode 100644 index 0000000000..c87e41fff8 --- /dev/null +++ b/challenge-096/jaldhar-h-vyas/blog.txt @@ -0,0 +1 @@ +https://www.braincells.com/perl/2021/02/perl_weekly_challenge_week_96.html diff --git a/challenge-096/jaldhar-h-vyas/perl/ch-1.sh b/challenge-096/jaldhar-h-vyas/perl/ch-1.sh new file mode 100755 index 0000000000..5beec9b643 --- /dev/null +++ b/challenge-096/jaldhar-h-vyas/perl/ch-1.sh @@ -0,0 +1 @@ +perl -E 'say join q{ }, (reverse @ARGV);' $@ \ No newline at end of file diff --git a/challenge-096/jaldhar-h-vyas/perl/ch-2.pl b/challenge-096/jaldhar-h-vyas/perl/ch-2.pl new file mode 100755 index 0000000000..3114d70648 --- /dev/null +++ b/challenge-096/jaldhar-h-vyas/perl/ch-2.pl @@ -0,0 +1,52 @@ +#!/usr/bin/perl +use 5.020; +use warnings; +use English qw/ -no_match_vara /; + +sub usage { + print<<"-USAGE-"; +Usage: + $PROGRAM_NAME + + string to convert from + string to convert to +-USAGE- + exit 0; +} + +sub min { + return (sort { $a <=> $b } @_)[0]; +} + +sub levenshtein { + my ($from, $to) = @_; + my $fromLength = length $from; + my $toLength = length $to; + + if ($toLength == 0) { + return $fromLength; + } + + if ($fromLength == 0) { + return $toLength; + } + + my $fromTail = substr($from, 1, $fromLength - 1); + my $toTail = substr($to, 1, $toLength - 1); + + if (substr($from, 0, 1) eq substr($to, 0, 1)) { + return levenshtein($fromTail, $toTail); + } + + return 1 + min( + levenshtein($from, $toTail), # Insert + levenshtein($fromTail, $to), # Remove + levenshtein($fromTail, $toTail) # Replace + ); +} + +if (scalar @ARGV < 2) { + usage(); +} + +say levenshtein($ARGV[0], $ARGV[1]); diff --git a/challenge-096/jaldhar-h-vyas/raku/ch-1.sh b/challenge-096/jaldhar-h-vyas/raku/ch-1.sh new file mode 100755 index 0000000000..9c33ad4bd2 --- /dev/null +++ b/challenge-096/jaldhar-h-vyas/raku/ch-1.sh @@ -0,0 +1 @@ +raku -e '@*ARGS.reverse.join(q{ }).say;' $@ \ No newline at end of file diff --git a/challenge-096/jaldhar-h-vyas/raku/ch-2.raku b/challenge-096/jaldhar-h-vyas/raku/ch-2.raku new file mode 100755 index 0000000000..33b152b7c6 --- /dev/null +++ b/challenge-096/jaldhar-h-vyas/raku/ch-2.raku @@ -0,0 +1,34 @@ +#!/usr/bin/raku + +sub levenshtein(Str $from, Str $to) { + my $fromLength = $from.chars; + my $toLength = $to.chars; + + if $toLength == 0 { + return $fromLength; + } + + if $fromLength == 0 { + return $toLength; + } + + my $fromTail = $from.substr(1, $fromLength - 1); + my $toTail = $to.substr(1, $toLength - 1); + + if $from.substr(0, 1) eq $to.substr(0, 1) { + return levenshtein($fromTail, $toTail); + } + + return 1 + ( + levenshtein($from, $toTail), # Insert + levenshtein($fromTail, $to), # Remove + levenshtein($fromTail, $toTail) # Replace + ).min; +} + +sub MAIN( + Str $S1, #= string to convert from + Str $S2, #= string to convert to +) { + say levenshtein($S1, $S2); +} \ No newline at end of file -- cgit From b58916029a92c20e593d8628c4d9dc248081a853 Mon Sep 17 00:00:00 2001 From: Frank Oosterhuis Date: Tue, 16 Feb 2021 11:06:46 +0100 Subject: to24H --- challenge-100/frankivo/scala/FunTime.scala | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 challenge-100/frankivo/scala/FunTime.scala diff --git a/challenge-100/frankivo/scala/FunTime.scala b/challenge-100/frankivo/scala/FunTime.scala new file mode 100644 index 0000000000..2b06d901cb --- /dev/null +++ b/challenge-100/frankivo/scala/FunTime.scala @@ -0,0 +1,35 @@ +object FunTime { + val examples = Seq[String]( + "08:24pm", + "08:24am", + "09:39 am", + "08:24", + "20:24", + "13:37", + "12:34" + ) + + + def to12H(time: String): Option[String] = { + + None + } + + def to24H(time: String): Option[String] = { + if (!("(am|pm)$".r findFirstIn time).isDefined) + return None + + val h :: m :: _ = ("([0-9]{2})".r findAllIn time).toSeq + val hour = if (time.contains("pm")) h.toInt + 12 else h + + Some(s"$hour:$m") + } + + def main(args: Array[String]): Unit = { + examples + .map(e => Seq(to12H(e), to24H(e))) + .flatten + .flatten + .foreach(println) + } +} \ No newline at end of file -- cgit From 65ea62571cc749356e227dc27f7dc5116620e360 Mon Sep 17 00:00:00 2001 From: Frank Oosterhuis Date: Tue, 16 Feb 2021 11:20:21 +0100 Subject: cleanup --- challenge-100/frankivo/scala/FunTime.scala | 37 +++++++++++++++++++----------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/challenge-100/frankivo/scala/FunTime.scala b/challenge-100/frankivo/scala/FunTime.scala index 2b06d901cb..6aa4d83229 100644 --- a/challenge-100/frankivo/scala/FunTime.scala +++ b/challenge-100/frankivo/scala/FunTime.scala @@ -1,35 +1,44 @@ object FunTime { val examples = Seq[String]( + "07:04am", "08:24pm", "08:24am", "09:39 am", "08:24", "20:24", "13:37", - "12:34" + "12:34", + "18:04" ) + def getTime(time: String) : (Int, Int) = { + val h :: m :: _ = ("([0-9]{2})".r findAllIn time).toSeq + (h.toInt, m.toInt) + } - def to12H(time: String): Option[String] = { - - None + def makeTime(hour: Int, minute: Int, suffix: String = "") = { + "%02d:%02d%s".format(hour, minute, " " + suffix) } - def to24H(time: String): Option[String] = { - if (!("(am|pm)$".r findFirstIn time).isDefined) - return None - - val h :: m :: _ = ("([0-9]{2})".r findAllIn time).toSeq - val hour = if (time.contains("pm")) h.toInt + 12 else h + def to12H(time: String): String = { + time + } + + def to24H(time: String): String = { + val parsed = getTime(time) + val hour = if (time.contains("pm")) parsed._1 + 12 else parsed._1 - Some(s"$hour:$m") + makeTime(hour, parsed._2) } def main(args: Array[String]): Unit = { examples - .map(e => Seq(to12H(e), to24H(e))) - .flatten - .flatten + .map(e => { + if (("(am|pm)$".r findFirstIn e).isDefined) + to24H(e) + else + to12H(e) + }) .foreach(println) } } \ No newline at end of file -- cgit From 5e9f6a7f1a0a9da2ac250a53206aca5bc2eb2323 Mon Sep 17 00:00:00 2001 From: Frank Oosterhuis Date: Tue, 16 Feb 2021 11:34:42 +0100 Subject: to12H --- challenge-100/frankivo/scala/FunTime.scala | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/challenge-100/frankivo/scala/FunTime.scala b/challenge-100/frankivo/scala/FunTime.scala index 6aa4d83229..0578ea6551 100644 --- a/challenge-100/frankivo/scala/FunTime.scala +++ b/challenge-100/frankivo/scala/FunTime.scala @@ -5,9 +5,12 @@ object FunTime { "08:24am", "09:39 am", "08:24", - "20:24", - "13:37", + "11:59", + "12:00", + "12:01", "12:34", + "13:37", + "20:24", "18:04" ) @@ -21,7 +24,12 @@ object FunTime { } def to12H(time: String): String = { - time + val parsed = getTime(time) + + val suffix = if (parsed._1 < 12) "am" else "pm" + val hour = if (parsed._1 > 12) parsed._1 - 12 else parsed._1 + + makeTime(hour, parsed._2, suffix) } def to24H(time: String): String = { -- cgit From db3d3298e10b3dcf63bf1e0f940e2f69af95eb38 Mon Sep 17 00:00:00 2001 From: Frank Oosterhuis Date: Tue, 16 Feb 2021 11:37:47 +0100 Subject: convert --- challenge-100/frankivo/scala/FunTime.scala | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/challenge-100/frankivo/scala/FunTime.scala b/challenge-100/frankivo/scala/FunTime.scala index 0578ea6551..97ae8f09a5 100644 --- a/challenge-100/frankivo/scala/FunTime.scala +++ b/challenge-100/frankivo/scala/FunTime.scala @@ -39,14 +39,16 @@ object FunTime { makeTime(hour, parsed._2) } + def convert(time: String) : String = { + if (("(am|pm)$".r findFirstIn time).isDefined) + to24H(time) + else + to12H(time) + } + def main(args: Array[String]): Unit = { examples - .map(e => { - if (("(am|pm)$".r findFirstIn e).isDefined) - to24H(e) - else - to12H(e) - }) + .map(convert) .foreach(println) } } \ No newline at end of file -- cgit From cf6927881376ec265295b932b345c8e0c588352b Mon Sep 17 00:00:00 2001 From: drbaggy Date: Tue, 16 Feb 2021 12:14:50 +0000 Subject: a bit of golf --- challenge-100/james-smith/perl/ch-1.pl | 37 ++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/challenge-100/james-smith/perl/ch-1.pl b/challenge-100/james-smith/perl/ch-1.pl index e241822661..0e1cb1d401 100644 --- a/challenge-100/james-smith/perl/ch-1.pl +++ b/challenge-100/james-smith/perl/ch-1.pl @@ -6,6 +6,18 @@ use warnings; use feature qw(say); use Test::More; +is( ft( '05:15pm' ), '17:15' ); +is( ft( '05:15 pm' ), '17:15' ); +is( ft( '17:15' ), '05:15pm' ); +is( ft( '05:15am' ), '05:15' ); +is( ft( '05:15 am' ), '05:15' ); +is( ft( '05:15' ), '05:15am' ); +is( ft( '00:00' ), '12:00am' ); +is( ft( '12:00' ), '12:00pm' ); +is( ft( '24:00' ), '12:00pm' ); +is( ft( '12:00 am' ), '00:00' ); +is( ft( '12:00 pm' ), '12:00' ); + is( fun_time( '05:15pm' ), '17:15' ); is( fun_time( '05:15 pm' ), '17:15' ); is( fun_time( '17:15' ), '05:15pm' ); @@ -18,28 +30,19 @@ is( fun_time( '24:00' ), '12:00pm' ); is( fun_time( '12:00 am' ), '00:00' ); is( fun_time( '12:00 pm' ), '12:00' ); -is( fun_time_readable( '05:15pm' ), '17:15' ); -is( fun_time_readable( '05:15 pm' ), '17:15' ); -is( fun_time_readable( '17:15' ), '05:15pm' ); -is( fun_time_readable( '05:15am' ), '05:15' ); -is( fun_time_readable( '05:15 am' ), '05:15' ); -is( fun_time_readable( '05:15' ), '05:15am' ); -is( fun_time_readable( '00:00' ), '12:00am' ); -is( fun_time_readable( '12:00' ), '12:00pm' ); -is( fun_time_readable( '24:00' ), '12:00pm' ); -is( fun_time_readable( '12:00 am' ), '00:00' ); -is( fun_time_readable( '12:00 pm' ), '12:00' ); - done_testing(); -## 72 chars ############################################################ -## Just split so slightly more readable and fits on 72 char lines +## 72 chars ############################################################# +#000000000111111111122222222223333333333444444444455555555556 +#123456789012345678901234567890123456789012345678901234567890 + +## Just split so slightly more readable and fits on 60 char lines -sub fun_time { $_[0]=~s{(\d+):(\d+)\s*(\wm|)}{sprintf'%02d:%02d%s', - ($1%12||(12*!$3))+12*('pm'eq$3),$2,$3?'':$1>11?'pm':'am'}re; } +sub ft{$_[0]=~s{(\d+):(\d+)\s*(\wm|)}{sprintf'%02d:%02d%s', +($1%12||(12*!$3))+12*('pm'eq$3),$2,$3?'':$1<12?'am':'pm'}re} ## This is more readable version with notes... -sub fun_time_readable { +sub fun_time { return $_[0] =~ s{ ## Split into 3 parts, $1 - hours, $2 - minutes & $3 - am/pm -- cgit From e8c486430d342251c294715ce63eef0aff4f6944 Mon Sep 17 00:00:00 2001 From: drbaggy Date: Tue, 16 Feb 2021 12:25:50 +0000 Subject: one-liner down to 119 characters! 111 lines of usefulness! --- challenge-100/james-smith/perl/ch-1.pl | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/challenge-100/james-smith/perl/ch-1.pl b/challenge-100/james-smith/perl/ch-1.pl index 0e1cb1d401..818f9781e2 100644 --- a/challenge-100/james-smith/perl/ch-1.pl +++ b/challenge-100/james-smith/perl/ch-1.pl @@ -32,9 +32,9 @@ is( fun_time( '12:00 pm' ), '12:00' ); done_testing(); -## 72 chars ############################################################# -#000000000111111111122222222223333333333444444444455555555556 -#123456789012345678901234567890123456789012345678901234567890 +## 72 chars ############################################################ +#00000000111111111122222222223333333333444444444455555555556 +#23456789012345678901234567890123456789012345678901234567890 ## Just split so slightly more readable and fits on 60 char lines @@ -58,13 +58,19 @@ sub fun_time { } { sprintf '%02d:%02d%s', - ( $1%12 || (12*!$3) ) + 12*('pm'eq$3), + ( $1 % 12 || ( 12 * ! $3 ) ) + 12 * ( 'pm' eq $3 ), ## Get hour modulo 12.. ## From 24hr to 12hr clock we need to convert 00:?? to 12:?? ## From 12hr to 24hr clock it is pm we then need to add 12... + ## Note we use the "yoda condition" for the equals + ## 'pm'eq$3 + ## as this is a byte shorter than the more usual way of + ## writing inequalitys + ## $3 eq'pm' + ## as we don't need a space between the $3 & the eq... $2, ## The minutes is the easy bit just copy.. - $3 ? '' : $1>11 ? 'pm' : 'am' + $3 ? '' : $1 < 12 ? 'am' : 'pm' ## If we are converting from 12hr clock the third string is ## empty - if not and the time is <12 we return am o/w pm }rex; -- cgit From fcb709b3c5c138a2c135f0c0c06133f87bb08225 Mon Sep 17 00:00:00 2001 From: drbaggy Date: Tue, 16 Feb 2021 12:28:37 +0000 Subject: one-liner down to 117 characters! 109 bytes of usefulness! by switching to "pop" rather than "shift" --- challenge-100/james-smith/perl/ch-1.pl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/challenge-100/james-smith/perl/ch-1.pl b/challenge-100/james-smith/perl/ch-1.pl index 818f9781e2..4d83710a33 100644 --- a/challenge-100/james-smith/perl/ch-1.pl +++ b/challenge-100/james-smith/perl/ch-1.pl @@ -37,13 +37,15 @@ done_testing(); #23456789012345678901234567890123456789012345678901234567890 ## Just split so slightly more readable and fits on 60 char lines - -sub ft{$_[0]=~s{(\d+):(\d+)\s*(\wm|)}{sprintf'%02d:%02d%s', +## Not nasty hack - we pop rather than shift as it saves 2 bytes! +sub ft{pop=~s{(\d+):(\d+)\s*(\wm|)}{sprintf'%02d:%02d%s', ($1%12||(12*!$3))+12*('pm'eq$3),$2,$3?'':$1<12?'am':'pm'}re} ## This is more readable version with notes... sub fun_time { - return $_[0] =~ + return pop =~ + ## Note the nasty hack we pop rather than shift - that saves 2 bytes + ## in our golfdom.... s{ ## Split into 3 parts, $1 - hours, $2 - minutes & $3 - am/pm (\d+) : (\d+) \s* ( \wm | ) -- cgit From 42cd185a7c28ef3ed8071e1c9a8fcc03b14f51ea Mon Sep 17 00:00:00 2001 From: drbaggy Date: Tue, 16 Feb 2021 12:45:26 +0000 Subject: one-liner down to 112 characters! 104 bytes of usefulness! by not checking bits we assume to be correct in regexp --- challenge-100/james-smith/perl/ch-1.pl | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/challenge-100/james-smith/perl/ch-1.pl b/challenge-100/james-smith/perl/ch-1.pl index 4d83710a33..b682620f73 100644 --- a/challenge-100/james-smith/perl/ch-1.pl +++ b/challenge-100/james-smith/perl/ch-1.pl @@ -33,12 +33,15 @@ is( fun_time( '12:00 pm' ), '12:00' ); done_testing(); ## 72 chars ############################################################ -#00000000111111111122222222223333333333444444444455555555556 -#23456789012345678901234567890123456789012345678901234567890 ## Just split so slightly more readable and fits on 60 char lines ## Not nasty hack - we pop rather than shift as it saves 2 bytes! -sub ft{pop=~s{(\d+):(\d+)\s*(\wm|)}{sprintf'%02d:%02d%s', +## We assume that the minute portion will be two digits after the +## ":" then we don't need to check it.... + +## 112 bytes total - 104 inside the curly braces.. + +sub ft{pop=~s{(\d+)(:..)\s*(.m|)}{sprintf'%02d%s%s', ($1%12||(12*!$3))+12*('pm'eq$3),$2,$3?'':$1<12?'am':'pm'}re} ## This is more readable version with notes... @@ -48,18 +51,21 @@ sub fun_time { ## in our golfdom.... s{ ## Split into 3 parts, $1 - hours, $2 - minutes & $3 - am/pm - (\d+) : (\d+) \s* ( \wm | ) + (\d+) (:..) \s* ( .m | ) ## We assume all strings are valid - so we don't have to anchor ## at both ends or worry what the 12hr clock sufficies are - ## am/pm & \wm is shorter than [ap]m + ## am/pm and .m is shorter than [ap]m + ## + ## We assume that the time will always have a : followed + ## 2 digits... ## - ## Note if we right (\wm)? the 3rd capture variable $3 is - ## sometimes undefined - better is to use ([ap]m|) which + ## Note if we right (.m)? the 3rd capture variable $3 is + ## sometimes undefined - better is to use (.m|) which ## matches the same way but $3 is now an empty string not ## undefined when we have a 24 hour clock time } { - sprintf '%02d:%02d%s', + sprintf '%02d%s%s', ( $1 % 12 || ( 12 * ! $3 ) ) + 12 * ( 'pm' eq $3 ), ## Get hour modulo 12.. ## From 24hr to 12hr clock we need to convert 00:?? to 12:?? -- cgit From 24688579595442ac9896f6e644c5758be358f068 Mon Sep 17 00:00:00 2001 From: drbaggy Date: Tue, 16 Feb 2021 12:47:36 +0000 Subject: one-liner down to 111 characters! 103 bytes of usefulness! by not checking bits we assume to be correct in regexp --- challenge-100/james-smith/perl/ch-1.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/challenge-100/james-smith/perl/ch-1.pl b/challenge-100/james-smith/perl/ch-1.pl index b682620f73..8c284ce88a 100644 --- a/challenge-100/james-smith/perl/ch-1.pl +++ b/challenge-100/james-smith/perl/ch-1.pl @@ -39,9 +39,9 @@ done_testing(); ## We assume that the minute portion will be two digits after the ## ":" then we don't need to check it.... -## 112 bytes total - 104 inside the curly braces.. +## 111 bytes total - 103 inside the curly braces.. -sub ft{pop=~s{(\d+)(:..)\s*(.m|)}{sprintf'%02d%s%s', +sub ft{pop=~s{(.+)(:..)\s*(.m|)}{sprintf'%02d%s%s', ($1%12||(12*!$3))+12*('pm'eq$3),$2,$3?'':$1<12?'am':'pm'}re} ## This is more readable version with notes... @@ -51,7 +51,7 @@ sub fun_time { ## in our golfdom.... s{ ## Split into 3 parts, $1 - hours, $2 - minutes & $3 - am/pm - (\d+) (:..) \s* ( .m | ) + (.+) (:..) \s* ( .m | ) ## We assume all strings are valid - so we don't have to anchor ## at both ends or worry what the 12hr clock sufficies are ## am/pm and .m is shorter than [ap]m -- cgit From 532b80d8ba753876d1d06a55335fca6344b400db Mon Sep 17 00:00:00 2001 From: Frank Oosterhuis Date: Tue, 16 Feb 2021 14:00:22 +0100 Subject: TriangleSum --- challenge-100/frankivo/scala/TriangleSum.scala | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 challenge-100/frankivo/scala/TriangleSum.scala diff --git a/challenge-100/frankivo/scala/TriangleSum.scala b/challenge-100/frankivo/scala/TriangleSum.scala new file mode 100644 index 0000000000..3ee251de13 --- /dev/null +++ b/challenge-100/frankivo/scala/TriangleSum.scala @@ -0,0 +1,21 @@ +object TriangleSum { + val examples = Seq( + "[1], [2,4], [6,4,9], [5,1,7,2]", + "[3], [3,1], [5,2,3], [4,3,1,3]" + ) + + // def parseExample(e: String) : Array[Array[Int]] = { + def parseExample(e: String) : Unit = { + e + .split(" ") + .map(_.replaceAll("""([\[\]])""", "")) + .map(_.split(", ").toString) + .foreach(println) + } + + def main(args: Array[String]): Unit = { + examples + .take(1).map(parseExample) + // .foreach(println) + } +} \ No newline at end of file -- cgit From 651f7e3f4edebae34347dad3de22a888a119b87f Mon Sep 17 00:00:00 2001 From: drbaggy Date: Tue, 16 Feb 2021 13:16:22 +0000 Subject: go from s{}{} -> s/// saves a byte --- challenge-100/james-smith/perl/ch-1.pl | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/challenge-100/james-smith/perl/ch-1.pl b/challenge-100/james-smith/perl/ch-1.pl index 8c284ce88a..57352d1f30 100644 --- a/challenge-100/james-smith/perl/ch-1.pl +++ b/challenge-100/james-smith/perl/ch-1.pl @@ -39,22 +39,22 @@ done_testing(); ## We assume that the minute portion will be two digits after the ## ":" then we don't need to check it.... -## 111 bytes total - 103 inside the curly braces.. +## 110 bytes total - 102 inside the curly braces.. -sub ft{pop=~s{(.+)(:..)\s*(.m|)}{sprintf'%02d%s%s', -($1%12||(12*!$3))+12*('pm'eq$3),$2,$3?'':$1<12?'am':'pm'}re} +sub ft{pop=~s/(.+)(:..)\s*(.m|)/sprintf'%02d%s%s', +($1%12||(12*!$3))+12*('pm'eq$3),$2,$3?'':$1<12?'am':'pm'/re} ## This is more readable version with notes... sub fun_time { return pop =~ ## Note the nasty hack we pop rather than shift - that saves 2 bytes ## in our golfdom.... - s{ - ## Split into 3 parts, $1 - hours, $2 - minutes & $3 - am/pm + s/ + ## Split into 3 parts, $1 - hours, $2 - minutes & $3 - am-pm (.+) (:..) \s* ( .m | ) ## We assume all strings are valid - so we don't have to anchor ## at both ends or worry what the 12hr clock sufficies are - ## am/pm and .m is shorter than [ap]m + ## am-pm and .m is shorter than [ap]m ## ## We assume that the time will always have a : followed ## 2 digits... @@ -63,8 +63,7 @@ sub fun_time { ## sometimes undefined - better is to use (.m|) which ## matches the same way but $3 is now an empty string not ## undefined when we have a 24 hour clock time - } - { + / sprintf '%02d%s%s', ( $1 % 12 || ( 12 * ! $3 ) ) + 12 * ( 'pm' eq $3 ), ## Get hour modulo 12.. @@ -80,7 +79,7 @@ sub fun_time { ## The minutes is the easy bit just copy.. $3 ? '' : $1 < 12 ? 'am' : 'pm' ## If we are converting from 12hr clock the third string is - ## empty - if not and the time is <12 we return am o/w pm - }rex; + ## empty - if not and the time is <12 we return am otherwise pm + /rex; } -- cgit From 199ce9e768b33b95e6f721867e6f582bc5236e34 Mon Sep 17 00:00:00 2001 From: Mark A Date: Tue, 16 Feb 2021 08:18:02 -0700 Subject: initial ch-1.raku --- challenge-100/mark-anderson/raku/ch-1.raku | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 challenge-100/mark-anderson/raku/ch-1.raku diff --git a/challenge-100/mark-anderson/raku/ch-1.raku b/challenge-100/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..d3d24e28c9 --- /dev/null +++ b/challenge-100/mark-anderson/raku/ch-1.raku @@ -0,0 +1,26 @@ +use DateTime::Format; +use Time::Piece:from; +use Test; +plan 10; + +is fun-time("00:45"), "12:45 AM"; +is fun-time("01:45"), "01:45 AM"; +is fun-time("03:15"), "03:15 AM"; +is fun-time("13:45"), "01:45 PM"; +is fun-time("18:45"), "06:45 PM"; + +is fun-time("12:45 AM"), "00:45"; +is fun-time("01:45 AM"), "01:45"; +is fun-time("03:15 AM"), "03:15"; +is fun-time("01:45 PM"), "13:45"; +is fun-time("06:45 PM"), "18:45"; + +multi fun-time($T) +{ + strftime("%I:%M %p", DateTime.new("1970-01-01T$T:00Z")); +} + +multi fun-time($T where .ends-with("am"|"pm", :i)) +{ + Time::Piece.strptime("$T", "%r").strftime("%R"); +} -- cgit From 103011fba6d0de20a539d813bc036ba56b9de801 Mon Sep 17 00:00:00 2001 From: Mark A Date: Tue, 16 Feb 2021 08:22:04 -0700 Subject: initial ch-1.raku --- challenge-100/mark-anderson/raku/ch-1.raku | 2 ++ 1 file changed, 2 insertions(+) diff --git a/challenge-100/mark-anderson/raku/ch-1.raku b/challenge-100/mark-anderson/raku/ch-1.raku index d3d24e28c9..b9e82798ce 100644 --- a/challenge-100/mark-anderson/raku/ch-1.raku +++ b/challenge-100/mark-anderson/raku/ch-1.raku @@ -1,3 +1,5 @@ +#!/usr/bin/env raku + use DateTime::Format; use Time::Piece:from; use Test; -- cgit From e9853f8e34bf45f04de827b626cc774ae05b8c8f Mon Sep 17 00:00:00 2001 From: Mark A Date: Tue, 16 Feb 2021 08:31:10 -0700 Subject: initial ch-1.raku --- challenge-100/mark-anderson/raku/ch-1.raku | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge-100/mark-anderson/raku/ch-1.raku b/challenge-100/mark-anderson/raku/ch-1.raku index b9e82798ce..3caea93879 100644 --- a/challenge-100/mark-anderson/raku/ch-1.raku +++ b/challenge-100/mark-anderson/raku/ch-1.raku @@ -24,5 +24,5 @@ multi fun-time($T) multi fun-time($T where .ends-with("am"|"pm", :i)) { - Time::Piece.strptime("$T", "%r").strftime("%R"); + Time::Piece.strptime($T, "%r").strftime("%R"); } -- cgit From 5e2b0aa79e7407c83d921bfd0a39e45f2cebb536 Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Tue, 16 Feb 2021 17:37:49 +0000 Subject: - Added solution by Mark Anderson. --- stats/pwc-current.json | 233 +- stats/pwc-language-breakdown-summary.json | 60 +- stats/pwc-language-breakdown.json | 3936 ++++++++++++++--------------- stats/pwc-leaders.json | 370 +-- stats/pwc-summary-1-30.json | 106 +- stats/pwc-summary-121-150.json | 26 +- stats/pwc-summary-151-180.json | 106 +- stats/pwc-summary-181-210.json | 36 +- stats/pwc-summary-211-240.json | 52 +- stats/pwc-summary-31-60.json | 36 +- stats/pwc-summary-61-90.json | 48 +- stats/pwc-summary-91-120.json | 102 +- stats/pwc-summary.json | 44 +- 13 files changed, 2585 insertions(+), 2570 deletions(-) diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 5000db2b2a..88a001245d 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,48 +1,125 @@ { - "subtitle" : { - "text" : "[Champions: 12] Last updated at 2021-02-16 07:00:58 GMT" + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - }, - "borderWidth" : 0 + "series" : [ + { + "data" : [ + { + "y" : 2, + "name" : "Alexander Karelas", + "drilldown" : "Alexander Karelas" + }, + { + "drilldown" : "Gustavo Chaves", + "y" : 2, + "name" : "Gustavo Chaves" + }, + { + "y" : 3, + "name" : "James Smith", + "drilldown" : "James Smith" + }, + { + "y" : 4, + "name" : "Luca Ferrari", + "drilldown" : "Luca Ferrari" + }, + { + "drilldown" : "Mark Anderson", + "name" : "Mark Anderson", + "y" : 1 + }, + { + "drilldown" : "Mohammad S Anwar", + "name" : "Mohammad S Anwar", + "y" : 1 + }, + { + "drilldown" : "Roger Bell_West", + "y" : 4, + "name" : "Roger Bell_West" + }, + { + "y" : 3, + "name" : "Simon Green", + "drilldown" : "Simon Green" + }, + { + "drilldown" : "Simon Proctor", + "y" : 2, + "name" : "Simon Proctor" + }, + { + "y" : 1, + "name" : "Steven Wilson", + "drilldown" : "Steven Wilson" + }, + { + "y" : 4, + "name" : "Stuart Little", + "drilldown" : "Stuart Little" + }, + { + "drilldown" : "Vinod Kumar K", + "y" : 1, + "name" : "Vinod Kumar K" + }, + { + "name" : "W. Luis Mochan", + "y" : 3, + "drilldown" : "W. Luis Mochan" + } + ], + "colorByPoint" : 1, + "name" : "Perl Weekly Challenge - 100" } + ], + "subtitle" : { + "text" : "[Champions: 13] Last updated at 2021-02-16 17:37:24 GMT" }, "tooltip" : { - "pointFormat" : "{point.name}: {point.y:f}
", + "headerFormat" : "{series.name}
", "followPointer" : 1, - "headerFormat" : "{series.name}
" + "pointFormat" : "{point.name}: {point.y:f}
" }, "xAxis" : { "type" : "category" }, + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + } + } + }, "drilldown" : { "series" : [ { "name" : "Alexander Karelas", - "id" : "Alexander Karelas", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "Alexander Karelas" }, { + "name" : "Gustavo Chaves", "data" : [ [ "Perl", 2 ] ], - "id" : "Gustavo Chaves", - "name" : "Gustavo Chaves" + "id" : "Gustavo Chaves" }, { - "name" : "James Smith", "id" : "James Smith", "data" : [ [ @@ -53,9 +130,12 @@ "Blog", 1 ] - ] + ], + "name" : "James Smith" }, { + "id" : "Luca Ferrari", + "name" : "Luca Ferrari", "data" : [ [ "Raku", @@ -65,9 +145,17 @@ "Blog", 2 ] + ] + }, + { + "name" : "Mark Anderson", + "data" : [ + [ + "Raku", + 1 + ] ], - "id" : "Luca Ferrari", - "name" : "Luca Ferrari" + "id" : "Mark Anderson" }, { "data" : [ @@ -80,6 +168,8 @@ "id" : "Mohammad S Anwar" }, { + "id" : "Roger Bell_West", + "name" : "Roger Bell_West", "data" : [ [ "Perl", @@ -89,9 +179,7 @@ "Raku", 2 ] - ], - "name" : "Roger Bell_West", - "id" : "Roger Bell_West" + ] }, { "data" : [ @@ -104,31 +192,30 @@ 1 ] ], - "id" : "Simon Green", - "name" : "Simon Green" + "name" : "Simon Green", + "id" : "Simon Green" }, { + "id" : "Simon Proctor", "data" : [ [ "Raku", 2 ] ], - "name" : "Simon Proctor", - "id" : "Simon Proctor" + "name" : "Simon Proctor" }, { - "name" : "Steven Wilson", "id" : "Steven Wilson", "data" : [ [ "Perl", 1 ] - ] + ], + "name" : "Steven Wilson" }, { - "id" : "Stuart Little", "name" : "Stuart Little", "data" : [ [ @@ -139,20 +226,20 @@ "Raku", 2 ] - ] + ], + "id" : "Stuart Little" }, { "name" : "Vinod Kumar K", - "id" : "Vinod Kumar K", "data" : [ [ "Perl", 1 ] - ] + ], + "id" : "Vinod Kumar K" }, { - "name" : "W. Luis Mochan", "id" : "W. Luis Mochan", "data" : [ [ @@ -163,90 +250,18 @@ "Blog", 1 ] - ] + ], + "name" : "W. Luis Mochan" } ] }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } + "chart" : { + "type" : "column" }, "title" : { "text" : "Perl Weekly Challenge - 100" }, "legend" : { "enabled" : 0 - }, - "series" : [ - { - "colorByPoint" : 1, - "data" : [ - { - "y" : 2, - "name" : "Alexander Karelas", - "drilldown" : "Alexander Karelas" - }, - { - "name" : "Gustavo Chaves", - "y" : 2, - "drilldown" : "Gustavo Chaves" - }, - { - "drilldown" : "James Smith", - "y" : 3, - "name" : "James Smith" - }, - { - "drilldown" : "Luca Ferrari", - "name" : "Luca Ferrari", - "y" : 4 - }, - { - "drilldown" : "Mohammad S Anwar", - "y" : 1, - "name" : "Mohammad S Anwar" - }, - { - "name" : "Roger Bell_West", - "y" : 4, - "drilldown" : "Roger Bell_West" - }, - { - "y" : 3, - "name" : "Simon Green", - "drilldown" : "Simon Green" - }, - { - "y" : 2, - "name" : "Simon Proctor", - "drilldown" : "Simon Proctor" - }, - { - "y" : 1, - "name" : "Steven Wilson", - "drilldown" : "Steven Wilson" - }, - { - "name" : "Stuart Little", - "y" : 4, - "drilldown" : "Stuart Little" - }, - { - "drilldown" : "Vinod Kumar K", - "name" : "Vinod Kumar K", - "y" : 1 - }, - { - "drilldown" : "W. Luis Mochan", - "y" : 3, - "name" : "W. Luis Mochan" - } - ], - "name" : "Perl Weekly Challenge - 100" - } - ], - "chart" : { - "type" : "column" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 247cfd63c4..655ec0afc1 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,18 +1,42 @@ { + "legend" : { + "enabled" : "false" + }, + "title" : { + "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" + }, + "chart" : { + "type" : "column" + }, + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } + } + }, + "tooltip" : { + "pointFormat" : "{point.y:.0f}" + }, + "subtitle" : { + "text" : "Last updated at 2021-02-16 17:37:24 GMT" + }, "series" : [ { "name" : "Contributions", "dataLabels" : { + "format" : "{point.y:.0f}", "style" : { "fontSize" : "13px", "fontFamily" : "Verdana, sans-serif" }, - "color" : "#FFFFFF", - "rotation" : -90, - "align" : "right", - "format" : "{point.y:.0f}", + "enabled" : "true", "y" : 10, - "enabled" : "true" + "align" : "right", + "rotation" : -90, + "color" : "#FFFFFF" }, "data" : [ [ @@ -25,39 +49,15 @@ ], [ "Raku", - 3003 + 3004 ] ] } ], - "legend" : { - "enabled" : "false" - }, - "chart" : { - "type" : "column" - }, "yAxis" : { "title" : { "text" : null }, "min" : 0 - }, - "title" : { - "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" - }, - "xAxis" : { - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - } - }, - "type" : "category" - }, - "tooltip" : { - "pointFormat" : "{point.y:.0f}" - }, - "subtitle" : { - "text" : "Last updated at 2021-02-16 07:00:58 GMT" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index b25c763e52..e5732b4ab5 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,1823 +1,29 @@ { - "drilldown" : { - "series" : [ - { - "name" : "001", - "id" : "001", - "data" : [ - [ - "Perl", - 97 - ], - [ - "Raku", - 47 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "id" : "002", - "name" : "002", - "data" : [ - [ - "Perl", - 74 - ], - [ - "Raku", - 36 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "id" : "003", - "name" : "003", - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 52 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 10 - ] - ], - "name" : "004", - "id" : "004" - }, - { - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 12 - ] - ], - "id" : "005", - "name" : "005" - }, - { - "name" : "006", - "id" : "006", - "data" : [ - [ - "Perl", - 31 - ], - [ - "Raku", - 18 - ], - [ - "Blog", - 7 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 30 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 10 - ] - ], - "id" : "007", - "name" : "007" - }, - { - "name" : "008", - "id" : "008", - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 40 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 13 - ] - ], - "id" : "009", - "name" : "009" - }, - { - "data" : [ - [ - "Perl", - 34 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 11 - ] - ], - "name" : "010", - "id" : "010" - }, - { - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 10 - ] - ], - "id" : "011", - "name" : "011" - }, - { - "name" : "012", - "id" : "012", - "data" : [ - [ - "Perl", - 46 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 44 - ], - [ - "Raku", - 25 - ], - [ - "Blog", - 13 - ] - ], - "id" : "013", - "name" : "013" - }, - { - "data" : [ - [ - "Perl", - 54 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 15 - ] - ], - "id" : "014", - "name" : "014" - }, - { - "data" : [ - [ - "Perl", - 54 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 15 - ] - ], - "name" : "015", - "id" : "015" - }, - { - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 12 - ] - ], - "name" : "016", - "id" : "016" - }, - { - "data" : [ - [ - "Perl", - 44 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 12 - ] - ], - "name" : "017", - "id" : "017" - }, - { - "name" : "018", - "id" : "018", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 14 - ] - ] - }, - { - "name" : "019", - "id" : "019", - "data" : [ - [ - "Perl", - 54 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "name" : "020", - "id" : "020", - "data" : [ - [ - "Perl", - 49 - ], - [ - "Raku", - 37 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 10 - ] - ], - "id" : "021", - "name" : "021" - }, - { - "data" : [ - [ - "Perl", - 34 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 10 - ] - ], - "name" : "022", - "id" : "022" - }, - { - "id" : "023", - "name" : "023", - "data" : [ - [ - "Perl", - 51 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 11 - ] - ], - "id" : "024", - "name" : "024" - }, - { - "data" : [ - [ - "Perl", - 28 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 12 - ] - ], - "name" : "025", - "id" : "025" - }, - { - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 10 - ] - ], - "id" : "026", - "name" : "026" - }, - { - "id" : "027", - "name" : "027", - "data" : [ - [ - "Perl", - 29 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 9 - ] - ], - "id" : "028", - "name" : "028" - }, - { - "id" : "029", - "name" : "029", - "data" : [ - [ - "Perl", - 40 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "id" : "030", - "name" : "030", - "data" : [ - [ - "Perl", - 74 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 9 - ] - ], - "id" : "031", - "name" : "031" - }, - { - "data" : [ - [ - "Perl", - 57 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 10 - ] - ], - "name" : "032", - "id" : "032" - }, - { - "data" : [ - [ - "Perl", - 62 - ], - [ - "Raku", - 38 - ], - [ - "Blog", - 10 - ] - ], - "id" : "033", - "name" : "033" - }, - { - "id" : "034", - "name" : "034", - "data" : [ - [ - "Perl", - 30 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "name" : "035", - "id" : "035", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "name" : "036", - "id" : "036", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 34 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 9 - ] - ], - "id" : "037", - "name" : "037" - }, - { - "data" : [ - [ - "Perl", - 31 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 12 - ] - ], - "name" : "038", - "id" : "038" - }, - { - "data" : [ - [ - "Perl", - 29 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 12 - ] - ], - "id" : "039", - "name" : "039" - }, - { - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 10 - ] - ], - "id" : "040", - "name" : "040" - }, - { - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 9 - ] - ], - "name" : "041", - "id" : "041" - }, - { - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 11 - ] - ], - "name" : "042", - "id" : "042" - }, - { - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 11 - ] - ], - "name" : "043", - "id" : "043" - }, - { - "name" : "044", - "id" : "044", - "data" : [ - [ - "Perl", - 41 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 35 - ], - [ - "Blog", - 11 - ] - ], - "id" : "045", - "name" : "045" - }, - { - "data" : [ - [ - "Perl", - 44 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 10 - ] - ], - "name" : "046", - "id" : "046" - }, - { - "name" : "047", - "id" : "047", - "data" : [ - [ - "Perl", - 43 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "name" : "048", - "id" : "048", - "data" : [ - [ - "Perl", - 59 - ], - [ - "Raku", - 37 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "name" : "049", - "id" : "049", - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 36 - ], - [ - "Blog", - 12 - ] - ], - "name" : "050", - "id" : "050" - }, - { - "name" : "051", - "id" : "051", - "data" : [ - [ - "Perl", - 46 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "id" : "052", - "name" : "052", - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 14 - ] - ] - }, - { - "name" : "053", - "id" : "053", - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 41 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "id" : "054", - "name" : "054", - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 40 - ], - [ - "Blog", - 18 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 41 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 14 - ] - ], - "id" : "055", - "name" : "055" - }, - { - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 16 - ] - ], - "name" : "056", - "id" : "056" - }, - { - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 15 - ] - ], - "id" : "057", - "name" : "057" - }, - { - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 13 - ] - ], - "name" : "058", - "id" : "058" - }, - { - "id" : "059", - "name" : "059", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "id" : "060", - "name" : "060", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "name" : "061", - "id" : "061", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 14 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 26 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 11 - ] - ], - "name" : "062", - "id" : "062" - }, - { - "id" : "063", - "name" : "063", - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "name" : "064", - "id" : "064", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "id" : "065", - "name" : "065", - "data" : [ - [ - "Perl", - 32 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "name" : "066", - "id" : "066", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 14 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 18 - ] - ], - "name" : "067", - "id" : "067" - }, - { - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 13 - ] - ], - "id" : "068", - "name" : "068" - }, - { - "name" : "069", - "id" : "069", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "d