Each week Mohammad S. Anwar sends out The Weekly Challenge, a chance for all of us to come up with solutions to two weekly tasks. My solutions are written in Python first, and then converted to Perl. It's a great way for us all to practice some coding.
Task 1: Acronym
Task
You are given an array of strings and a check string.
Write a script to find out if the check string is the acronym of the words in the given array.
My solution
Both of these weeks solutions are one-liners so there isn't much to explain. For this task, I take the first each of each words and do a case insensitive comparison with the acronym.
Both the Python and Perl solutions use the map
function to get the first letter, and perform a join to calculate the first_letters
variable.
Python:
first_letters = ''.join(map(lambda w: w[0], words))
print('true' if first_letters.lower() == acronym.lower() else 'false')
Perl:
my $first_letters = join( '', map { substr( $_, 0, 1 ) } @words );
say lc($first_letters) eq lc($acronym) ? 'true' : 'false';
Examples
$ ./ch-1.py Perl Python Pascal ppp
true
$ ./ch-1.py Perl Raku rp
false
$ ./ch-1.py Oracle Awk C oac
true
Task 2: Build Array
Task
You are given an array of integers.
Write a script to create an array such that new[i] = old[old[i]]
where 0 <= i < new.length
.
My solution
Not much to this task. Generate a list based on the specifications in the task.
Although it might be argued that this is a trick task. If read at face value. new.length
is 0, and thus an empty list (array in Perl) would be the 'correct' solution :)
Python:
solution = [ ints[ints[i]] for i in range(len(ints))]
print(*solution, sep=', ')
Perl:
my @solution = ( map { $ints[ $ints[$_] ] } ( 0 .. $#ints ) );
say join ', ', @solution;
Examples
$ ./ch-2.py 0 2 1 5 3 4
0, 1, 2, 4, 5, 3
$ ./ch-2.py 5 0 1 2 3 4
4, 5, 0, 1, 2, 3
Top comments (0)