Spoiler Alert: This weekly challenge deadline is due in a couple of days (May 24, 2020). 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: Max Sub-Array Product
Given a list of 4 or more numbers, write a script to find the contiguous sublist that has the maximum product.
Example:
Input: [ 2, 5, -1, 3 ]
Output: [ 2, 5 ] which gives maximum product 10.
Max Sub-Array Product in Raku
Let’s start with a simple loop over a list of indices, as we would do in most procedural programming languages. We loop over the existing indices of the input array, compute the product of each item with the next one, and store in the @max array the max product so far, as well as the two items that led to it:
Several YAML modules allow loading and dumping objects.
When loading untrusted data, this can be a security vulnerability, if this
feature is enabled.
You can create any kind of object with YAML. The creation itself is
not the critical part, but if the class has a DESTROY method, it will be
called once the object is deleted. An example with File::Temp removing
files can be found here:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=862373
YAML::Syck had the option to disable this
feature via $YAML::Syck::LoadBlessed for a long time. Since 2018, also
YAML.pm and
YAML::XS have this variable.
You are given a string “123456789”. Write a script that would insert ”+” or ”-” in between digits so that when you evaluate, the result should be 100.
We can populate each place “between digits” with one of three possible values: a plus sign, minus sign, or nothing. To check all the possible permutations, we’ll use an indicator function similarly to The Knapsack Problem. In this case, though, there are three possible values, so we need to loop over numbers in the ternary numeral system.
The only operation we’ll need will be the increment, so we don’t need the full support for arithmetic in base 3. We can implement the increment ourselves: we start from the right of the number, change any 2 into 0 and move left. Once we find 0 or 1, we increment it and we’re done.
To create the expression, we just need to intersperse the digits with the operators. See the apply subroutine below.
Please note that this blog post will be shorter than usual, since I’m a bit short of time to prepare it.
Task 1: Excel Columns
Write a script that accepts a number and returns the Excel Column Name it represents and vice-versa.
Excel columns start at A and increase lexicographically using the 26 letters of the English alphabet, A..Z. After Z, the columns pick up an extra “digit”, going from AA, AB, etc., which could (in theory) continue to an arbitrary number of digits. In practice, Excel sheets are limited to 16,384 columns.
Example:
Input Number: 28
Output: AB
Input Column Name: AD
Output: 30
We are really happy to announce that Curtis “Ovid” Poe will present a keynote at the
22nd Perl/Raku workshop in March in Erlangen!
Curtis runs Tau Station and is a long time contributor
to the workshop.
The list of accepted talks has grown, with varied topics from
“Progressing from Humans to Developers”, “A new Lisp, in Perl” and
“Querying the Etherum Blockchain Nodes with Raku”. All accepted talks
are listed here .
Since we still have some slots free for talks, we have extended the deadline
for talk submission to the 3rd February 2020. If you have a topic you want
to present, please submit your talk .
We’d also like to thank our sponsors for supporting the Perl and Raku community
Well it looks like a wrap for PAWS XML as the last thing I am working on is getting the test suite to pass
Looking at S3 I have only 1 error with the 09_requestst.t test suite;
ok 829 - Call S3->SelectObjectContent from t/09_requests/s3-select-object-content.request
not ok 830 - Got content eq from request
# Failed test 'Got content eq from request'
# at t/09_requests.t line 123.
# got: '<SelectObjectContentRequest xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><InputSerialization><CompressionType>NONE</CompressionType></InputSerialization><OutputSerialization><CSV><FieldDelimiter>\,</FieldDelimiter><QuoteCharacter>\'</QuoteCharacter><QuoteEscapeCharacter>\"</QuoteEscapeCharacter><QuoteFields>ASNEEDED</QuoteFields><RecordDelimiter>\\n</RecordDelimiter></CSV></OutputSerialization><Expression>MyExpression</Expression><ExpressionType>SQL</ExpressionType></SelectObjectContentRequest>'
# expected: '<InputSerialization><CompressionType>NONE</CompressionType></InputSerialization><OutputSerialization><CSV><FieldDelimiter>\,</FieldDelimiter><QuoteCharacter>\'</QuoteCharacter><QuoteEscapeCharacter>\"</QuoteEscapeCharacter><QuoteFields>ASNEEDED</QuoteFields><RecordDelimiter>\\n</RecordDelimiter></CSV></OutputSerialization>'
I rechecked the API and my real world test and found the action 'SelectObjectContent
' it is a one off case in S3 that requires the root tag and the 'xmlns' to be present;
When
last we saw our heroes,
what they thought was
the brink of success turned out to be the precipice
of hasty interpretation and now they are dangling
for dear life on the branch of normalization!
how's that for tortured metaphor!
If you use raw values for your
k-means clustering,
dimensions with large values or large ranges can
swamp smaller dimensions and skew your clusters.
The process of normalization tries to bring everything
into the same range, usually [0,1], although your choices
on how to transform the ranges are also significant.
There is not always one best way to do it and,
as usual, get familiar with your dataset and use
your judgement.
Spoiler Alert: This weekly challenge deadline is due in a few hours. 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: Linked List Partition
You are given a linked list and a value k. Write a script to partition the linked list such that all nodes less than k come before nodes greater than or equal to k. Make sure you preserve the original relative order of the nodes in each of the two partitions.
For over a decade now, I've been running public training classes in both presentation skills
and software development in conjunction with the Swiss Institute of Bioinformatics,
the University of Lausanne, and the École Polytechnique Fédérale de Lausanne.
This year, in the week of March 9-13, we're offering my full set of
Presentation Skills classes as a three-day sequence (though, of course, you can also sign up
for just one or two of the classes, if you prefer):
These two classes are based on my popular Perl courses on these topics, but I've now
redesigned and adapted them to be entirely language-neutral, so they're equally useful
to developers working in any other mainstream language(s).
There are many reasons to use Docker Images, from setting up a development environment to pushing your code to production. The primary/first reason which pushes me to start using some Docker Images is "Continuous Integration".
When maintaining a Perl package used by multiple users/companies (or not), you absolutely want to know how your code behaves on different versions of Perl. Even if you could have multiple versions of Perl installed on your development environment, most of the time, the development is only performed using a single version of Perl.
Continuous Integration system like Travis CI or GitHub Workflows allows you to run your test suite on every push, pull request... without the need of testing manually on all Perl Versions.
When testing your code on a container (or Virtual Machine) you do not want to install or compile a fresh version of Perl each time... This is a slow operation, that ideally, should be done once.
Shorewall 5.2.3.5 is now available for download. Shorewall is a gateway/firewall configuration tool for GNU/Linux, written in Perl.
Problems Corrected:
1) A typo in the FTP documentation has been corrected.
2) The recommended mss setting when using IPSec with ipcomp
has been corrected.
3) A number of incorrect links in the manpages have been
corrected.
4) The 'bypass' option is now allowed when specifying an
NFQUEUE policy. Previously, specifying that option resulted
in an error.
5) Corrected IPv6 Address Range parsing.
Previously, such ranges were required to be of the form
[-] rather than the more standard form
[]-[]. In the snat file (and in nat actions),
the latter form was actually flagged as an error while in
other contexts, it resulted in a less obvious error being
raised.
6) The manpages have been updated to refer to
https://shorewall.org rather than http://www.shorewall.org.
Spoiler Alert: This weekly challenge deadline is due in a couple of days (May 3, 2020). 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: Compare Versions
Compare two given version number strings v1 and v2 such that:
- If v1 > v2 return 1- If v1 < v2 return -1- Otherwise, return 0
The version numbers are non-empty strings containing only digits, and the dot (“.”) and underscore (“”) characters. (“” denotes an alpha/development version, and has a lower precedence than a dot, “.”). Here are some examples:
This year we've got one of the high-traffic locations, on the ground floor where Free Software Foundation Europe set up last year, right next to the stairway to *all* the dev rooms. So we're looking for volunteers to come and talk about both Perl and Raku at FOSDEM 2020 in Brussels. If I haven't already talked to you, please email me at drforr [at] pobox (dot) com and give me an idea of your availability and what you'd want to do. We've made arrangements for the usual booth swag, and will have pamphlets to hand out and books to sell on both Raku and Perl.
Again, if you're able to give us a hand or know someone that can, send me email at drforr [at] pobox (dot) com and give me an idea of when you're available and how much you can help out.
There are 5 rings in the Olympic Logo [as shown below]. They are colour coded as in Blue, Black, Red, Yellow and Green. We have allocated some numbers to these rings as below: Blue: 8, Yellow: 7, Green: 5, Red: 9. The Black ring is empty currently. You are given the numbers 1, 2, 3, 4 and 6. Write a script to place these numbers in the rings so that the sum of numbers in each ring is exactly 11.
My first idea was to go over all the possible permutation of the numbers and report those that satisfy the sum condition. I chose Math::Combinatorics as the module to handle the permutations.
Spoiler Alert: This weekly challenge deadline is due in a couple of hours. 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: Tree Inversion
You are given a full binary tree of any height, similar to the one below:
1
/ \
2 3
/ \ / \
4 5 6 7
Write a script to invert the tree, by mirroring the children of every node, from left to right. The expected output from the tree above would be:
Finally things were looking my way. I plowed thought the remaining CloudFront actions and got them all to work without any more changes to Paws.
In the end I checked in 30+ new tests cases and over 2k of tests the other day. So I can safely say that 'CloudFront' is fully operational.
That leaves only 'Route53' to look and for me this is somewhat problematic. The Route53 api deals with 'Domains', 'Checks', 'Hosts', 'Traffic' and such. To test 90% of the actions in this API you will need
Have at least one registered DNS domains to start
Know how to create a Hosts for a Domain
Know how to config a Host for a Domain and most importantly
Have some spare cash to pay for all the actions you are mucking with
As I fail on all 4 of the above I am not comfortable with creating working scrips for this API.
[This is an addendum post to a series. You may want to begin at the beginning. The last update was update #2.
IMPORTANT NOTE! When I provide you links to code on GitHub, I’m giving you links to particular commits. This allows me to show you the code as it was at the time the blog post was written and insures that the code references will make sense in the context of this post. Just be aware that the latest version of the code may be very different.]
In case you missed my talk on Date::Easy from a couple years back, I’ll sum it up for you: dates are hard, y’all.