Robbie Hatley's Solutions To The Weekly Challenge #270

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-05-19 through 2024-05-25 is #270. Its tasks are as follows:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Task 270-1: Special Positions
Submitted by: Mohammad Sajid Anwar
You are given a m x n binary matrix. Write a script to return
the number of special positions in the given binary matrix.
A position (i, j) is called "special" if $matrix[i][j] == 1
and all other elements in the row i and column j are 0.

Example 1 input:
   [1, 0, 0],
   [0, 0, 1],
   [1, 0, 0],
There is only one special position (1, 2) as $matrix[1][2] == 1
and all other elements in row 1 and column 2 are 0.
Expected output: 1

Example 2 input:
   [1, 0, 0],
   [0, 1, 0],
   [0, 0, 1],
Special positions are (0,0), (1, 1) and (2,2).
Expected output: 3

The method I used was, I first made lists of sums-of-elements for all rows and columns, then I counted elements for which value, list-sum, and column-sum are all 1:

Robbie Hatley's Perl Solution to The Weekly Challenge 270-1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Task 270-2: Equalize Array
Submitted by: Mohammad Sajid Anwar

You are give an array of integers, @ints and two integers,
$x and $y. Write a script to execute one of the two options:

Level 1:
Pick an index i of the given array and do $ints[i] += 1

Level 2:
Pick two different indices i,j and do $ints[i] +=1 and
$ints[j] += 1.

You are allowed to perform as many levels as you want to make
every elements in the given array equal. There is cost attached
for each level. For Level 1 the cost is $x, and $y for Level 2.
In the end return the minimum cost to get the work done.

Example 1:
Input: @ints = (4, 1), $x = 3 and $y = 2
Level 1: i=1, so $ints[1] += 1.
@ints = (4, 2)
Level 1: i=1, so $ints[1] += 1.
@ints = (4, 3)
Level 1: i=1, so $ints[1] += 1.
@ints = (4, 4)
We perforned operation Level 1, 3 times.
So the total cost would be 3 x $x => 3 x 3 => 9
Expected output: 9

Example 2:
Input: @ints = (2, 3, 3, 3, 5), $x = 2 and $y = 1
Level 2: i=0, j=1, so $ints[0] += 1 and $ints[1] += 1
@ints = (3, 4, 3, 3, 5)
Level 2: i=0, j=2, so $ints[0] += 1 and $ints[2] += 1
@ints = (4, 4, 4, 3, 5)
Level 2: i=0, j=3, so $ints[0] += 1 and $ints[3] += 1
@ints = (5, 4, 4, 4, 5)
Level 2: i=1, j=2, so $ints[1] += 1 and $ints[2] += 1
@ints = (5, 5, 5, 4, 5)
Level 1: i=3, so $ints[3] += 1
@ints = (5, 5, 5, 5, 5)
We perforned operation Level 1, 1 time and Level 2, 4 times.
So the total cost would be (1 x $x) + (3 x $y) => (1 x 2) + (4 x 1) => 6
Expected output: 6

Sorry, but I didn't have the time or energy this week to solve this, so you're on your own on this one.

That's it for challenge 270; see you on challenge 271!

Comments

Popular posts from this blog

Robbie Hatley's Solutions To The Weekly Challenge #239

Robbie Hatley's Solutions To The Weekly Challenge #262

Robbie Hatley's Solutions To The Weekly Challenge #227