DEV Community

Cover image for 2D Array - HackerRank JavaScript Solution
Ibukun Demehin
Ibukun Demehin

Posted on

7 1

2D Array - HackerRank JavaScript Solution

Given a 6 X 6 Array arr:

1 1 1 0 0 0
0 1 0 0 0 0
1 1 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
Enter fullscreen mode Exit fullscreen mode

An hourglass in A is a subset of values with indices falling in this pattern in arr's graphical representation:

a b c
  d
e f g
Enter fullscreen mode Exit fullscreen mode

There are 16 hourglasses in arr. An hourglass sum is the sum of an hourglass' values. Calculate the hourglass sum for every hourglass in arr, then print the maximum hourglass sum. The array will always be 6 X 6.

Example

arr =

-9 -9 -9  1 1 1 
 0 -9  0  4 3 2
-9 -9 -9  1 2 3
 0  0  8  6 6 0
 0  0  0 -2 0 0
 0  0  1  2 4 0
Enter fullscreen mode Exit fullscreen mode

The 16 hourglass sums are:

-63, -34, -9, 12, 
-10,   0, 28, 23, 
-27, -11, -2, 10, 
  9,  17, 25, 18
Enter fullscreen mode Exit fullscreen mode

The highest hourglass sum is 28 from the hourglass beginning at row 1, column 2:

0 4 3
  1
8 6 6
Enter fullscreen mode Exit fullscreen mode

Function Description

Complete the function hourglassSum in the editor below.

hourglassSum has the following parameter(s):

  • int arr[6][6]: an array of integers

Returns

  • int: the maximum hourglass sum

Input Format
Each of the 6 lines of inputs arr[i] contains 6 space-separated integers arr[i][j].

Solution

function hourglassSum(arr) {
    // Write your code here
    let maxSum = ''
    for (let step1 = 0; step1 < arr.length-2; step1++){
        for (let step2 = 0; step2 < arr.length-2; step2++){
            const currentSum = arr[step1][step2] + arr[step1][step2+1] 
         + arr[step1][step2+2] + arr[step1+1][step2+1] 
         + arr[step1+2][step2] + arr[step1+2][step2+1] 
         + arr[step1+2][step2+2]

            if(currentSum <= 0){
               const temp = currentSum
               if (typeof maxSum == 'string' ){
                   maxSum = temp
               } else if(temp == 0 && maxSum <= 0){
                   maxSum = temp
               }
                else if(temp > maxSum){
                   maxSum = temp
               }
            } else if(currentSum > maxSum){
                maxSum = currentSum
            } 
        }
    }
    return maxSum
}
Enter fullscreen mode Exit fullscreen mode

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (1)

Collapse
 
frankwisniewski profile image
Frank Wisniewski
let myArray = ['-9 -9 -9 1 1 1','0 -9 0 4 3 2',
               '-9 -9 -9 1 2 3','0 0 8 6 6 0',
               '0 0 0 -2 0 0','0 0 1 2 4 0']
function hourGlassSum (arr, sum=0){
  let hourGlass= function(myArray, y,x, myHour=[], mySum=0){    
    myHour.push([y,x],[y,x+1],[y,x+2],[y+1,x+1],[y+2,x],[y+2,x+1],[y+2,x+2])
    myHour.forEach(function (el){
      (el[0] in myArray && el[1] in myArray[el[0]])?
      mySum+=+myArray[el[0]][el[1]]: mySum=0;})
    return mySum
  }  
  arr.forEach((el,i)=>arr[i]=(el.split(' ')));    
  arr.forEach((el,i) =>
    arr[i].forEach( (el,k) =>
      sum=sum+hourGlass(arr,i,k)))
  return sum;
}
console.log(hourGlassSum(myArray))
Enter fullscreen mode Exit fullscreen mode

AWS Q Developer image

Your AI Code Assistant

Generate and update README files, create data-flow diagrams, and keep your project fully documented. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE