Sunday, 22 January 2017

2D array programming challenge solved

Given a  2D Array:
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
We define an hourglass in  to be a subset of values with indices falling in this pattern in 's graphical representation:
a b c
  d
e f g
There are  hourglasses in , and an hourglass sum is the sum of an hourglass' values.
Task 
Calculate the hourglass sum for every hourglass in , then print the maximum hourglass sum.
Note: If you have already solved the Java domain's Java 2D Array challenge, you may wish to skip this challenge.
Input Format
There are  lines of input, where each line contains  space-separated integers describing 2D Array ; every value in  will be in the inclusive range of  to .
Constraints
Output Format
Print the largest (maximum) hourglass sum found in .
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
 contains the following hourglasses:
1 1 1   1 1 0   1 0 0   0 0 0
  1       0       0       0
1 1 1   1 1 0   1 0 0   0 0 0

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

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

0 0 2   0 2 4   2 4 4   4 4 0
  0       0       2       0
0 0 1   0 1 2   1 2 4   2 4 0
The hourglass with the maximum sum () is:
2 4 4
  2
1 2 4
Code :- 
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int arr[][] = new int[6][6];
        SortedSet<Integer> values = new TreeSet<Integer>();
        for(int arr_i=0; arr_i < 6; arr_i++){
            for(int arr_j=0; arr_j < 6; arr_j++){
                arr[arr_i][arr_j] = in.nextInt();
            }
        }
        
        int start=0,startInner = 0,end=2,endInner = 2 ;      
       for(int i=0;i<(arr.length-2);i++){
        while(true){     
        int sum=0 ,count= 0;
         for(int arr_i=start; arr_i <=end; arr_i++){
            int innerCount=0;
            for(int arr_j=startInner; arr_j <=endInner; arr_j++){               
                if(count == 1){
                    if(innerCount ==1){
                       sum = sum + arr[arr_i][arr_j];  
                    }
                } else{
                      sum = sum + arr[arr_i][arr_j];   
                 }
                innerCount=innerCount+1;
            }
             count=count+1;
          }
        values.add(sum);
        startInner = startInner +1;
        endInner = endInner +1;
           if(endInner>5){
              break;
              }  
          }
            start=start+1;
            end = end+ 1;
           startInner =0;
           endInner = 2;
            if(end>5){
              break;
              } 
        }
System.out.println(values.last());
    }
}

No comments:

Post a Comment

Custom single threaded java server

 package com.diffengine.csv; import java.io.*; import java.net.*; import java.util.Date; public class Server { public static void main(Str...