DEV Community

Simon Green
Simon Green

Posted on

Weekly Challenge 082

Challenge 082

For both of these challenges, even though the requirement is matching two values, my solutions will work with two or more values.

TASK #1 › Common Factors

While there is probably a Math:: function that generates the factors of a given number, I'm of the belief that it defeats the point of the weekly challenge. I tend to only use List::Util functions, which is part of Perl core.

This is a relatively straight forward task. I create a loop from 1 to the minimum of the supplied values (any value greater than this won't be a factor of the minimum number). I then add that number to the result if the division of all inputs by the number results in no remainder.

Examples

» ./ch-1.pl 12 18
1, 2, 3, 6

» ./ch-1.pl 18 23
1
Enter fullscreen mode Exit fullscreen mode

TASK #2 › Interleave String

I'm really looking forward to seeing the solutions to this task by other Team PWC members. I'm not sure my solution is the best one, but it works. Let me also sing the praises of the map function. The best thing since sliced bread.

I start by short circuiting the code to return 0 if the length of the target is not the length of the other strings. No solution would be possible in this scenario.

The approach that I took was having any array of arrays called @remaining. Each row represents the remaining letters available from each string. It starts with one row representing all the strings.

I then work through each letter of the target string. Using the map function, I take the first letter off any string that starts with that letter.

For example, in the first example ('XY X XXY'), @remaining starts with (('XY', 'X')). After the first run, @remaining becomes (('Y', 'X'), ('XY', '')) as both strings start with an 'X'. The second iteration would result in (('Y', ''), ('Y', '')) removing the second 'X'. The final run would result with (('', ''), ('', '')) removing the Y in the last character.

If at any point remaining has no values, we return 0. Once we have exhausted all letters, we know their is a solution, so return 1.

Examples

» ./ch-2.pl XY X XXY
1

» ./ch-2.pl XXY XXZ XXXXZY
1

» ./ch-2.pl YX X XXY
0
Enter fullscreen mode Exit fullscreen mode

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay