# 2D Array DS Hackerrank solution in Python

HackerRank has a coding Problem “2D Array DS Hackerrank solution in Python”. Today We are going to solve this problem. HackerRank Link of the Problem is HERE

#### Question

Given a 6×6 2D 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
``````

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
``````

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×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
``````

The  16 hourglass sums are:

``````-63, -34, -9, 12,
-10,   0, 28, 23,
-27, -11, -2, 10,
9,  17, 25, 18
``````

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

``````0 4 3
1
8 6 6``````

Function Description

Complete the function hourglassSum in the editor below.

hourglassSum has the following parameter(s):

• int arr: 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].

Constraints

• -9 <= arr[i][j] <= 9
• 0 <= i,j <= 5

Output Format

Print the largest (maximum) hourglass sum found in arr.

Sample Input

``````1 1 1 0 0 0
0 1 0 0 0 0
1 1 1 0 0 0
0 0 2 4 4 0
0 0 0 2 0 0
0 0 1 2 4 0
``````

Sample Output

``````19
``````

Explanation

arr contains the following hourglasses:

The hourglass with the maximum sum (19) is:

``````2 4 4
2
1 2 4``````

#### Solution to 2D array DS Hackerrank solution in Python

The Skeleton Code given by HackerRank is:

``````#!/bin/python3

import math
import os
import random
import re
import sys

#
# Complete the 'hourglassSum' function below.
#
# The function is expected to return an INTEGER.
# The function accepts 2D_INTEGER_ARRAY arr as parameter.
#
# Fixing the size of the Matrix.
# Here it is of order 6 x 6
def hourglassSum(arr):

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()
``````

Complete Solution:

``````#!/bin/python3

import math
import os
import random
import re
import sys

#
# Complete the 'hourglassSum' function below.
#
# The function is expected to return an INTEGER.
# The function accepts 2D_INTEGER_ARRAY arr as parameter.
#
# Fixing the size of the Matrix.
# Here it is of order 6 x 6
R = 6
C = 6
def hourglassSum(arr):
# Considering the matrix also contains
max_sum = -50000

# Negative values , so initialized with
# -50000. It can be any value but very
# smaller.
# max_sum=0 -> Initialize with 0 only if your
# matrix elements are positive

if(R < 3 or C < 3):
return -1

# Here loop runs (R-2)*(C-2) times considering
# different top left cells of hour glasses.
for i in range(0, R-2):
for j in range(0, C-2):

# Considering arr[i][j] as top
# left cell of hour glass.
SUM = (arr[i][j] + arr[i][j + 1] + arr[i][j + 2]) + (arr[i + 1][j + 1]) +(arr[i + 2][j] + arr[i + 2][j + 1] + arr[i + 2][j + 2])

# If previous sum is less
# then current sum then
# update new sum in max_sum
if(SUM > max_sum):
max_sum = SUM
else:
continue

return max_sum

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()
``````