Posts

Robbie Hatley's Solutions To The Weekly Challenge #218

For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle, usually with two parts, cycling every Sunday. You can find it here: The Weekly Challenge This week (2023-05-21 through 2023-05-27) is weekly challenge #218. Task 1 is as follows: "Given a list of 3 or more integers, write a script to find the 3 integers whose product is maximum and return their product." This is just a matter of trying all combinations and seeing which is max. I use the "Math::Combinatorics" CPAN module again (it's becoming one of my favorite go-to modules): Robbie Hatley's Solution to The Weekly Challenge 218-1 Task 2 is as follows: "You are given a m x n binary matrix i.e. having only 1 and 0. You are allowed to make as many moves as you want to get the highest score. A move can be either toggling each value in a row or column. To get the score, convert the each row binary to dec and return the sum." Yikes. There is

Robbie Hatley's Solutions To The Weekly Challenge #217

For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle, usually with two parts, cycling every Sunday. You can find it here: The Weekly Challenge This week (2023-05-14 through 2023-05-20) is weekly challenge #217. Task 1 is as follows: "Given an n x n matrix of real numbers (where n >= 2), write a script to find 3rd smallest element in the sorted matrix." This is pretty simple. To get the 3rd-smallest member of a matrix, just dump the rows into an array, sort it, and print element 2: Robbie Hatley's Solution to The Weekly Challenge 217-1 Task 2 is as follows: "You are given a list of positive integers. Write a script to concatenate the integers to form the highest possible value." There are two basic ways I can see to approach this: Firstly, one could make a special sort algorithm which sorts the numbers in such a way that, when they're concatenated, one gets the greatest possible numerical value

Robbie Hatley's Solutions To The Weekly Challenge #216

For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle, usually with two parts, cycling every Sunday. You can find it here: The Weekly Challenge This week (2023-05-07 through 2023-05-13) is weekly challenge #216. Task 1 is as follows: "You are given a list of words and a random registration number. Write a script to find all the words in the given list that has every letter in the given registration number." This is pretty simple. Just check each word to see if it contains all of the letters from the registration string, then output the subset of the original word set which contains those members which contain all registration letters. I use a ranged for loop to push "registered" words onto a "@regd_wrds" array: Robbie Hatley's Solution to The Weekly Challenge 216-1 Task 2 is as follows: "You are given a list of word stickers and a target word. Write a script to find out how many word sticke

Robbie Hatley's Solutions To The Weekly Challenge #215

For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle, usually with two parts, cycling every Sunday. You can find it here: The Weekly Challenge This week (2023-04-30 through 2023-05-06) is weekly challenge #215. Task 1 is as follows: "You are given a list of words (alphabetic characters only) of same size. Write a script to remove all words not sorted alphabetically and print the number of words in the list that are not alphabetically sorted." I found the solution easy, just a matter of determining which words are "sorted" by comparing each $word to join(sort(split($word))), like so: Robbie Hatley's Perl Solution to The Weekly Challenge 215-1 Task 2 is as follows: "You are given a list of numbers having just 0 and 1. You are also given placement count (>=1). Write a script to find out if it is possible to replace 0 with 1 the given number of times in the given list. The only condition is that you

Robbie Hatley's Solutions To The Weekly Challenge #214

For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle, usually with two parts, cycling every Sunday. You can find it here: The Weekly Challenge This week (2023-04-23 through 2023-04-29) is weekly challenge #214. Unfortunately, I ran out of time on this one, so this entry is just a stub. 215 will be complete, though. Task 1 is as follows: "Task description would have gone here." My comments would have gone here. My solution would have been: Robbie Hatley's Perl Solution to The Weekly Challenge 213-1 Task 2 is as follows: "Task description would have gone here." My comments would have gone here. My solution would have been: Robbie Hatley's Perl Solution to The Weekly Challenge 212-2 Well that was a bloody disaster. :-( But I'll see you on 215! :-)

Robbie Hatley's Perl Solutions To The Weekly Challenge #213

For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle, usually with two parts, cycling every Sunday. You can find it here: The Weekly Challenge This week (2023-04-16 through 2023-04-22) is weekly challenge #213. Task 1 is as follows: "Write a script to sort a list of positive integers so that the sorted list consists of the even integers in ascending order followed by the odd integers in ascending order." I found this super-simple: Robbie Hatley's Perl Solution to The Weekly Challenge 213-1 Task 2 is as follows: You are given a list of bidirectional routes defining a network of nodes, as well as source and destination node numbers. Write a script to find the route from source to destination that passes through fewest nodes. That one, I didn't have time to complete, but here's a stub, as far as I got with it: Robbie Hatley's Perl Solution to The Weekly Challenge 212-2 That's it for 213; see you

Robbie Hatley's Perl Solutions To The Weekly Challenge #212

For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle, usually with two parts, cycling every Sunday. You can find it here: The Weekly Challenge This week (2023-04-09 through 2023-04-15) is weekly challenge #212. Task 1 is as follows: You are given a word having alphabetic characters only, and a list of positive integers of the same length. Write a script to print the new word generated after jumping forward each letter in the given word by the integer in the list. The given list would have exactly the number as the total alphabets in the given word. This is like a Caesar cipher but with the added kink that every index within the plaintext gets rotated an independent amount. I found it very straightforward to program, just a matter of doing chr(65 + (ord($a)-65+$j)%26) for uppercase and chr(97 + (ord($a)-97+$j)%26) for lowercase: Robbie Hatley's Perl Solution to The Weekly Challenge 212-1 Task 2 is as follows: You are given a