High and far
Weekly challenge 338 — 8 September 2025
Week 338: 8 Sep 2025
You are given an $m x $n
matrix.
Write a script to find the highest row sum in the given matrix.
Example 1 Input: @matrix = ([4, 4, 4, 4], [10, 0, 0, 0], [2, 2, 2, 9]) Output: 16 Row 1: 4 + 4 + 4 + 4 => 16 Row 2: 10 + 0 + 0 + 0 => 10 Row 3: 2 + 2 + 2 + 9 => 15 Example 2 Input: @matrix = ([1, 5], [7, 3], [3, 5]) Output: 10 Example 3 Input: @matrix = ([1, 2, 3], [3, 2, 1]) Output: 6 Example 4 Input: @matrix = ([2, 8, 7], [7, 1, 3], [1, 9, 5]) Output: 17 Example 5 Input: @matrix = ([10, 20, 30], [5, 5, 5], [0, 100, 0], [25, 25, 25]) Output: 100
This is a challenge where there will be a one-liner which is not straightforward to decipher, and as usual I have gone for a more verbose, but more transparent solution.
#!/usr/bin/perl # Blog: http://ccgi.campbellsmiths.force9.co.uk/challenge use v5.26; # The Weekly Challenge - 2025-09-08 use utf8; # Week 338 - task 1 - Highest row use warnings; # Peter Campbell Smith binmode STDOUT, ':utf8'; use Encode; highest_row([4, 4, 4, 4], [10, 0, 0, 0], [2, 2, 2, 9]); highest_row([1, 5], [7, 3], [3, 5]); highest_row([1, 2, 3], [3, 2, 1]); highest_row([10, 20, 30], [5, 5, 5], [0, 100, 0], [25, 25, 25]); highest_row([-1, -2, -3], [-4, -5, -6], [-7, -8, -9]); sub highest_row { my (@matrix, $highest, $row_sum, $row); # initialise @matrix = @_; $highest = -Inf; # find row sums for $row (0 .. scalar @matrix - 1) { $row_sum = 0; $row_sum += $_ for @{$matrix[$row]}; $highest = $row_sum if $row_sum > $highest; } # report say ''; print_matrix(qq[Input: ], \@matrix); say qq[Output: $highest]; } sub print_matrix { my ($legend, $matrix, $j); # format matrix ($legend, $matrix) = @_; for $j (0 .. @$matrix - 1) { print qq{$legend [} . join(', ', @{$matrix->[$j]}) . qq(]); say $j == @$matrix - 1 ? '' : ', '; $legend = ' ' x length($legend); } }
Input: [4, 4, 4, 4], [10, 0, 0, 0], [2, 2, 2, 9] Output: 16 Input: [1, 5], [7, 3], [3, 5] Output: 10 Input: [1, 2, 3], [3, 2, 1] Output: 6 Input: [10, 20, 30], [5, 5, 5], [0, 100, 0], [25, 25, 25] Output: 100 Input: [-1, -2, -3], [-4, -5, -6], [-7, -8, -9] Output: -6
Any content of this website which has been created by Peter Campbell Smith is in the public domain