Resolves Java 2D Array Task

This commit is contained in:
Piotr Dec 2022-10-24 00:18:52 +02:00
parent 540a63dbc2
commit 3da2a03859
3 changed files with 152 additions and 0 deletions

View file

@ -0,0 +1,55 @@
package eu.ztsh.training.hackerrank.datastructures.array_2d;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
/**
* Java 2D Array task.
* source: https://www.hackerrank.com/challenges/java-2d-array/problem
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
List<List<Integer>> arr = new ArrayList<>();
IntStream.range(0, 6).forEach(i -> {
try {
arr.add(
Stream.of(bufferedReader.readLine().replaceAll("\\s+$", "").split(" "))
.map(Integer::parseInt)
.collect(Collectors.toList())
);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
});
var array = arr.stream().map(l -> l.stream().mapToInt(i -> i).toArray()).toArray(int[][]::new);
var max = new AtomicInteger(Integer.MIN_VALUE);
IntStream.range(1, 5).forEach(row -> IntStream.range(1, 5).forEach(col -> {
var result = countHourglass(array, row, col);
if (result > max.get()) {
max.set(result);
}
}));
System.out.println(max.get());
bufferedReader.close();
}
private static int countHourglass(int[][] array, int row, int col) {
return array[row - 1][col - 1] + array[row - 1][col] + array[row - 1][col + 1] +
array[row][col] +
array[row + 1][col - 1] + array[row + 1][col] + array[row + 1][col + 1];
}
}

View file

@ -1,5 +1,8 @@
package eu.ztsh.training.hackerrank; package eu.ztsh.training.hackerrank;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List; import java.util.List;
import java.util.Scanner; import java.util.Scanner;
import eu.ztsh.training.hackerrank.SolutionClassDescription.FieldModifier; import eu.ztsh.training.hackerrank.SolutionClassDescription.FieldModifier;
@ -86,6 +89,17 @@ public class EnvironmentTest {
} }
@Nested
@DisplayName("Test with BufferedReader created in main(String[]) method")
class EnvironmentReaderTest extends HackerRankEnvironmentTest {
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(SampleSolutionWithInlineBufferedReader.class);
}
}
} }
class SampleSolutionWithPrivateStaticScanner { class SampleSolutionWithPrivateStaticScanner {
@ -123,3 +137,16 @@ class SampleSolutionWithInlineScanner {
} }
} }
class SampleSolutionWithInlineBufferedReader {
public static void main(String... args) throws IOException {
var bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String line = bufferedReader.readLine();
do {
System.out.println(line);
line = bufferedReader.readLine();
} while (line != null);
}
}

View file

@ -0,0 +1,70 @@
package eu.ztsh.training.hackerrank.datastructures.array_2d;
import java.util.List;
import eu.ztsh.training.hackerrank.HackerRankTest;
import eu.ztsh.training.hackerrank.SolutionClassDescription;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
@DisplayName("HackerRank challenges: Java 2D Array")
class SolutionTest extends HackerRankTest {
@Test
public void dummyInitTest() {
assertThat(true).isTrue();
}
@Test
public void testCase0() {
simpleAssert(
List.of(
"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"
),
List.of("19")
);
}
@Test
public void testCase1() {
simpleAssert(
List.of(
"1 1 1 0 0 0",
"0 1 0 0 0 0",
"1 1 1 0 0 0",
"0 9 2 -4 -4 0",
"0 0 0 -2 0 0",
"0 0 -1 -2 -4 0"
),
List.of("13")
);
}
@Test
public void testCase3() {
simpleAssert(
List.of(
"-1 -1 0 -9 -2 -2",
"-2 -1 -6 -8 -2 -5",
"-1 -1 -1 -2 -3 -4",
"-1 -9 -2 -4 -4 -5",
"-7 -3 -3 -2 -9 -9",
"-1 -3 -1 -2 -4 -5"
),
List.of("-6")
);
}
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Solution.class);
}
}