Spoiler Alert: This weekly challenge deadline is due in a few days from now (on March 5, 2023 at 23:59). This blog post offers some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 1: Shortest Time
You are given a list of time points, at least 2, in the 24-hour clock format HH:MM.
Write a script to find out the shortest time in minutes between any two time points.
Example 1
Input: @time = ("00:00", "23:55", "20:00")
Output: 5
Since the difference between "00:00" and "23:55" is the shortest (5 minutes).
As a bystander in the evolution of Object-Oriented Programming in Perl,
and someone who is really only just starting to get the hang of Perl modules and packages
(still not any good at it), I get really quite overwhelmed by ideologies.
There is considerable debate about the right way to program things, the right
style, the right direction that Perl should go. It is Vim vs Emacs, Atari ST
vs Amiga, Mods vs Punks. Really one needs a language to do what one needs it
to do, simply, quickly and consistently. For an amateur, Perl has been able
to do exactly that for me. I code rubbishly, but hey, who's looking?
Last year, impressed with the apparent speed of an M1 Mac Mini I bought to try out, I explored its perl performance and wrote about it in a
blog post
. I used mainly my own benchmarks which were mostly representative of workloads I was interested in.
Spoiler Alert: This weekly challenge deadline is due in a few days from now (on February 26, 2023 at 23:59). This blog post offers some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 1: Third Highest
You are given an array of integers.
Write a script to find out the Third Highest if found otherwise return the maximum.
Example 1
Input: @array = (5,3,4)
Output: 3
First highest is 5. Second highest is 4. Third highest is 3.
'It is a capital mistake to theorize before one has data.' -- Sherlock Holmes, "A Scandal in Bohemia"
The mental excursion that led to this blog post started with a report from Olaf Alders that my Perl::Critic::Policy::Variables::ProhibitUnusedVarsStricter was generating a false positive on variables used only as defaults in subroutine signatures. After the first cut at fixing this I thought a regression test was in order. I did this by running both unpatched and patched versions of the policy against my Mini CPAN, and then diff on the outputs.
This has always taken the better part of a day to run, and given that it had to expand all the distributions first and then run a fairly brute-force policy against anything it found, I accepted this as the price of conscientiousness.
Spoiler Alert: This weekly challenge deadline is due in a few days from now (on February 19, 2023 at 23:59). This blog post offers some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 1: Monotonic Array
You are given an array of integers.
Write a script to find out if the given array is Monotonic. Print 1 if it is otherwise 0.
An array is Monotonic if it is either monotone increasing or decreasing.
Monotone increasing: for i <= j , nums[i] <= nums[j]
Monotone decreasing: for i <= j , nums[i] >= nums[j]
XS has a reputation of being ugly and cumbersome, but in my experience, it doesn't have to be. Let's take for example this snippet from my Thread::Csp::Promise class:
Spoiler Alert: This weekly challenge deadline is due in a couple of days from now (on February 12, 2023 at 23:59). This blog post offers some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 1: Special Quadruplets
You are given an array of integers.
Write a script to find out the total special quadruplets for the given array.
Special Quadruplets are such that satisfies the following 2 rules.1) nums[a] + nums[b] + nums[c] == nums[d]2) a < b < c < d
Example 1
Input: @nums = (1,2,3,6)
Output: 1
Since the only special quadruplets found is $nums[0] + $nums[1] + $nums[2] == $nums[3].
'A fair jaw-cracker dwarf-language must be.' -- Samwise Gamgee, The Lord of the Rings, II/iii: "The Ring Goes South", as quoted in regcomp.c, the Perl regular expression compiler.
As you would expect, this category gets you warnings about possibly-problematic regular expression constructions. A couple specific examples are:
Assuming NOT a POSIX class ...
This warning is about things that look kind of like POSIX character classes, but do not parse that way. The full diagnostic gives examples like [[:alnum]] (missing colon) and [[:digit:xyz] (missing right square bracket). These parse like simple character classes ([:[almnu]\] and [:[dgitxyz] respectively), so without the warning you get a hard-to-diagnose bug.
Unescaped left brace in regex is passed through ...
Efforts to eliminate unescaped left braces so that they are available for new syntax have been underway since 5.17.0, released May 2012. As I recall, this effort turned to be much harder than originally anticipated because at least one toolchain external to Perl (autoconf if memory serves) relied on this behavior.
1997 gegründet, gehört STRATO mit über 4 Millionen Domains und mehr als 2 Millionen Kunden heute zu den größten Webhosting-Anbietern weltweit. STRATO beschäftigt rund 500 Mitarbeiter und betreibt zwei TÜV-zertifizierte Rechenzentren mit über 70.000 Servern in Berlin und Karlsruhe. Die STRATO AG ist ein Unternehmen der United Internet-Gruppe.
Spoiler Alert: This weekly challenge deadline is due in a few days from now (on February 5, 2023 at 23:59). This blog post offers some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 1: Consecutive Odds
You are given an array of integers.
Write a script to print 1 if there are THREE consecutive odds in the given array otherwise print 0.
The re module provides functionality relating to Perl's regular expressions. It is either a module in the sense of potentially exporting stuff into your name space or a pragma in the sense of modifying the behavior of Perl within a lexical scope, or both, depending on how you use it.
The pragmatic functionality tweaks the regular expressions themselves in various ways:
Time to look back and review how the year 2021 was for me.
Perl Weekly newsletter
As you all know, I have been editing Perl weekly newsletterGabor Szabo. We agreed, I edit the even numbered newsletter and Gabor would do odd numbered ones. So that way, I got the honour to edit the 500th edition of the weekly newsletter. I am now looking forward to my personal, 100th edition. As of today, I have edited 96 in total.
The [Perl] Weekly Challenge
Thanks to the Team PWC, I completed one more year of weekly challenge. It may not sound a big deal but for me it is. I wouldn't have done without the support of the team. I would like to mention one name, Colin Crain, our in-house, Perl reviewer for the hard work in reviewing Perl solutions every week without fail for so many months now.