In this HackerRank 2D Array - DS interview preparation kit problem you have to Calculate the hourglass sum for every hourglass arr, then print the maximum hourglass sum. The array will always be 6 x 6.


HackerRank 2D Array - DS Interview preparation kit solution


Problem solution in Python programming.

#!/bin/python3

import math
import os
import random
import re
import sys

# Complete the hourglassSum function below.
def hourglassSum(arr):
    maxSum = -63
    
    for i in range(4):
        for j in range(4):
        
            # sum of top 3 elements
            top = sum(arr[i][j:j+3])
            
            # sum of the mid element
            mid = arr[i+1][j+1]
            
            # sum of bottom 3 elements
            bottom = sum(arr[i+2][j:j+3])
            
            hourglass = top + mid + bottom
            
            if hourglass > maxSum:
                maxSum = hourglass
                
    return maxSum

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    arr = []

    for _ in range(6):
        arr.append(list(map(int, input().rstrip().split())))

    result = hourglassSum(arr)

    fptr.write(str(result) + '\n')

    fptr.close()


Problem solution in Java Programming.

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        Scanner sc = new Scanner(System.in);
        int[][] array = new int[6][6];
        for (int y = 0; y < 6; y++){
            for (int x =0; x<6; x++){
                array[x][y] = sc.nextInt();
            }
        }
        int maxHourglass = getHourglass(array, 1,1);
        for (int y=1; y<5; y++){
            for (int x=1; x<5; x++){
                int hourres = getHourglass(array, x, y);
                if (hourres > maxHourglass){
                    maxHourglass = hourres;
                }
            }
        }
        System.out.println(maxHourglass);
    }
    
    public static int getHourglass(int[][] array, int x, int y) {
        return array[x][y] + array[x-1][y-1] + array[x][y-1] + array[x+1][y-1] + array[x-1][y+1]
            + array[x][y+1] + array[x+1][y+1];
    }
}


Problem solution in C++ programming.

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */   
    int arr[6][6];
    int row, col;
    int sum;
    int best_sum;
    int first_flag=1;
    for(row=0; row<6; row++){
        for(col=0; col<6; col++){
            cin >> arr[row][col];
        }
    }
    for(row=0; row<=3; row++){
        for(col=0; col<=3; col++){
            sum = arr[row][col] + arr[row][col+1] + arr[row][col+2] + arr[row+1][col+1] + arr[row+2][col] + arr[row+2][col+1] + arr[row+2][col+2];
            if(first_flag==1){
                first_flag=0;
                best_sum=sum;
            }
            else if(sum>best_sum)
                best_sum=sum;
        }
    }
    cout << best_sum;
    return 0;
}


Problem solution in C programming.

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int a[6][6];
int main() {
int i,j,sum;
    int max=-999999;
    for(i=0;i<6;i++)
        for(j=0;j<6;j++)
        scanf("%d",&a[i][j]);
        for(i=0;i<4;i++)
        for(j=0;j<4;j++){
        sum=a[i][j]+a[i][j+1]+a[i][j+2]+a[i+1][j+1]+a[i+2][j]+a[i+2][j+1]+a[i+2][j+2];
        if(sum>max)
            max=sum;
    }
    printf("%d",max);
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */    
    return 0;
}


Problem solution in JavaScript programming.

function getSum(arr, row, col) {
    var i=0, j=0, sum=0;
        
    for (i=0; i<3; i++) {
        for (j=0; j<3; j++) {
            if ((i===1 && j===0) || (i===1 && j===2)) {
                sum += 0;
            } else {
                sum += arr[row+i][col+j];            
            }
        }
    }

    return sum;
}

function processData(input) {
    var input_arr = input.trim().split('\n');
    var max = -9999;
    
//    console.log(input_arr);
    
    // Make a two dimensional array
    for( var i=0; i<input_arr.length; i++) {
        input_arr[i] = input_arr[i].split(' ').map(function(n){
            return parseInt(n);
        })
    }
    
//    console.log(input_arr);
        
    for (var i=0; i<4; i++) {
        var temp = 0;
        for (var j=0; j<4; j++) {
            temp = getSum(input_arr, i, j);
//            console.log(max, temp);
            if (max <= temp) 
                max = temp;
        }
    }

    console.log(max);
} 

process.stdin.resume();
process.stdin.setEncoding("ascii");
_input = "";
process.stdin.on("data", function (input) {
    _input += input;
});

process.stdin.on("end", function () {
   processData(_input);
});