Posts

Robbie Hatley's Solutions, in Perl, for The Weekly Challenge #296 ("String Compression & Matchstick Squares")

Image
For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle with two parts, cycling every Sunday. You can find it here: The Weekly Challenge The Weekly Challenge for the week of 2024-11-10 through 2024-11-16 is #296. The tasks for challenge #296 are as follows: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Task 296-1: String Compression Submitted by: Mohammad Sajid Anwar You are given a string of alphabetic characters, $chars. Write a script to compress the string with run-length encoding, as shown in the examples. A compressed unit can be either a single character or a count followed by a character. BONUS: Write a decompression function. Example 1: Input: $chars = "abbc" Output: "a2bc" Example 2: Input: $chars = "aaabccc" Output: "3ab3c" Example 3: Input: $chars = "abcc" Output: "ab2c" Since this problem involves an input consisting of a string of character

Robbie Hatley's Solutions, in Perl, for The Weekly Challenge #295 ("Recursive Segmentation")

Image
For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle with two parts, cycling every Sunday. You can find it here: The Weekly Challenge The Weekly Challenge for the week of 2024-11-10 through 2024-11-16 is #295. The tasks for challenge #295 are as follows: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Task 295-1: Word Break Submitted by: Mohammad Sajid Anwar Write a script to return true-or-false depending on whether- or-not a given string can be segmented into a sequence of one-or-more words from a given list of words. Example 1: Input: string = 'weeklychallenge' words = ("challenge", "weekly") Output: true Example 2 Input: string = 'perlrakuperl' words = ("raku", "perl") Output: true Example 3 Input: string = 'sonsanddaughters' words = ("sons", "sand", "daughters") Output: false This problem (like the sec

Robbie Hatley's Solutions, in Perl, for The Weekly Challenge #294 ("Consecutive Sequence" and "Next Permutation")

Image
For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle with two parts, cycling every Sunday. You can find it here: The Weekly Challenge The Weekly Challenge for the week of 2024-11-03 through 2024-11-09 is #294. The tasks for challenge #294 are as follows: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Task 294-1: Consecutive Sequence Submitted by: Mohammad Sajid Anwar You are given an unsorted array of integers, @ints. Write a script to return the length of the longest consecutive elements sequence. Return -1 if none found. The algorithm must run in O(n) time. Example 1: Input: @ints = (10, 4, 20, 1, 3, 2) Output: 4 The longest consecutive sequence (1, 2, 3, 4). The length of the sequence is 4. Example 2: Input: @ints = (0, 6, 1, 8, 5, 2, 4, 3, 0, 7) Output: 9 Example 3: Input: @ints = (10, 30, 20) Output: -1 I could first sort the array, but that would be O(n*log(n)), not O(n). Faster will be to make a hash and

Robbie Hatley's Solutions, in Perl, for The Weekly Challenge #293 ("Dominos" and "Boomerangs")

Image
For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle with two parts, cycling every Sunday. You can find it here: The Weekly Challenge The Weekly Challenge for the week of 2024-10-27 through 2024-11-02 is #293. The tasks for challenge #293 are as follows: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Task 293-1: Similar Dominos Submitted by: Mohammad Sajid Anwar You are given a list of dominos, @dominos. Write a script to return the number of dominoes that are "similar" to any other domino. $dominos[i] = [a, b] and $dominos[j] = [c, d] are "similar" if either (a = c and b = d) or (a = d and b = c). Example 1: Input: @dominos = ([1, 3], [3, 1], [2, 4], [6, 8]) Similar Dominos are $dominos[0], $dominos[1], so output is 2. Example 2: Input: @dominos = ([1, 2], [2, 1], [1, 1], [1, 2], [2, 2]) Similar Dominos are $dominos[0], $dominos[1], $dominos[3], so output is 3. This is just a matter of follo

Robbie Hatley's Solutions, in Perl, for The Weekly Challenge #292 ("Twice Largest" and "Zuma Game")

Image
For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle with two parts, cycling every Sunday. You can find it here: The Weekly Challenge The Weekly Challenge for the week of 2024-10-20 through 2024-10-26 is #292. The tasks for challenge #292 are as follows: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Task 292-1: "Twice Largest" Submitted by: Mohammad Sajid Anwar You are given an array of integers, @ints, where the largest integer is unique. Write a script to find whether the largest element in the array is at least twice as big as every other element in the array. If it is, return the index of the largest element; else return -1. Example 1: Input: (2, 4, 1, 0) The largest integer is 4 (with index 1), and it as at-least twice as large as every other element, so return its index, 1. Example 2: Input: (1, 2, 3, 4) The largest integer is 4, but it's less than twice as large as the nex

Robbie Hatley's Solutions To The Weekly Challenge #291 (Middle Index and Poker)

Image
For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle with two parts, cycling every Sunday. You can find it here: The Weekly Challenge The Weekly Challenge for the week of 2024-10-13 through 2024-10-19 is #291. The tasks for challenge #291 are as follows: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Task 291-1: "Middle Index" Submitted by: Mohammad Sajid Anwar You are given an array of integers, @ints. Write a script to find the leftmost middle index (MI) i.e. the smallest amongst all the possible ones. A "middle index" is an index where ints[0] + ints[1] + ... + ints[MI-1] == ints[MI+1] + ints[MI+2] + ... + ints[ints.length-1]. If MI == 0, the left side sum is considered to be 0. Similarly, if MI == ints.length - 1, the right side sum is considered to be 0. Return the leftmost MI that satisfies the condition, or -1 if there is no such index. Example 1: Input: @ints = (2, 3, -1, 8, 4)

Robbie Hatley's Solutions To The Weekly Challenge #290 (With A Touch Of Macbeth)

Image
For those not familiar with "The Weekly Challenge", it is a weekly programming puzzle with two parts, cycling every Sunday. You can find it here: The Weekly Challenge The Weekly Challenge for the week of 2024-10-06 through 2024-10-12 is #290. Because these tasks both involve doubling things, my theme for this week is the witches' song from William Shakespeare's play Macbeth, Act IV, scene 1: Double, double toil and trouble; Fire burn and caldron bubble. Fillet of a fenny snake, In the caldron boil and bake; Eye of newt and toe of frog, Wool of bat and tongue of dog, Adder's fork and blind-worm's sting, Lizard's leg and howlet's wing, For a charm of powerful trouble, Like a hell-broth boil and bubble. The tasks for challenge #290 are as follows: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Task 290-1: "Double Exists" Submitted by: Mohammad Sajid Anwar You are given an array of integers, @ints. Write a script