# HackerRank 2D Array - DS problem solution

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.

## 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);
});```